From 39f63c38738cd40b142458708dee9bfbf8d1db1a Mon Sep 17 00:00:00 2001
From: liangjin <liangjin@finlean.com>
Date: Mon, 22 Mar 2021 17:48:27 +0800
Subject: [PATCH] 和微分项目

---
 src/views/zfblx/lxOrder.vue                            |  526 
 src/views/mdyh/bdjc/bdCourse.vue                       |  290 
 src/views/old/merchant/xyg/merOpen.vue                 |  413 
 static/img/2.png                                       |    0 
 src/assets/imgs/myHeader.png                           |    0 
 src/views/old/store/channel-selection_sh.vue           |  250 
 src/views/mine/account/account-add.vue                 |  199 
 static/img/ddxtlogo.png                                |    0 
 src/assets/img/bg_top.png                              |    0 
 static/img/img_agree.png                               |    0 
 src/api/oldapi.js                                      |  478 
 src/views/old/store/choose-payment-method.vue          |  152 
 src/views/product/wxScore-detail.vue                   |  214 
 src/utils/dateformat.js                                |  282 
 src/views/mine/redEnvelopes/withdrawals.vue            |  404 
 src/assets/imgs/nodata.png                             |    0 
 src/components/old/upload/uploadImgStore.vue           |  311 
 src/views/old/merchant/gzzj/mgrBaseInfo.vue            |   79 
 src/views/old/merchant/heyd/storeBaseMgrInfo.vue       |   87 
 src/assets/zfblx/bg.png                                |    0 
 src/components/old/FUpLoad.vue                         |  155 
 src/assets/img/img_upload.png                          |    0 
 src/views/old/store/getHBQRCode.vue                    |  273 
 src/views/old/store/zxh/createcode.vue                 |  258 
 src/assets/img/gjzj.png                                |    0 
 src/style/normalize.less                               |  219 
 src/views/relatedPictures.vue                          |  174 
 src/views/old/store/getXygHbQRCode.vue                 |  248 
 src/views/user/loginByWx.vue                           |  255 
 src/views/old/store/xyg/createcode.vue                 |  420 
 src/views/old/merchant/huabei/storePictures.vue        |  278 
 src/views/old/store/shsk/payResult.vue                 |  144 
 src/views/old/facepay/code.vue                         |  135 
 src/assets/zfblx/code1.png                             |    0 
 src/views/old/merchant/xyg/merPictures.vue             |   55 
 static/agreement1.js                                   |    3 
 src/components/vant_register.js                        |   90 
 src/views/old/merchant/gjzj/openResult.vue             |  100 
 src/views/user/login.vue                               |  246 
 src/views/mine/channel/channel.vue                     |  153 
 src/components/vux_register.js                         |  345 
 src/views/old/store/xyg/upload.vue                     |  498 
 src/views/template/list.vue                            |  141 
 static/img/logo.png                                    |    0 
 src/utils/console.js                                   |   19 
 src/views/zfblx/lxOrderDetail.vue                      |  189 
 src/views/order/hb.vue                                 |  334 
 src/views/old/store/shsk/shsk.vue                      |  231 
 src/assets/img/1.png                                   |    0 
 src/components/old/FFilter.vue                         |  464 
 src/views/main/index.vue                               |   90 
 package-lock.json                                      | 11667 +++++++++
 src/views/product/zxh-detail.vue                       |  129 
 src/views/appLiandeng/login.vue                        |    7 
 src/views/mdyh/shtx/mer-date.vue                       |  463 
 src/views/product/dmf-code.vue                         |  139 
 src/components/common/v-order-item.vue                 |  143 
 src/components/common/v-scroll-x.vue                   |   32 
 src/views/mine/setting/setting.vue                     |  109 
 src/views/appLiandeng/opening/fillingInfo.vue          |    7 
 src/assets/zfblx/code.png                              |    0 
 src/components/common/h-list.vue                       |   73 
 src/assets/img/xykdh.png                               |    0 
 src/store/module/test.js                               |   11 
 src/views/zfblx/lxCode.vue                             |  127 
 src/views/mine/channel/channel-detail.vue              |   74 
 src/views/order/hbjl.vue                               |  322 
 src/assets/img/shsk.png                                |    0 
 src/api/index.js                                       |  577 
 src/assets/imgs/logo.png                               |    0 
 src/assets/zfblx/4.png                                 |    0 
 src/components/common/v-dialog.vue                     |   59 
 src/views/product/shtx-detail.vue                      |  363 
 src/utils/date.js                                      |   73 
 src/components/common/h-login-box.vue                  |   62 
 public/index.html                                      |  140 
 src/assets/imgs/openpic.png                            |    0 
 src/utils/createUserProtocol.js                        |   27 
 webpack.dev.js                                         |   63 
 src/style/mixins.less                                  |  139 
 src/assets/img/spfx.png                                |    0 
 src/components/common/v-filter.vue                     |  573 
 src/views/product/dmf-detail.vue                       |  351 
 src/views/old/store/xyg/xyg-mation.vue                 |  318 
 static/img/tonglian.png                                |    0 
 babel.config.js                                        |    9 
 src/assets/img/wxfk.png                                |    0 
 src/views/old/store/gzzj/gzzjQrCode.vue                |  198 
 src/views/old/store/hb-contract.vue                    |  264 
 src/views/old/merchant/xyg/merBaseInfo.vue             |  267 
 src/views/mdyh/overdue/overdue.vue                     |  446 
 src/views/old/merchant/xyg/mgrBaseInfo.vue             |   80 
 src/views/old/store/gzzj/set.vue                       |  197 
 src/components/old/FVercode.vue                        |  118 
 src/views/old/store/xyg/message.vue                    |  105 
 src/components/common/v-button-circle.vue              |   59 
 src/assets/img/imgti.png                               |    0 
 static/img/img.png                                     |    0 
 src/components/old/FConfirmSimple.vue                  |  139 
 src/views/appLiandeng/home.vue                         |  208 
 src/views/user/register.vue                            |  186 
 src/views/product/facepay/facepay.vue                  |  221 
 src/views/old/merchant/gzzj/merBaseInfo.vue            |  168 
 src/views/old/merchant/huabei/staging.vue              |  259 
 src/components/old/FButton.vue                         |  113 
 src/views/product/gjzj-detail.vue                      |  118 
 src/views/appLiandeng/changeMer.vue                    |  118 
 src/components/common/v-datacard.vue                   |   80 
 static/img/3.png                                       |    0 
 src/views/old/merchant/huabei/staging_dmf.vue          |  225 
 src/views/old/facepay/orderList.vue                    |  160 
 src/views/old/merchant/shtx/open.vue                   |  140 
 src/views/old/store/contract/contractInstallment.vue   |  178 
 src/views/old/store/wx-pay-score.vue                   |  409 
 src/views/main/product.vue                             |  234 
 src/views/old/merchant/tonglian/staging.vue            |  199 
 src/components/old/FBlock.vue                          |   41 
 src/views/old/facepay/calcmoney.vue                    |  246 
 src/components/old/FNoData.vue                         |   35 
 src/components/old/FToast.vue                          |   83 
 src/components/common/h-ipt.vue                        |  112 
 src/views/appLiandeng/opening/pictureUpload.vue        |    7 
 src/views/old/store/xyg/xygList.vue                    |  557 
 src/views/old/merchant/gjzj/open.vue                   |  359 
 src/assets/img/shsaom.png                              |    0 
 src/text.vue                                           |   27 
 src/components/old/upload/uploadImg.vue                |  375 
 src/views/old/merchant/tonglian/open.vue               |  215 
 src/router/index.js                                    |  128 
 src/views/old/merchant/heyd/storeOpen.vue              |  459 
 src/views/order/xyg.vue                                |  292 
 src/views/product/gzzj-detail.vue                      |  146 
 src/views/old/store/contract/contractQrcode.vue        |  113 
 src/views/order/zxh.vue                                |  292 
 webpack.prod.js                                        |   38 
 src/assets/img/zxsyt.png                               |    0 
 src/components/common/h-staging-detail.vue             |  191 
 src/assets/imgs/business.png                           |    0 
 src/assets/img/idcardf.png                             |    0 
 src/views/old/store/xyg/xygHb.vue                      |  419 
 src/views/old/facepay/README.md                        |    3 
 src/views/mdyh/product/productMent.vue                 |  761 
 src/views/product/lthyj-detail.vue                     |  120 
 static/img/circle-bottom.png                           |    0 
 postcss.config.js                                      |   11 
 src/views/order/phone.vue                              |  345 
 src/assets/img/xygpic.png                              |    0 
 src/utils/filters.js                                   |   31 
 .gitignore                                             |   13 
 src/views/old/merchant/heyd/merOpen.vue                |  413 
 src/views/user/register-home.vue                       |  533 
 src/views/template/distribute.vue                      |  327 
 static/img/hongbao.png                                 |    0 
 src/assets/zfblx/3.png                                 |    0 
 src/views/mdyh/overdue/ovderdueDetail.vue              |  422 
 src/assets/img/2.png                                   |    0 
 src/components/old/FSearch.vue                         |   80 
 src/views/order/gjzj.vue                               |  318 
 src/components/old/FLoad.vue                           |   52 
 static/agreement2.js                                   |    1 
 src/views/old/merchant/heyd/merBaseInfo.vue            |  267 
 src/store/mutations.js                                 |   75 
 src/views/old/merchant/huabei/staging_hbjl.vue         |  213 
 src/views/main/message.vue                             |  121 
 src/views/old/merchant/heyd/merPictures.vue            |   55 
 src/assets/img/shs.png                                 |    0 
 src/assets/zfblx/bg4.png                               |    0 
 src/views/old/store/mobile/mobileInstallment.vue       |  279 
 src/utils/validator.js                                 |  213 
 src/views/old/facepay/orderDetails.vue                 |  175 
 static/img/bg_code.png                                 |    0 
 src/style/vant_reset.less                              |  199 
 src/views/user/forgetpassword.vue                      |  244 
 src/views/mine/stores/stores-add.vue                   |  200 
 src/views/old/store/gzzj/createcode.vue                |  280 
 src/assets/img/zfbfk.png                               |    0 
 src/views/main/approve.vue                             |  323 
 src/views/old/merchant/tonglian/withdrawal.vue         |  408 
 src/assets/img/shtx.png                                |    0 
 src/views/old/merchant/tonglian/verification.vue       |  204 
 src/views/old/store/hb-merchant-installment.vue        |  439 
 static/img/back.png                                    |    0 
 webpack.common.js                                      |  133 
 src/views/old/store/channel-selection.vue              |  206 
 package.json                                           |   68 
 src/utils/agreement2.js                                |    1 
 static/img/ing.png                                     |    0 
 src/views/old/merchant/xyg/storeBaseMgrInfo.vue        |   88 
 src/App.vue                                            |   55 
 src/views/mine/mer/mer-manager.vue                     |  333 
 src/views/mine/account/account.vue                     |  143 
 src/views/product/xyg-hb-detail.vue                    |  336 
 src/views/mine/mer/mer-photo-chose.vue                 |  166 
 src/components/old/FConfirm.vue                        |  132 
 src/utils/jsBridge.js                                  |  265 
 src/views/old/merchant/xyg/storeBaseInfo.vue           |  179 
 static/img/hongbaoxiao.png                             |    0 
 vue.config.js                                          |   15 
 src/views/mdyh/shtx/shtx.vue                           |  750 
 src/views/old/merchant/heyd/openResult.vue             |  168 
 src/views/old/merchant/xyg/storePictures.vue           |  114 
 static/img/circle-top.png                              |    0 
 src/views/old/store/zxh/set.vue                        |  197 
 src/views/old/merchant/gjzj/storePictures.vue          |   71 
 src/views/old/merchant/gzzj/merOpen.vue                |  416 
 src/assets/img/tkimg.png                               |    0 
 src/utils/formCheckAndComb.js                          |  194 
 src/views/old/merchant/productManagement.vue           |  407 
 src/views/order/xyg-hb.vue                             |  323 
 src/views/product/hb-detail.vue                        |  382 
 src/views/old/merchant/huabei/open.vue                 |  178 
 static/agreement4.js                                   |  428 
 static/img/post_agree.png                              |    0 
 src/views/product/xyg-detail.vue                       |  175 
 src/views/order/gzzj.vue                               |  271 
 src/views/old/store/hb-credit-installment.vue          |  714 
 src/views/old/store/gzzj/message.vue                   |  105 
 src/views/order/dmf.vue                                |  337 
 src/views/user/supplement.vue                          |  163 
 src/components/common/v-navbar.vue                     |   96 
 src/views/JSX_Demo.vue                                 |   67 
 static/img/bg-qr-code.png                              |    0 
 src/views/old/merchant/gzzj/storeBaseMgrInfo.vue       |   87 
 src/views/old/merchant/heyd/mgrOpen.vue                |  154 
 src/views/old/store/getShtxQRCode.vue                  |  293 
 src/views/zfblx/lxExplain.vue                          |   34 
 static/img/4.png                                       |    0 
 src/views/product/facepay/orderlist.vue                |  186 
 src/store/index.js                                     |  409 
 src/views/appLiandeng/shskVersionDetail.vue            |   64 
 src/views/old/store/mobile/submitResult.vue            |   98 
 src/views/main/home.vue                                |  919 
 src/views/product/hbhy-detail.vue                      |  393 
 static/img/zxsyt.png                                   |    0 
 src/views/old/store/gzzj/upload.vue                    |  273 
 static/img/left.png                                    |    0 
 src/assets/img/xshsk.png                               |    0 
 static/img/shsaom.png                                  |    0 
 debug.log                                              |   12 
 src/assets/imgs/pic.png                                |    0 
 src/assets/img/xyg.png                                 |    0 
 src/utils/index.js                                     |  361 
 src/components/common/v-cell.vue                       |  138 
 src/views/old/merchant/creditStaging.vue               |   92 
 src/assets/imgs/userImg.png                            |    0 
 src/views/order/shtx.vue                               |  322 
 src/views/appLiandeng/zfbVersionDetail.vue             |  152 
 src/views/old/store/zxh/upload.vue                     |  273 
 src/assets/zfblx/2.png                                 |    0 
 src/views/old/merchant/tonglian/withdrawal-result.vue  |  115 
 static/img/img_reupload.png                            |    0 
 src/components/index.js                                |   40 
 src/views/mine/stores/stores.vue                       |  180 
 static/img/cs.png                                      |    0 
 src/views/old/merchant/tonglian/openResult.vue         |  327 
 src/views/old/merchant/heyd/storePictures.vue          |  114 
 src/utils/pageBackByAndroid.js                         |   36 
 src/views/old/merchant/xyg/storeOpen.vue               |  460 
 src/views/old/store/productManagement.vue              |  296 
 src/assets/img/支付成功.png                                |    0 
 src/components/common/v-gzzj-order-item.vue            |  167 
 src/utils/wechat.js                                    |   30 
 src/views/old/store/hbcp.vue                           |  147 
 src/views/product/facepay/facepay-qrcode.vue           |   72 
 src/assets/img/3.png                                   |    0 
 src/utils/agreement1.js                                |    3 
 src/views/old/README.md                                |    8 
 src/views/old/merchant/tonglian/withdrawal-history.vue |  139 
 src/views/old/store/getShskQRCode.vue                  |  127 
 src/api/config.js                                      |  174 
 src/components/old/FFooter.vue                         |   57 
 src/views/old/store/contract/upload.vue                |  218 
 src/components/common/new-v-order-item.vue             |  151 
 src/views/old/store/hbjl/creat-hbjl.vue                |  191 
 src/views/old/merchant/gjzj/baseInfo.vue               |  183 
 src/assets/zfblx/bg3.png                               |    0 
 src/assets/zfblx/course.png                            |    0 
 src/views/mine/mer/mer-info.vue                        |  182 
 static/agreement3.js                                   |  126 
 static/img/img_refuse.png                              |    0 
 src/components/common/v-wxScore-order-item.vue         |  159 
 src/views/order/order-lthyj.vue                        |  277 
 src/views/product/hbjl-detail.vue                      |  339 
 src/views/old/merchant/heyd/storeBaseInfo.vue          |  179 
 src/views/old/store/bannerContent/bannerContent.vue    |   58 
 src/utils/IDValidator.js                               | 3844 +++
 src/views/user/reset-pwd.vue                           |  142 
 src/components/common/h-staging-detail-dmf.vue         |  188 
 src/views/product/credit-detail.vue                    |  109 
 src/assets/imgs/credit.png                             |    0 
 src/views/old/merchant/huabei/openResult.vue           |  237 
 src/router/routes.js                                   | 1155 
 src/views/old/merchant/gzzj/merPictures.vue            |   55 
 src/assets/img/hbjl.png                                |    0 
 src/views/old/store/credit-installment.vue             |  221 
 src/views/old/merchant/gzzj/storePictures.vue          |  114 
 static/img/1.png                                       |    0 
 src/views/old/merchant/lj/ljcreditStaging.vue          |   81 
 src/store/mutations-types.js                           |   30 
 src/components/old/FPosition.vue                       |  103 
 src/utils/formValidator.js                             |  101 
 src/views/old/merchant/tonglian/startOpen.vue          |  985 
 static/img/bg.png                                      |    0 
 src/views/old/merchant/gzzj/openResult.vue             |  168 
 src/views/old/store/pay-result.vue                     |  154 
 src/components/old/FSpace.vue                          |   41 
 src/views/old/merchant/shtx/staging.vue                |  268 
 src/assets/zfblx/5.png                                 |    0 
 src/assets/img/4.png                                   |    0 
 src/assets/img/xydk.png                                |    0 
 src/style/myVideo.less                                 |    8 
 static/agreement5.js                                   |  283 
 src/views/old/merchant/xyg/mgrOpen.vue                 |  155 
 src/views/old/store/getWxQRCode.vue                    |  267 
 src/assets/img/zxh.png                                 |    0 
 src/views/old/store/lthyjQrcode.vue                    |  105 
 src/assets/zfblx/zfb.png                               |    0 
 src/assets/img/支付中.png                                 |    0 
 src/views/main/mine.vue                                |  236 
 src/views/mine/setting/merchants-approval.vue          |   61 
 static/img/paying.png                                  |    0 
 src/components/old/FTips.vue                           |   28 
 src/utils/deviceInfo.js                                |   88 
 src/views/old/store/business-center.vue                |  758 
 src/views/old/store/lthyj.vue                          |  188 
 src/assets/img/circle-bottom.png                       |    0 
 src/views/old/store/zxh/message.vue                    |  105 
 src/views/mine/stores/stores-detail.vue                |  236 
 src/views/old/store/xyg/set.vue                        |  197 
 src/assets/img/hyfq.png                                |    0 
 src/style/mixin.less                                   |   98 
 src/views/old/store/getQRCode.vue                      |  124 
 src/views/zfblx/lxLogin.vue                            |  192 
 src/assets/img/idcardz.png                             |    0 
 src/views/old/store/wx-score-result.vue                |  154 
 src/assets/imgs/yqpic.png                              |    0 
 src/views/old/store/hbcp_sh.vue                        |  180 
 src/views/mine/channel/channel-add.vue                 |  223 
 src/assets/img/circle-top.png                          |    0 
 src/views/appLiandeng/opening/startOpen.vue            |    7 
 src/views/old/merchant/xyg/openResult.vue              |  168 
 src/style/myVant.less                                  |   12 
 src/views/product/gzzj_order_detail_pics.vue           |   82 
 static/img/img_auditing.png                            |    0 
 static/img/img_frozen.png                              |    0 
 src/assets/img/bg-qr-code.png                          |    0 
 src/assets/zfblx/1.png                                 |    0 
 src/views/old/merchant/heyd/mgrBaseInfo.vue            |   79 
 src/views/order/credit.vue                             |  299 
 src/components/old/upload/uploadImgTl.vue              |  458 
 src/views/old/merchant/hb-product.vue                  |  154 
 src/assets/img/bg_code.png                             |    0 
 src/views/old/merchant/gzzj/storeOpen.vue              |  278 
 src/views/old/merchant/gzzj/mgrOpen.vue                |  147 
 static/img/bg_top.png                                  |    0 
 src/utils/config.js                                    |   29 
 src/index.js                                           |   67 
 src/style/themes.less                                  |   51 
 src/views/user/index.vue                               |   12 
 src/assets/img/超时.png                                  |    0 
 src/assets/img/qqfk.png                                |    0 
 src/views/old/merchant/tonglian/storePictures.vue      |  350 
 static/img/cg.png                                      |    0 
 src/views/mine/toggle-identity.vue                     |  186 
 static/img/share_pic.png                               |    0 
 src/views/old/store/hbhy-installment.vue               |  448 
 static/README.md                                       |    8 
 src/assets/img/pic.png                                 |    0 
 /dev/null                                              |    4 
 src/assets/zfblx/bg2.png                               |    0 
 src/style/common.less                                  |  191 
 src/views/order/wxScore.vue                            |  204 
 src/views/appLiandeng/opening/openResult.vue           |    7 
 src/views/old/merchant/huabei/alipay.vue               |  298 
 src/views/old/store/hbjl/hbjl-qr.vue                   |  117 
 src/views/order/xyg-cx.vue                             |  329 
 src/assets/imgs/img_details.png                        |    0 
 src/views/template/detail.vue                          | 1228 
 src/views/mine/redEnvelopes/red-envelopes.vue          |  430 
 src/assets/img/ysffk.png                               |    0 
 src/views/appLiandeng/choseVersion.vue                 |  147 
 src/views/old/merchant/gzzj/storeBaseInfo.vue          |  176 
 static/img/right.png                                   |    0 
 383 files changed, 75,543 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d3d5eef
--- /dev/null
+++ b/.gitignore
@@ -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
diff --git a/README.md b/README.md
deleted file mode 100644
index 6fa84b8..0000000
--- a/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## scene_wxscore_business
-
-微信支付分
-
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..4ce7753
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,9 @@
+module.exports = {
+    plugins: [
+        ['import', {
+            libraryName: 'vant',
+            libraryDirectory: 'es',
+            style: true
+        }, 'vant']
+    ]
+};
\ No newline at end of file
diff --git a/debug.log b/debug.log
new file mode 100644
index 0000000..4a19538
--- /dev/null
+++ b/debug.log
@@ -0,0 +1,12 @@
+[1008/143351.981:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
+[1009/090254.570:WARNING:minidump_to_upload_parameters.cc(66)] duplicate annotation name metrics_client_id, discarding value 6cdb146c16ce4bfab185288f8bae5c8b
+[1009/090315.609:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
+[1011/110357.879:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
+[1011/135443.332:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
+[1016/133259.641:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
+[1016/144714.941:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
+[1016/161814.067:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
+[1017/091122.502:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
+[1017/103028.328:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
+[1025/160715.460:ERROR:http_transport_win.cc(273)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
+[0428/174357.264:ERROR:http_transport_win.cc(276)] WinHttpSendRequest: �����ɹ���ɡ� (0x0)
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..f9ce6e5
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,11667 @@
+{
+  "name": "scene_staging",
+  "version": "1.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@antv/adjust": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/@antv/adjust/-/adjust-0.1.1.tgz",
+      "integrity": "sha512-9FaMOyBlM4AgoRL0b5o0VhEKAYkexBNUrxV8XmpHU/9NBPJONBOB/NZUlQDqxtLItrt91tCfbAuMQmF529UX2Q==",
+      "requires": {
+        "@antv/util": "~1.3.1"
+      },
+      "dependencies": {
+        "@antv/util": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/@antv/util/-/util-1.3.1.tgz",
+          "integrity": "sha512-cbUta0hIJrKEaW3eKoGarz3Ita+9qUPF2YzTj8A6wds/nNiy20G26ztIWHU+5ThLc13B1n5Ik52LbaCaeg9enA==",
+          "requires": {
+            "@antv/gl-matrix": "^2.7.1"
+          }
+        }
+      }
+    },
+    "@antv/attr": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/@antv/attr/-/attr-0.1.2.tgz",
+      "integrity": "sha512-QXjP+T2I+pJQcwZx1oCA4tipG43vgeCeKcGGKahlcxb71OBAzjJZm1QbF4frKXcnOqRkxVXtCr70X9TRair3Ew==",
+      "requires": {
+        "@antv/util": "~1.3.1"
+      },
+      "dependencies": {
+        "@antv/util": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/@antv/util/-/util-1.3.1.tgz",
+          "integrity": "sha512-cbUta0hIJrKEaW3eKoGarz3Ita+9qUPF2YzTj8A6wds/nNiy20G26ztIWHU+5ThLc13B1n5Ik52LbaCaeg9enA==",
+          "requires": {
+            "@antv/gl-matrix": "^2.7.1"
+          }
+        }
+      }
+    },
+    "@antv/f2": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/@antv/f2/-/f2-3.4.1.tgz",
+      "integrity": "sha512-S23YN1Ns2heROHxLHzXzhWla6LNs2uAL0RlMQHbDripVBZUFZi5TKoT0xZorIKM18DcMnffEJqUDrqLQ5jX91g==",
+      "requires": {
+        "@antv/adjust": "~0.1.1",
+        "@antv/attr": "~0.1.0",
+        "@antv/scale": "~0.1.2",
+        "@antv/util": "~1.2.5",
+        "hammerjs": "^2.0.8"
+      }
+    },
+    "@antv/gl-matrix": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/@antv/gl-matrix/-/gl-matrix-2.7.1.tgz",
+      "integrity": "sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q=="
+    },
+    "@antv/scale": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/@antv/scale/-/scale-0.1.3.tgz",
+      "integrity": "sha512-oknlOg4OUqIh8LygrfQttx+OAnNJm2fQ81si4g8aby1WJJwj/TU1gCr+J3loIpKBtBK4VpP/OzTTqg1Ym67SOQ==",
+      "requires": {
+        "@antv/util": "~1.3.1",
+        "fecha": "~2.3.3"
+      },
+      "dependencies": {
+        "@antv/util": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/@antv/util/-/util-1.3.1.tgz",
+          "integrity": "sha512-cbUta0hIJrKEaW3eKoGarz3Ita+9qUPF2YzTj8A6wds/nNiy20G26ztIWHU+5ThLc13B1n5Ik52LbaCaeg9enA==",
+          "requires": {
+            "@antv/gl-matrix": "^2.7.1"
+          }
+        }
+      }
+    },
+    "@antv/util": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/@antv/util/-/util-1.2.5.tgz",
+      "integrity": "sha512-yz1AjXSEjNu9O5kK9pqKq69f/Iliu/IA3XXljUcfrlbUtmUJ0CH1tB5I60vPqfaKaUPhz+/35K+56yqaCsGmqA==",
+      "requires": {
+        "@antv/gl-matrix": "^2.7.1"
+      }
+    },
+    "@babel/code-frame": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+      "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "^7.0.0"
+      }
+    },
+    "@babel/core": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz",
+      "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.5.5",
+        "@babel/generator": "^7.5.5",
+        "@babel/helpers": "^7.5.5",
+        "@babel/parser": "^7.5.5",
+        "@babel/template": "^7.4.4",
+        "@babel/traverse": "^7.5.5",
+        "@babel/types": "^7.5.5",
+        "convert-source-map": "^1.1.0",
+        "debug": "^4.1.0",
+        "json5": "^2.1.0",
+        "lodash": "^4.17.13",
+        "resolve": "^1.3.2",
+        "semver": "^5.4.1",
+        "source-map": "^0.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "@babel/generator": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz",
+      "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.5.5",
+        "jsesc": "^2.5.1",
+        "lodash": "^4.17.13",
+        "source-map": "^0.5.0",
+        "trim-right": "^1.0.1"
+      }
+    },
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz",
+      "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz",
+      "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-explode-assignable-expression": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-call-delegate": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz",
+      "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.4.4",
+        "@babel/traverse": "^7.4.4",
+        "@babel/types": "^7.4.4"
+      }
+    },
+    "@babel/helper-define-map": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz",
+      "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/types": "^7.5.5",
+        "lodash": "^4.17.13"
+      }
+    },
+    "@babel/helper-explode-assignable-expression": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz",
+      "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
+      "dev": true,
+      "requires": {
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
+      "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-get-function-arity": "^7.0.0",
+        "@babel/template": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
+      "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz",
+      "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.4.4"
+      }
+    },
+    "@babel/helper-member-expression-to-functions": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz",
+      "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.5.5"
+      }
+    },
+    "@babel/helper-module-imports": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz",
+      "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-module-transforms": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz",
+      "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-simple-access": "^7.1.0",
+        "@babel/helper-split-export-declaration": "^7.4.4",
+        "@babel/template": "^7.4.4",
+        "@babel/types": "^7.5.5",
+        "lodash": "^4.17.13"
+      }
+    },
+    "@babel/helper-optimise-call-expression": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz",
+      "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-plugin-utils": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
+      "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
+      "dev": true
+    },
+    "@babel/helper-regex": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz",
+      "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.13"
+      }
+    },
+    "@babel/helper-remap-async-to-generator": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz",
+      "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-wrap-function": "^7.1.0",
+        "@babel/template": "^7.1.0",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-replace-supers": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz",
+      "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-member-expression-to-functions": "^7.5.5",
+        "@babel/helper-optimise-call-expression": "^7.0.0",
+        "@babel/traverse": "^7.5.5",
+        "@babel/types": "^7.5.5"
+      }
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz",
+      "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+      "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.4.4"
+      }
+    },
+    "@babel/helper-wrap-function": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz",
+      "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/template": "^7.1.0",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.2.0"
+      }
+    },
+    "@babel/helpers": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz",
+      "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.4.4",
+        "@babel/traverse": "^7.5.5",
+        "@babel/types": "^7.5.5"
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+      "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.0.0",
+        "esutils": "^2.0.2",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@babel/parser": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz",
+      "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==",
+      "dev": true
+    },
+    "@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz",
+      "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-remap-async-to-generator": "^7.1.0",
+        "@babel/plugin-syntax-async-generators": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-dynamic-import": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz",
+      "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-dynamic-import": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-json-strings": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
+      "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-json-strings": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz",
+      "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
+      "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz",
+      "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.4.4",
+        "regexpu-core": "^4.5.4"
+      }
+    },
+    "@babel/plugin-syntax-async-generators": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz",
+      "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
+      "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-json-strings": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
+      "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz",
+      "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
+      "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
+      "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-arrow-functions": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
+      "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-async-to-generator": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz",
+      "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-remap-async-to-generator": "^7.1.0"
+      }
+    },
+    "@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz",
+      "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-block-scoping": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz",
+      "integrity": "sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "lodash": "^4.17.13"
+      }
+    },
+    "@babel/plugin-transform-classes": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz",
+      "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-define-map": "^7.5.5",
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-optimise-call-expression": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-replace-supers": "^7.5.5",
+        "@babel/helper-split-export-declaration": "^7.4.4",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/plugin-transform-computed-properties": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz",
+      "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-destructuring": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz",
+      "integrity": "sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-dotall-regex": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz",
+      "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.4.4",
+        "regexpu-core": "^4.5.4"
+      }
+    },
+    "@babel/plugin-transform-duplicate-keys": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz",
+      "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz",
+      "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-for-of": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz",
+      "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-function-name": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz",
+      "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-literals": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz",
+      "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-member-expression-literals": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz",
+      "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-modules-amd": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz",
+      "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
+      }
+    },
+    "@babel/plugin-transform-modules-commonjs": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz",
+      "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.4.4",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-simple-access": "^7.1.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
+      }
+    },
+    "@babel/plugin-transform-modules-systemjs": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz",
+      "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.4.4",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
+      }
+    },
+    "@babel/plugin-transform-modules-umd": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz",
+      "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.4.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz",
+      "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==",
+      "dev": true,
+      "requires": {
+        "regexp-tree": "^0.1.6"
+      }
+    },
+    "@babel/plugin-transform-new-target": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz",
+      "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-object-super": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz",
+      "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-replace-supers": "^7.5.5"
+      }
+    },
+    "@babel/plugin-transform-parameters": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz",
+      "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-call-delegate": "^7.4.4",
+        "@babel/helper-get-function-arity": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-property-literals": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz",
+      "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-regenerator": {
+      "version": "7.4.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz",
+      "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==",
+      "dev": true,
+      "requires": {
+        "regenerator-transform": "^0.14.0"
+      }
+    },
+    "@babel/plugin-transform-reserved-words": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz",
+      "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-shorthand-properties": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
+      "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-spread": {
+      "version": "7.2.2",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz",
+      "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-sticky-regex": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz",
+      "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-template-literals": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz",
+      "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-typeof-symbol": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz",
+      "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-unicode-regex": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz",
+      "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.4.4",
+        "regexpu-core": "^4.5.4"
+      }
+    },
+    "@babel/preset-env": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.5.tgz",
+      "integrity": "sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
+        "@babel/plugin-proposal-dynamic-import": "^7.5.0",
+        "@babel/plugin-proposal-json-strings": "^7.2.0",
+        "@babel/plugin-proposal-object-rest-spread": "^7.5.5",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-syntax-async-generators": "^7.2.0",
+        "@babel/plugin-syntax-dynamic-import": "^7.2.0",
+        "@babel/plugin-syntax-json-strings": "^7.2.0",
+        "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
+        "@babel/plugin-transform-arrow-functions": "^7.2.0",
+        "@babel/plugin-transform-async-to-generator": "^7.5.0",
+        "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
+        "@babel/plugin-transform-block-scoping": "^7.5.5",
+        "@babel/plugin-transform-classes": "^7.5.5",
+        "@babel/plugin-transform-computed-properties": "^7.2.0",
+        "@babel/plugin-transform-destructuring": "^7.5.0",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/plugin-transform-duplicate-keys": "^7.5.0",
+        "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
+        "@babel/plugin-transform-for-of": "^7.4.4",
+        "@babel/plugin-transform-function-name": "^7.4.4",
+        "@babel/plugin-transform-literals": "^7.2.0",
+        "@babel/plugin-transform-member-expression-literals": "^7.2.0",
+        "@babel/plugin-transform-modules-amd": "^7.5.0",
+        "@babel/plugin-transform-modules-commonjs": "^7.5.0",
+        "@babel/plugin-transform-modules-systemjs": "^7.5.0",
+        "@babel/plugin-transform-modules-umd": "^7.2.0",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5",
+        "@babel/plugin-transform-new-target": "^7.4.4",
+        "@babel/plugin-transform-object-super": "^7.5.5",
+        "@babel/plugin-transform-parameters": "^7.4.4",
+        "@babel/plugin-transform-property-literals": "^7.2.0",
+        "@babel/plugin-transform-regenerator": "^7.4.5",
+        "@babel/plugin-transform-reserved-words": "^7.2.0",
+        "@babel/plugin-transform-shorthand-properties": "^7.2.0",
+        "@babel/plugin-transform-spread": "^7.2.0",
+        "@babel/plugin-transform-sticky-regex": "^7.2.0",
+        "@babel/plugin-transform-template-literals": "^7.4.4",
+        "@babel/plugin-transform-typeof-symbol": "^7.2.0",
+        "@babel/plugin-transform-unicode-regex": "^7.4.4",
+        "@babel/types": "^7.5.5",
+        "browserslist": "^4.6.0",
+        "core-js-compat": "^3.1.1",
+        "invariant": "^2.2.2",
+        "js-levenshtein": "^1.1.3",
+        "semver": "^5.5.0"
+      }
+    },
+    "@babel/runtime": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz",
+      "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==",
+      "requires": {
+        "regenerator-runtime": "^0.13.2"
+      }
+    },
+    "@babel/template": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
+      "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.4.4",
+        "@babel/types": "^7.4.4"
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz",
+      "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.5.5",
+        "@babel/generator": "^7.5.5",
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-split-export-declaration": "^7.4.4",
+        "@babel/parser": "^7.5.5",
+        "@babel/types": "^7.5.5",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0",
+        "lodash": "^4.17.13"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "@babel/types": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
+      "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
+      "dev": true,
+      "requires": {
+        "esutils": "^2.0.2",
+        "lodash": "^4.17.13",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@types/events": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
+      "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
+      "dev": true
+    },
+    "@types/glob": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
+      "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
+      "dev": true,
+      "requires": {
+        "@types/events": "*",
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/minimatch": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+      "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+      "dev": true
+    },
+    "@types/node": {
+      "version": "12.7.2",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.2.tgz",
+      "integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==",
+      "dev": true
+    },
+    "@types/q": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz",
+      "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==",
+      "dev": true
+    },
+    "@vant/icons": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@vant/icons/-/icons-1.2.1.tgz",
+      "integrity": "sha512-5ivsKQR4ySbdBW5UPoQDVqO6rdc1um3rvq/0VL+ZSA7Y3MdBQ3E4/NL0hoAY5/sZZeYfIDKEP21gpjUzdeEDQQ=="
+    },
+    "@vue/babel-helper-vue-jsx-merge-props": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz",
+      "integrity": "sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw=="
+    },
+    "@vue/babel-plugin-transform-vue-jsx": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.0.0.tgz",
+      "integrity": "sha512-U+JNwVQSmaLKjO3lzCUC3cNXxprgezV1N+jOdqbP4xWNaqtWUCJnkjTVcgECM18A/AinDKPcUUeoyhU7yxUxXQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "html-tags": "^2.0.0",
+        "lodash.kebabcase": "^4.1.1",
+        "svg-tags": "^1.0.0"
+      }
+    },
+    "@vue/babel-preset-jsx": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.0.tgz",
+      "integrity": "sha512-EeZ9gwEmu79B4A6LMLAw5cPCVYIcbKWgJgJafWtLzh1S+SgERUmTkVQ9Vx4k8zYBiCuxHK3XziZ3VJIMau7THA==",
+      "dev": true,
+      "requires": {
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.0.0",
+        "@vue/babel-sugar-functional-vue": "^1.0.0",
+        "@vue/babel-sugar-inject-h": "^1.0.0",
+        "@vue/babel-sugar-v-model": "^1.0.0",
+        "@vue/babel-sugar-v-on": "^1.1.0"
+      }
+    },
+    "@vue/babel-sugar-functional-vue": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.0.0.tgz",
+      "integrity": "sha512-XE/jNaaorTuhWayCz+QClk5AB9OV5HzrwbzEC6sIUY0J60A28ONQKeTwxfidW42egOkqNH/UU6eE3KLfmiDj0Q==",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-inject-h": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.0.0.tgz",
+      "integrity": "sha512-NxWU+DqtbZgfGvd25GPoFMj+rvyQ8ZA1pHj8vIeqRij+vx3sXoKkObjA9ulZunvWw5F6uG9xYy4ytpxab/X+Hg==",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-v-model": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.0.0.tgz",
+      "integrity": "sha512-Pfg2Al0io66P1eO6zUbRIgpyKCU2qTnumiE0lao/wA/uNdb7Dx5Tfd1W6tO5SsByETPnEs8i8+gawRIXX40rFw==",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.0.0",
+        "camelcase": "^5.0.0",
+        "html-tags": "^2.0.0",
+        "svg-tags": "^1.0.0"
+      }
+    },
+    "@vue/babel-sugar-v-on": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.0.tgz",
+      "integrity": "sha512-8DwAj/RLpmrDP4eZ3erJcKcyuLArLUYagNODTsSQrMdG5zmLJoFFtEjODfYRh/XxM2wXv9Wxe+HAB41FQxxwQA==",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.0.0",
+        "camelcase": "^5.0.0"
+      }
+    },
+    "@vue/component-compiler-utils": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz",
+      "integrity": "sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==",
+      "dev": true,
+      "requires": {
+        "consolidate": "^0.15.1",
+        "hash-sum": "^1.0.2",
+        "lru-cache": "^4.1.2",
+        "merge-source-map": "^1.1.0",
+        "postcss": "^7.0.14",
+        "postcss-selector-parser": "^5.0.0",
+        "prettier": "1.16.3",
+        "source-map": "~0.6.1",
+        "vue-template-es2015-compiler": "^1.9.0"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+          "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+          "dev": true,
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true
+        }
+      }
+    },
+    "@webassemblyjs/ast": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
+      "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/helper-module-context": "1.8.5",
+        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+        "@webassemblyjs/wast-parser": "1.8.5"
+      }
+    },
+    "@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
+      "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-api-error": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
+      "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-buffer": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
+      "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-code-frame": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
+      "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/wast-printer": "1.8.5"
+      }
+    },
+    "@webassemblyjs/helper-fsm": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
+      "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-module-context": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
+      "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.8.5",
+        "mamacro": "^0.0.3"
+      }
+    },
+    "@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
+      "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-wasm-section": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
+      "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.8.5",
+        "@webassemblyjs/helper-buffer": "1.8.5",
+        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+        "@webassemblyjs/wasm-gen": "1.8.5"
+      }
+    },
+    "@webassemblyjs/ieee754": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
+      "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+      "dev": true,
+      "requires": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "@webassemblyjs/leb128": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
+      "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+      "dev": true,
+      "requires": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/utf8": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
+      "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
+      "dev": true
+    },
+    "@webassemblyjs/wasm-edit": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
+      "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.8.5",
+        "@webassemblyjs/helper-buffer": "1.8.5",
+        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+        "@webassemblyjs/helper-wasm-section": "1.8.5",
+        "@webassemblyjs/wasm-gen": "1.8.5",
+        "@webassemblyjs/wasm-opt": "1.8.5",
+        "@webassemblyjs/wasm-parser": "1.8.5",
+        "@webassemblyjs/wast-printer": "1.8.5"
+      }
+    },
+    "@webassemblyjs/wasm-gen": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
+      "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.8.5",
+        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+        "@webassemblyjs/ieee754": "1.8.5",
+        "@webassemblyjs/leb128": "1.8.5",
+        "@webassemblyjs/utf8": "1.8.5"
+      }
+    },
+    "@webassemblyjs/wasm-opt": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
+      "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.8.5",
+        "@webassemblyjs/helper-buffer": "1.8.5",
+        "@webassemblyjs/wasm-gen": "1.8.5",
+        "@webassemblyjs/wasm-parser": "1.8.5"
+      }
+    },
+    "@webassemblyjs/wasm-parser": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
+      "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.8.5",
+        "@webassemblyjs/helper-api-error": "1.8.5",
+        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+        "@webassemblyjs/ieee754": "1.8.5",
+        "@webassemblyjs/leb128": "1.8.5",
+        "@webassemblyjs/utf8": "1.8.5"
+      }
+    },
+    "@webassemblyjs/wast-parser": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
+      "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.8.5",
+        "@webassemblyjs/floating-point-hex-parser": "1.8.5",
+        "@webassemblyjs/helper-api-error": "1.8.5",
+        "@webassemblyjs/helper-code-frame": "1.8.5",
+        "@webassemblyjs/helper-fsm": "1.8.5",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/wast-printer": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
+      "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.8.5",
+        "@webassemblyjs/wast-parser": "1.8.5",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@xtuc/ieee754": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+      "dev": true
+    },
+    "@xtuc/long": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+      "dev": true
+    },
+    "abbrev": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+      "dev": true
+    },
+    "accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+      "dev": true,
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      }
+    },
+    "acorn": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz",
+      "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==",
+      "dev": true
+    },
+    "aes-decrypter": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-1.0.3.tgz",
+      "integrity": "sha1-nAa4pUNaWtCduTP4oBSvzxhMw04=",
+      "requires": {
+        "pkcs7": "^0.2.3"
+      }
+    },
+    "ajv": {
+      "version": "6.10.2",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+      "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+      "dev": true,
+      "requires": {
+        "fast-deep-equal": "^2.0.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "ajv-errors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+      "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+      "dev": true
+    },
+    "ajv-keywords": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
+      "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
+      "dev": true
+    },
+    "alphanum-sort": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+      "dev": true
+    },
+    "ansi-colors": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+      "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
+      "dev": true
+    },
+    "ansi-html": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+      "dev": true
+    },
+    "ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "anymatch": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+      "dev": true,
+      "requires": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      },
+      "dependencies": {
+        "normalize-path": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+          "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+          "dev": true,
+          "requires": {
+            "remove-trailing-separator": "^1.0.1"
+          }
+        }
+      }
+    },
+    "aproba": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+      "dev": true
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "arr-diff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "dev": true
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+      "dev": true
+    },
+    "arr-union": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "dev": true
+    },
+    "array-filter": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz",
+      "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM="
+    },
+    "array-find": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz",
+      "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg="
+    },
+    "array-flatten": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
+      "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
+      "dev": true
+    },
+    "array-map": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI="
+    },
+    "array-shuffle": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/array-shuffle/-/array-shuffle-1.0.1.tgz",
+      "integrity": "sha1-fqSIKjVrS8pfVF4LblLq9tlxVXo="
+    },
+    "array-union": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+      "dev": true,
+      "requires": {
+        "array-uniq": "^1.0.1"
+      }
+    },
+    "array-uniq": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "dev": true
+    },
+    "array-unique": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "dev": true
+    },
+    "asap": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+      "dev": true,
+      "optional": true
+    },
+    "asn1": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "asn1.js": {
+      "version": "4.10.1",
+      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+      "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "assert": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+      "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+          "dev": true
+        },
+        "util": {
+          "version": "0.10.3",
+          "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+          "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+          "dev": true,
+          "requires": {
+            "inherits": "2.0.1"
+          }
+        }
+      }
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "dev": true
+    },
+    "assign-symbols": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+      "dev": true
+    },
+    "async": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+      "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+      "dev": true
+    },
+    "async-each": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+      "dev": true
+    },
+    "async-limiter": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+      "dev": true
+    },
+    "async-validator": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
+      "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
+      "requires": {
+        "babel-runtime": "6.x"
+      }
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true,
+      "optional": true
+    },
+    "atob": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+      "dev": true
+    },
+    "autoprefixer": {
+      "version": "9.6.1",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz",
+      "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.6.3",
+        "caniuse-lite": "^1.0.30000980",
+        "chalk": "^2.4.2",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^7.0.17",
+        "postcss-value-parser": "^4.0.0"
+      }
+    },
+    "autosize": {
+      "version": "3.0.21",
+      "resolved": "https://registry.npmjs.org/autosize/-/autosize-3.0.21.tgz",
+      "integrity": "sha1-8YL0DRd1fZeKE5pMnKQMTA5EhgM="
+    },
+    "aws-sign2": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+      "dev": true,
+      "optional": true
+    },
+    "aws4": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+      "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+      "dev": true,
+      "optional": true
+    },
+    "axios": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz",
+      "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==",
+      "requires": {
+        "follow-redirects": "1.5.10",
+        "is-buffer": "^2.0.2"
+      }
+    },
+    "babel-helper-vue-jsx-merge-props": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+      "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
+    },
+    "babel-loader": {
+      "version": "8.0.6",
+      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz",
+      "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==",
+      "dev": true,
+      "requires": {
+        "find-cache-dir": "^2.0.0",
+        "loader-utils": "^1.0.2",
+        "mkdirp": "^0.5.1",
+        "pify": "^4.0.1"
+      }
+    },
+    "babel-plugin-dynamic-import-node": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+      "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+      "dev": true,
+      "requires": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "babel-plugin-dynamic-import-webpack": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-webpack/-/babel-plugin-dynamic-import-webpack-1.1.0.tgz",
+      "integrity": "sha512-Q/Vxl3zRwC5/DMyg97Ey2UD/f7ApvO+0zXgzwT3G2N7oajGFroqcUEmXZ23QXJsr0Y+DBVNK57saaUnQhCpllA==",
+      "dev": true
+    },
+    "babel-plugin-import": {
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.12.0.tgz",
+      "integrity": "sha512-3Fo7sJ2Hm71y1VJS7eMA/E7J5+roKJmzwia5BxzUQREBs6CRylwtvQq8m39W8nplG4Y7rZwOCndh5MzRTSmHpA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/runtime": "^7.0.0"
+      }
+    },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.11.1",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+        }
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true
+    },
+    "base": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+      "dev": true,
+      "requires": {
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "base64-arraybuffer": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz",
+      "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ=="
+    },
+    "base64-js": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+      "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
+      "dev": true
+    },
+    "batch": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "dev": true
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "big.js": {
+      "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+      "dev": true
+    },
+    "bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
+    "bluebird": {
+      "version": "3.5.5",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
+      "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
+      "dev": true
+    },
+    "blueimp-md5": {
+      "version": "2.11.1",
+      "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.11.1.tgz",
+      "integrity": "sha512-4UiOAmql2XO0Sws07OVzYdCKK0K2Va5g6AVgYXoGhEQiKrdSOefjUCm1frPk6E+xiIOHRqaFg+TUGo7cClKg5g=="
+    },
+    "bn.js": {
+      "version": "4.11.8",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+      "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+      "dev": true
+    },
+    "body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "qs": {
+          "version": "6.7.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+          "dev": true
+        }
+      }
+    },
+    "bonjour": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+      "dev": true,
+      "requires": {
+        "array-flatten": "^2.1.0",
+        "deep-equal": "^1.0.1",
+        "dns-equal": "^1.0.0",
+        "dns-txt": "^2.0.2",
+        "multicast-dns": "^6.0.1",
+        "multicast-dns-service-types": "^1.1.0"
+      }
+    },
+    "boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+      "dev": true
+    },
+    "boom": {
+      "version": "2.10.1",
+      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+      "dev": true,
+      "requires": {
+        "hoek": "2.x.x"
+      }
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+      "dev": true,
+      "requires": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "brorand": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+      "dev": true
+    },
+    "browserify-aes": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+      "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+      "dev": true,
+      "requires": {
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "browserify-cipher": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+      "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+      "dev": true,
+      "requires": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "browserify-des": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+      "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "browserify-rsa": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+      "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "browserify-sign": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.1",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.2",
+        "elliptic": "^6.0.0",
+        "inherits": "^2.0.1",
+        "parse-asn1": "^5.0.0"
+      }
+    },
+    "browserify-zlib": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+      "dev": true,
+      "requires": {
+        "pako": "~1.0.5"
+      }
+    },
+    "browserslist": {
+      "version": "4.6.6",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz",
+      "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==",
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30000984",
+        "electron-to-chromium": "^1.3.191",
+        "node-releases": "^1.1.25"
+      }
+    },
+    "buffer": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+      "dev": true
+    },
+    "buffer-indexof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+      "dev": true
+    },
+    "buffer-xor": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+      "dev": true
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+      "dev": true
+    },
+    "bytes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true
+    },
+    "cacache": {
+      "version": "11.3.3",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz",
+      "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.5",
+        "chownr": "^1.1.1",
+        "figgy-pudding": "^3.5.1",
+        "glob": "^7.1.4",
+        "graceful-fs": "^4.1.15",
+        "lru-cache": "^5.1.1",
+        "mississippi": "^3.0.0",
+        "mkdirp": "^0.5.1",
+        "move-concurrently": "^1.0.1",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^2.6.3",
+        "ssri": "^6.0.1",
+        "unique-filename": "^1.1.1",
+        "y18n": "^4.0.0"
+      }
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+      "dev": true,
+      "requires": {
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
+      }
+    },
+    "caller-callsite": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+      "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+      "dev": true,
+      "requires": {
+        "callsites": "^2.0.0"
+      }
+    },
+    "caller-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+      "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+      "dev": true,
+      "requires": {
+        "caller-callsite": "^2.0.0"
+      }
+    },
+    "callsites": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+      "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+      "dev": true
+    },
+    "camel-case": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+      "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0",
+        "upper-case": "^1.1.1"
+      }
+    },
+    "camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+    },
+    "caniuse-api": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+      "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-lite": "^1.0.0",
+        "lodash.memoize": "^4.1.2",
+        "lodash.uniq": "^4.5.0"
+      }
+    },
+    "caniuse-db": {
+      "version": "1.0.30000990",
+      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000990.tgz",
+      "integrity": "sha512-92QOtfA36W2+PxhE5hNe3hTOSJpmtOs9zuZQUfkKwSiHOpmaus+0rVhSqG6/aAj4w5PujBusIzDksZM81j8tCg==",
+      "dev": true
+    },
+    "caniuse-lite": {
+      "version": "1.0.30000989",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz",
+      "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==",
+      "dev": true
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true,
+      "optional": true
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "chokidar": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz",
+      "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==",
+      "dev": true,
+      "requires": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.1",
+        "braces": "^2.3.2",
+        "fsevents": "^1.2.7",
+        "glob-parent": "^3.1.0",
+        "inherits": "^2.0.3",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "normalize-path": "^3.0.0",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.2.1",
+        "upath": "^1.1.1"
+      }
+    },
+    "chownr": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
+      "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
+      "dev": true
+    },
+    "chrome-trace-event": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
+      "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "cipher-base": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "clap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
+      "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.3"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        }
+      }
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "clean-css": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
+      "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
+      "dev": true,
+      "requires": {
+        "source-map": "~0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "clean-webpack-plugin": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-1.0.1.tgz",
+      "integrity": "sha512-gvwfMsqu3HBgTVvaBa1H3AZKO03CHpr5uP92SPIktP3827EovAitwW+1xoqXyTxCuXnLYpMHG5ytS4AoukHDWA==",
+      "dev": true,
+      "requires": {
+        "rimraf": "^2.6.1"
+      }
+    },
+    "cliui": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+      "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+      "requires": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "clone": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+      "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+      "dev": true
+    },
+    "co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+      "dev": true,
+      "optional": true
+    },
+    "coa": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
+      "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+      "dev": true,
+      "requires": {
+        "@types/q": "^1.5.1",
+        "chalk": "^2.4.1",
+        "q": "^1.1.2"
+      }
+    },
+    "code-point-at": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+      "dev": true
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "dev": true,
+      "requires": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      }
+    },
+    "color": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz",
+      "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.1",
+        "color-string": "^1.5.2"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+    },
+    "color-string": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+      "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
+      "dev": true,
+      "requires": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "colormin": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz",
+      "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
+      "dev": true,
+      "requires": {
+        "color": "^0.11.0",
+        "css-color-names": "0.0.4",
+        "has": "^1.0.1"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+          "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+          "dev": true
+        },
+        "color": {
+          "version": "0.11.4",
+          "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
+          "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
+          "dev": true,
+          "requires": {
+            "clone": "^1.0.2",
+            "color-convert": "^1.3.0",
+            "color-string": "^0.3.0"
+          }
+        },
+        "color-string": {
+          "version": "0.3.0",
+          "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
+          "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
+          "dev": true,
+          "requires": {
+            "color-name": "^1.0.0"
+          }
+        }
+      }
+    },
+    "colors": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+      "dev": true
+    },
+    "combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dev": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "2.17.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+      "dev": true
+    },
+    "commondir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+      "dev": true
+    },
+    "compare-versions": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz",
+      "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==",
+      "dev": true
+    },
+    "component-emitter": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+      "dev": true
+    },
+    "compressible": {
+      "version": "2.0.17",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
+      "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==",
+      "dev": true,
+      "requires": {
+        "mime-db": ">= 1.40.0 < 2"
+      }
+    },
+    "compression": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.16",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.2",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "connect-history-api-fallback": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+      "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
+      "dev": true
+    },
+    "console-browserify": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+      "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+      "dev": true,
+      "requires": {
+        "date-now": "^0.1.4"
+      }
+    },
+    "consolidate": {
+      "version": "0.15.1",
+      "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz",
+      "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.1.1"
+      }
+    },
+    "constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+      "dev": true
+    },
+    "content-disposition": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+      "dev": true
+    },
+    "convert-source-map": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+      "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+      "dev": true
+    },
+    "cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "dev": true
+    },
+    "copy-concurrently": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+      "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1",
+        "fs-write-stream-atomic": "^1.0.8",
+        "iferr": "^0.1.5",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.0"
+      }
+    },
+    "copy-descriptor": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+      "dev": true
+    },
+    "copy-webpack-plugin": {
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.4.tgz",
+      "integrity": "sha512-YBuYGpSzoCHSSDGyHy6VJ7SHojKp6WHT4D7ItcQFNAYx2hrwkMe56e97xfVR0/ovDuMTrMffXUiltvQljtAGeg==",
+      "dev": true,
+      "requires": {
+        "cacache": "^11.3.3",
+        "find-cache-dir": "^2.1.0",
+        "glob-parent": "^3.1.0",
+        "globby": "^7.1.1",
+        "is-glob": "^4.0.1",
+        "loader-utils": "^1.2.3",
+        "minimatch": "^3.0.4",
+        "normalize-path": "^3.0.0",
+        "p-limit": "^2.2.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^1.7.0",
+        "webpack-log": "^2.0.0"
+      }
+    },
+    "core-js": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
+      "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A=="
+    },
+    "core-js-compat": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz",
+      "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.6.6",
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
+      }
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+      "dev": true
+    },
+    "cosmiconfig": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+      "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+      "dev": true,
+      "requires": {
+        "import-fresh": "^2.0.0",
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.13.1",
+        "parse-json": "^4.0.0"
+      }
+    },
+    "countup.js": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-1.9.3.tgz",
+      "integrity": "sha1-zj5QzXFgRB5HjwfaMYle3MDxyd0="
+    },
+    "create-ecdh": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+      "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.0.0"
+      }
+    },
+    "create-hash": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+      "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "create-hmac": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+      "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "cross-spawn": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+      "requires": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "cryptiles": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "boom": "2.x.x"
+      }
+    },
+    "crypto-browserify": {
+      "version": "3.12.0",
+      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+      "dev": true,
+      "requires": {
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
+      }
+    },
+    "css-color-names": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
+      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+      "dev": true
+    },
+    "css-declaration-sorter": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
+      "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.1",
+        "timsort": "^0.3.0"
+      }
+    },
+    "css-line-break": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.1.1.tgz",
+      "integrity": "sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==",
+      "requires": {
+        "base64-arraybuffer": "^0.2.0"
+      }
+    },
+    "css-loader": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz",
+      "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^5.2.0",
+        "icss-utils": "^4.1.0",
+        "loader-utils": "^1.2.3",
+        "normalize-path": "^3.0.0",
+        "postcss": "^7.0.14",
+        "postcss-modules-extract-imports": "^2.0.0",
+        "postcss-modules-local-by-default": "^2.0.6",
+        "postcss-modules-scope": "^2.1.0",
+        "postcss-modules-values": "^2.0.0",
+        "postcss-value-parser": "^3.3.0",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "css-select": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz",
+      "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==",
+      "dev": true,
+      "requires": {
+        "boolbase": "^1.0.0",
+        "css-what": "^2.1.2",
+        "domutils": "^1.7.0",
+        "nth-check": "^1.0.2"
+      }
+    },
+    "css-select-base-adapter": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+      "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
+      "dev": true
+    },
+    "css-tree": {
+      "version": "1.0.0-alpha.33",
+      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.33.tgz",
+      "integrity": "sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==",
+      "dev": true,
+      "requires": {
+        "mdn-data": "2.0.4",
+        "source-map": "^0.5.3"
+      }
+    },
+    "css-unit-converter": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz",
+      "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=",
+      "dev": true
+    },
+    "css-what": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
+      "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
+      "dev": true
+    },
+    "cssesc": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+      "dev": true
+    },
+    "cssnano": {
+      "version": "4.1.10",
+      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
+      "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "cssnano-preset-default": "^4.0.7",
+        "is-resolvable": "^1.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-preset-default": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
+      "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==",
+      "dev": true,
+      "requires": {
+        "css-declaration-sorter": "^4.0.1",
+        "cssnano-util-raw-cache": "^4.0.1",
+        "postcss": "^7.0.0",
+        "postcss-calc": "^7.0.1",
+        "postcss-colormin": "^4.0.3",
+        "postcss-convert-values": "^4.0.1",
+        "postcss-discard-comments": "^4.0.2",
+        "postcss-discard-duplicates": "^4.0.2",
+        "postcss-discard-empty": "^4.0.1",
+        "postcss-discard-overridden": "^4.0.1",
+        "postcss-merge-longhand": "^4.0.11",
+        "postcss-merge-rules": "^4.0.3",
+        "postcss-minify-font-values": "^4.0.2",
+        "postcss-minify-gradients": "^4.0.2",
+        "postcss-minify-params": "^4.0.2",
+        "postcss-minify-selectors": "^4.0.2",
+        "postcss-normalize-charset": "^4.0.1",
+        "postcss-normalize-display-values": "^4.0.2",
+        "postcss-normalize-positions": "^4.0.2",
+        "postcss-normalize-repeat-style": "^4.0.2",
+        "postcss-normalize-string": "^4.0.2",
+        "postcss-normalize-timing-functions": "^4.0.2",
+        "postcss-normalize-unicode": "^4.0.1",
+        "postcss-normalize-url": "^4.0.1",
+        "postcss-normalize-whitespace": "^4.0.2",
+        "postcss-ordered-values": "^4.1.2",
+        "postcss-reduce-initial": "^4.0.3",
+        "postcss-reduce-transforms": "^4.0.2",
+        "postcss-svgo": "^4.0.2",
+        "postcss-unique-selectors": "^4.0.1"
+      }
+    },
+    "cssnano-util-get-arguments": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
+      "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
+      "dev": true
+    },
+    "cssnano-util-get-match": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
+      "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
+      "dev": true
+    },
+    "cssnano-util-raw-cache": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
+      "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-util-same-parent": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
+      "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
+      "dev": true
+    },
+    "csso": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz",
+      "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==",
+      "dev": true,
+      "requires": {
+        "css-tree": "1.0.0-alpha.29"
+      },
+      "dependencies": {
+        "css-tree": {
+          "version": "1.0.0-alpha.29",
+          "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz",
+          "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==",
+          "dev": true,
+          "requires": {
+            "mdn-data": "~1.1.0",
+            "source-map": "^0.5.3"
+          }
+        },
+        "mdn-data": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz",
+          "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==",
+          "dev": true
+        }
+      }
+    },
+    "cyclist": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+      "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+      "dev": true
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "date-now": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+      "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+      "dev": true
+    },
+    "de-indent": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+      "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+      "dev": true
+    },
+    "debug": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+      "requires": {
+        "ms": "2.0.0"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+    },
+    "decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "dev": true
+    },
+    "deep-equal": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
+      "dev": true
+    },
+    "deep-is": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+      "dev": true
+    },
+    "deepmerge": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
+      "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
+    },
+    "default-gateway": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
+      "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+      "dev": true,
+      "requires": {
+        "execa": "^1.0.0",
+        "ip-regex": "^2.1.0"
+      }
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "requires": {
+        "object-keys": "^1.0.12"
+      }
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+      "dev": true,
+      "requires": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "dependencies": {
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "defined": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+      "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+      "dev": true
+    },
+    "del": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
+      "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+      "dev": true,
+      "requires": {
+        "@types/glob": "^7.1.1",
+        "globby": "^6.1.0",
+        "is-path-cwd": "^2.0.0",
+        "is-path-in-cwd": "^2.0.0",
+        "p-map": "^2.0.0",
+        "pify": "^4.0.1",
+        "rimraf": "^2.6.3"
+      },
+      "dependencies": {
+        "globby": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+          "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+          "dev": true,
+          "requires": {
+            "array-union": "^1.0.1",
+            "glob": "^7.0.3",
+            "object-assign": "^4.0.1",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          },
+          "dependencies": {
+            "pify": {
+              "version": "2.3.0",
+              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+              "dev": true
+            }
+          }
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "dev": true
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true
+    },
+    "des.js": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+      "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true
+    },
+    "detect-file": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+      "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+      "dev": true
+    },
+    "detect-node": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
+      "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
+      "dev": true
+    },
+    "diffie-hellman": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+      "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      }
+    },
+    "dijkstrajs": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz",
+      "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs="
+    },
+    "dir-glob": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
+      "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+      "dev": true,
+      "requires": {
+        "path-type": "^3.0.0"
+      }
+    },
+    "dns-equal": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+      "dev": true
+    },
+    "dns-packet": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
+      "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+      "dev": true,
+      "requires": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "dns-txt": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
+      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+      "dev": true,
+      "requires": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "dom-converter": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+      "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+      "dev": true,
+      "requires": {
+        "utila": "~0.4"
+      }
+    },
+    "dom-serializer": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz",
+      "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^2.0.1",
+        "entities": "^2.0.0"
+      },
+      "dependencies": {
+        "domelementtype": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
+          "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
+          "dev": true
+        }
+      }
+    },
+    "dom-walk": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
+      "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
+    },
+    "domain-browser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+      "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+      "dev": true
+    },
+    "domelementtype": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+      "dev": true
+    },
+    "domhandler": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+      "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+      "dev": true,
+      "requires": {
+        "domelementtype": "1"
+      }
+    },
+    "domutils": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+      "dev": true,
+      "requires": {
+        "dom-serializer": "0",
+        "domelementtype": "1"
+      }
+    },
+    "dot-prop": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+      "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+      "dev": true,
+      "requires": {
+        "is-obj": "^1.0.0"
+      }
+    },
+    "draftlog": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/draftlog/-/draftlog-1.0.12.tgz",
+      "integrity": "sha1-fbajxbYhBrsy3Uo11nvMy2x9naA=",
+      "dev": true
+    },
+    "duplexify": {
+      "version": "3.7.1",
+      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "ecc-jsbn": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "electron-to-chromium": {
+      "version": "1.3.226",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.226.tgz",
+      "integrity": "sha512-Qnj+JyUodfuzzPbs66CxO5oz1/bOrIhXh/4qh24GMOYzjuUt0sq7mFlhq78dP68CR38NkZ6KOAfhGP6kElU65A==",
+      "dev": true
+    },
+    "element-ui": {
+      "version": "2.13.0",
+      "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.0.tgz",
+      "integrity": "sha512-KYsHWsBXYbLELS8cdfvgJTOMSUby3UEjvsPV1V1VmgJ/DdkOAS4z3MiOrPxrT9w2Cc5lZ4eVSQiGhYFR5NVChw==",
+      "requires": {
+        "async-validator": "~1.8.1",
+        "babel-helper-vue-jsx-merge-props": "^2.0.0",
+        "deepmerge": "^1.2.0",
+        "normalize-wheel": "^1.0.1",
+        "resize-observer-polyfill": "^1.5.0",
+        "throttle-debounce": "^1.0.1"
+      },
+      "dependencies": {
+        "deepmerge": {
+          "version": "1.5.2",
+          "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
+          "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
+        }
+      }
+    },
+    "elliptic": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz",
+      "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.4.0",
+        "brorand": "^1.0.1",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.0"
+      }
+    },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+    },
+    "emojis-list": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+      "dev": true
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true
+    },
+    "end-of-stream": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+      "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "enhanced-resolve": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
+      "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.4.0",
+        "tapable": "^1.0.0"
+      }
+    },
+    "entities": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
+      "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
+      "dev": true
+    },
+    "errno": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+      "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+      "dev": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "es-abstract": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+      "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+      "requires": {
+        "es-to-primitive": "^1.2.0",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "is-callable": "^1.1.4",
+        "is-regex": "^1.0.4",
+        "object-keys": "^1.0.12"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+      "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
+    "es5-shim": {
+      "version": "4.5.13",
+      "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.13.tgz",
+      "integrity": "sha512-xi6hh6gsvDE0MaW4Vp1lgNEBpVcCXRWfPXj5egDvtgLz4L9MEvNwYEMdJH+JJinWkwa8c3c3o5HduV7dB/e1Hw=="
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true
+    },
+    "escodegen": {
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz",
+      "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==",
+      "dev": true,
+      "requires": {
+        "esprima": "^3.1.3",
+        "estraverse": "^4.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "esprima": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+          "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "eslint-scope": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+      "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true
+    },
+    "esprima-extract-comments": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/esprima-extract-comments/-/esprima-extract-comments-0.2.1.tgz",
+      "integrity": "sha1-kBjY3zf/2V3WFQFajF8Ede10NCM=",
+      "dev": true,
+      "requires": {
+        "esprima": "^2.7.1"
+      },
+      "dependencies": {
+        "esprima": {
+          "version": "2.7.3",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+          "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+          "dev": true
+        }
+      }
+    },
+    "esrecurse": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+      "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^4.1.0"
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true
+    },
+    "etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true
+    },
+    "eventemitter3": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
+      "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
+      "dev": true
+    },
+    "events": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
+      "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==",
+      "dev": true
+    },
+    "eventsource": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz",
+      "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==",
+      "dev": true,
+      "requires": {
+        "original": "^1.0.0"
+      }
+    },
+    "evp_bytestokey": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+      "dev": true,
+      "requires": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "execa": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+      "requires": {
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^4.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      }
+    },
+    "exif-js": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/exif-js/-/exif-js-2.3.0.tgz",
+      "integrity": "sha1-nRCBm/Vx+HOBPnZAJBJVq5zhqBQ="
+    },
+    "expand-brackets": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "expand-tilde": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+      "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+      "dev": true,
+      "requires": {
+        "homedir-polyfill": "^1.0.1"
+      }
+    },
+    "express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "array-flatten": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "qs": {
+          "version": "6.7.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+          "dev": true
+        }
+      }
+    },
+    "extend": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+      "dev": true,
+      "optional": true
+    },
+    "extend-shallow": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "dev": true,
+      "requires": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "extglob": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+      "dev": true,
+      "requires": {
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "extract-comments": {
+      "version": "0.10.1",
+      "resolved": "https://registry.npmjs.org/extract-comments/-/extract-comments-0.10.1.tgz",
+      "integrity": "sha1-i2AxgIovX94c1nv4MXuRggQwRAg=",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "esprima-extract-comments": "^0.2.1",
+        "extend-shallow": "^2.0.1",
+        "parse-code-context": "^0.2.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "extsprintf": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true
+    },
+    "fast-deep-equal": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+      "dev": true
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+      "dev": true
+    },
+    "fastclick": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/fastclick/-/fastclick-1.0.6.tgz",
+      "integrity": "sha1-FhYlsnsaWAZAWTa9qaLBkm0Gvmo="
+    },
+    "faye-websocket": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
+      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+      "dev": true,
+      "requires": {
+        "websocket-driver": ">=0.5.1"
+      }
+    },
+    "fecha": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
+      "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
+    },
+    "figgy-pudding": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
+      "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
+      "dev": true
+    },
+    "file-loader": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz",
+      "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.0.2",
+        "schema-utils": "^1.0.0"
+      }
+    },
+    "file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+      "dev": true,
+      "optional": true
+    },
+    "fill-range": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "find-cache-dir": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+      "dev": true,
+      "requires": {
+        "commondir": "^1.0.1",
+        "make-dir": "^2.0.0",
+        "pkg-dir": "^3.0.0"
+      }
+    },
+    "find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+      "requires": {
+        "locate-path": "^3.0.0"
+      }
+    },
+    "findup-sync": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
+      "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
+      "dev": true,
+      "requires": {
+        "detect-file": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "micromatch": "^3.0.4",
+        "resolve-dir": "^1.0.1"
+      }
+    },
+    "flatten": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
+      "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
+      "dev": true
+    },
+    "flush-write-stream": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+      "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
+      }
+    },
+    "follow-redirects": {
+      "version": "1.5.10",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+      "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+      "requires": {
+        "debug": "=3.1.0"
+      }
+    },
+    "for-each": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+      "requires": {
+        "is-callable": "^1.1.3"
+      }
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "dev": true
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "dev": true,
+      "optional": true
+    },
+    "form-data": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "forwarded": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+      "dev": true
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "dev": true,
+      "requires": {
+        "map-cache": "^0.2.2"
+      }
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true
+    },
+    "from2": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "fsevents": {
+      "version": "1.2.11",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
+      "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "bindings": "^1.5.0",
+        "nan": "^2.12.1",
+        "node-pre-gyp": "*"
+      },
+      "dependencies": {
+        "abbrev": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "ansi-regex": {
+          "version": "2.1.1",
+          "bundled": true,
+          "dev": true
+        },
+        "aproba": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "are-we-there-yet": {
+          "version": "1.1.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "delegates": "^1.0.0",
+            "readable-stream": "^2.0.6"
+          }
+        },
+        "balanced-match": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "brace-expansion": {
+          "version": "1.1.11",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "chownr": {
+          "version": "1.1.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "code-point-at": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "concat-map": {
+          "version": "0.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "console-control-strings": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "core-util-is": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "debug": {
+          "version": "3.2.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "deep-extend": {
+          "version": "0.6.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "delegates": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "detect-libc": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "fs-minipass": {
+          "version": "1.2.7",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "^2.6.0"
+          }
+        },
+        "fs.realpath": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "gauge": {
+          "version": "2.7.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "aproba": "^1.0.3",
+            "console-control-strings": "^1.0.0",
+            "has-unicode": "^2.0.0",
+            "object-assign": "^4.1.0",
+            "signal-exit": "^3.0.0",
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1",
+            "wide-align": "^1.1.0"
+          }
+        },
+        "glob": {
+          "version": "7.1.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "has-unicode": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "iconv-lite": {
+          "version": "0.4.24",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        },
+        "ignore-walk": {
+          "version": "3.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minimatch": "^3.0.4"
+          }
+        },
+        "inflight": {
+          "version": "1.0.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "once": "^1.3.0",
+            "wrappy": "1"
+          }
+        },
+        "inherits": {
+          "version": "2.0.4",
+          "bundled": true,
+          "dev": true
+        },
+        "ini": {
+          "version": "1.3.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "minimist": {
+          "version": "0.0.8",
+          "bundled": true,
+          "dev": true
+        },
+        "minipass": {
+          "version": "2.9.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.0"
+          }
+        },
+        "minizlib": {
+          "version": "1.3.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "^2.9.0"
+          }
+        },
+        "mkdirp": {
+          "version": "0.5.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "minimist": "0.0.8"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "needle": {
+          "version": "2.4.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "debug": "^3.2.6",
+            "iconv-lite": "^0.4.4",
+            "sax": "^1.2.4"
+          }
+        },
+        "node-pre-gyp": {
+          "version": "0.14.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "detect-libc": "^1.0.2",
+            "mkdirp": "^0.5.1",
+            "needle": "^2.2.1",
+            "nopt": "^4.0.1",
+            "npm-packlist": "^1.1.6",
+            "npmlog": "^4.0.2",
+            "rc": "^1.2.7",
+            "rimraf": "^2.6.1",
+            "semver": "^5.3.0",
+            "tar": "^4.4.2"
+          }
+        },
+        "nopt": {
+          "version": "4.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "abbrev": "1",
+            "osenv": "^0.1.4"
+          }
+        },
+        "npm-bundled": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "npm-normalize-package-bin": "^1.0.1"
+          }
+        },
+        "npm-normalize-package-bin": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "npm-packlist": {
+          "version": "1.4.7",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ignore-walk": "^3.0.1",
+            "npm-bundled": "^1.0.1"
+          }
+        },
+        "npmlog": {
+          "version": "4.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "are-we-there-yet": "~1.1.2",
+            "console-control-strings": "~1.1.0",
+            "gauge": "~2.7.3",
+            "set-blocking": "~2.0.0"
+          }
+        },
+        "number-is-nan": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "object-assign": {
+          "version": "4.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "once": {
+          "version": "1.4.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "wrappy": "1"
+          }
+        },
+        "os-homedir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "os-tmpdir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "osenv": {
+          "version": "0.1.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "os-homedir": "^1.0.0",
+            "os-tmpdir": "^1.0.0"
+          }
+        },
+        "path-is-absolute": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "process-nextick-args": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "rc": {
+          "version": "1.2.8",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "deep-extend": "^0.6.0",
+            "ini": "~1.3.0",
+            "minimist": "^1.2.0",
+            "strip-json-comments": "~2.0.1"
+          },
+          "dependencies": {
+            "minimist": {
+              "version": "1.2.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.1.2",
+          "bundled": true,
+          "dev": true
+        },
+        "safer-buffer": {
+          "version": "2.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "sax": {
+          "version": "1.2.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "semver": {
+          "version": "5.7.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "set-blocking": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "signal-exit": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "tar": {
+          "version": "4.4.13",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "chownr": "^1.1.1",
+            "fs-minipass": "^1.2.5",
+            "minipass": "^2.8.6",
+            "minizlib": "^1.2.1",
+            "mkdirp": "^0.5.0",
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.3"
+          }
+        },
+        "util-deprecate": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "wide-align": {
+          "version": "1.1.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "string-width": "^1.0.2 || 2"
+          }
+        },
+        "wrappy": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "yallist": {
+          "version": "3.1.1",
+          "bundled": true,
+          "dev": true
+        }
+      }
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+    },
+    "get-stream": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+      "requires": {
+        "pump": "^3.0.0"
+      }
+    },
+    "get-value": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "dev": true
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.1.4",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+      "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "requires": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        }
+      }
+    },
+    "global": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
+      "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
+      "requires": {
+        "min-document": "^2.19.0",
+        "process": "~0.5.1"
+      },
+      "dependencies": {
+        "process": {
+          "version": "0.5.2",
+          "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
+          "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
+        }
+      }
+    },
+    "global-modules": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+      "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+      "dev": true,
+      "requires": {
+        "global-prefix": "^3.0.0"
+      },
+      "dependencies": {
+        "global-prefix": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+          "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+          "dev": true,
+          "requires": {
+            "ini": "^1.3.5",
+            "kind-of": "^6.0.2",
+            "which": "^1.3.1"
+          }
+        }
+      }
+    },
+    "global-prefix": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+      "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.2",
+        "homedir-polyfill": "^1.0.1",
+        "ini": "^1.3.4",
+        "is-windows": "^1.0.1",
+        "which": "^1.2.14"
+      }
+    },
+    "globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "dev": true
+    },
+    "globby": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
+      "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+      "dev": true,
+      "requires": {
+        "array-union": "^1.0.1",
+        "dir-glob": "^2.0.0",
+        "glob": "^7.1.2",
+        "ignore": "^3.3.5",
+        "pify": "^3.0.0",
+        "slash": "^1.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+      "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
+      "dev": true
+    },
+    "hammerjs": {
+      "version": "2.0.8",
+      "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
+      "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE="
+    },
+    "handle-thing": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
+      "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==",
+      "dev": true
+    },
+    "har-schema": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "dev": true,
+      "optional": true
+    },
+    "har-validator": {
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+      "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "ajv": "^6.5.5",
+        "har-schema": "^2.0.0"
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-ansi": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true
+    },
+    "has-symbols": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+      "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "dev": true,
+      "requires": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
+    "has-values": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "hash-base": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+      "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "hash-sum": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
+      "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
+      "dev": true
+    },
+    "hash.js": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "hawk": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "boom": "2.x.x",
+        "cryptiles": "2.x.x",
+        "hoek": "2.x.x",
+        "sntp": "1.x.x"
+      }
+    },
+    "he": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+      "dev": true
+    },
+    "hex-color-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
+      "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
+      "dev": true
+    },
+    "hmac-drbg": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+      "dev": true,
+      "requires": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "hoek": {
+      "version": "2.16.3",
+      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+      "dev": true
+    },
+    "homedir-polyfill": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+      "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+      "dev": true,
+      "requires": {
+        "parse-passwd": "^1.0.0"
+      }
+    },
+    "hpack.js": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
+      }
+    },
+    "hsl-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
+      "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
+      "dev": true
+    },
+    "hsla-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
+      "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
+      "dev": true
+    },
+    "html-comment-regex": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
+      "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
+      "dev": true
+    },
+    "html-entities": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+      "dev": true
+    },
+    "html-minifier": {
+      "version": "3.5.21",
+      "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
+      "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
+      "dev": true,
+      "requires": {
+        "camel-case": "3.0.x",
+        "clean-css": "4.2.x",
+        "commander": "2.17.x",
+        "he": "1.2.x",
+        "param-case": "2.1.x",
+        "relateurl": "0.2.x",
+        "uglify-js": "3.4.x"
+      }
+    },
+    "html-tags": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz",
+      "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=",
+      "dev": true
+    },
+    "html-webpack-plugin": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
+      "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+      "dev": true,
+      "requires": {
+        "html-minifier": "^3.2.3",
+        "loader-utils": "^0.2.16",
+        "lodash": "^4.17.3",
+        "pretty-error": "^2.0.2",
+        "tapable": "^1.0.0",
+        "toposort": "^1.0.0",
+        "util.promisify": "1.0.0"
+      },
+      "dependencies": {
+        "big.js": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+          "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+          "dev": true
+        },
+        "json5": {
+          "version": "0.5.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+          "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+          "dev": true
+        },
+        "loader-utils": {
+          "version": "0.2.17",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+          "dev": true,
+          "requires": {
+            "big.js": "^3.1.3",
+            "emojis-list": "^2.0.0",
+            "json5": "^0.5.0",
+            "object-assign": "^4.0.1"
+          }
+        }
+      }
+    },
+    "html2canvas": {
+      "version": "1.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-rc.3.tgz",
+      "integrity": "sha512-nWRk34IO3QopcDYpiPAbRW6VoI10H7uxEhcSFjox0JB6wZOMd6Mak+NqHPLljSFFEOvBjPafyRgcHnuWcFpWvg==",
+      "requires": {
+        "css-line-break": "1.1.1"
+      }
+    },
+    "htmlparser2": {
+      "version": "3.10.1",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+      "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^1.3.1",
+        "domhandler": "^2.3.0",
+        "domutils": "^1.5.1",
+        "entities": "^1.1.1",
+        "inherits": "^2.0.1",
+        "readable-stream": "^3.1.1"
+      },
+      "dependencies": {
+        "entities": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+          "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "3.4.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
+          "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "http-deceiver": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+      "dev": true
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+      "dev": true,
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        }
+      }
+    },
+    "http-parser-js": {
+      "version": "0.4.10",
+      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz",
+      "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
+      "dev": true
+    },
+    "http-proxy": {
+      "version": "1.17.0",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
+      "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
+      "dev": true,
+      "requires": {
+        "eventemitter3": "^3.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "http-proxy-middleware": {
+      "version": "0.19.1",
+      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+      "dev": true,
+      "requires": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      }
+    },
+    "http-signature": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      }
+    },
+    "https-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+      "dev": true
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "icss-replace-symbols": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+      "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
+      "dev": true
+    },
+    "icss-utils": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
+      "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.14"
+      }
+    },
+    "ieee754": {
+      "version": "1.1.13",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+      "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
+      "dev": true
+    },
+    "iferr": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+      "dev": true
+    },
+    "ignore": {
+      "version": "3.3.10",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+      "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+      "dev": true
+    },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "dev": true,
+      "optional": true
+    },
+    "import-cwd": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
+      "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+      "dev": true,
+      "requires": {
+        "import-from": "^2.1.0"
+      }
+    },
+    "import-fresh": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+      "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+      "dev": true,
+      "requires": {
+        "caller-path": "^2.0.0",
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "import-from": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
+      "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "import-local": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+      "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+      "dev": true,
+      "requires": {
+        "pkg-dir": "^3.0.0",
+        "resolve-cwd": "^2.0.0"
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+      "dev": true
+    },
+    "indexes-of": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+      "dev": true
+    },
+    "individual": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/individual/-/individual-2.0.0.tgz",
+      "integrity": "sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c="
+    },
+    "infer-owner": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "ini": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+      "dev": true
+    },
+    "inline-manifest-webpack-plugin": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/inline-manifest-webpack-plugin/-/inline-manifest-webpack-plugin-3.0.1.tgz",
+      "integrity": "sha1-yiFRBjEVKY4v2UtmmrdsfdY+RK0=",
+      "dev": true,
+      "requires": {
+        "source-map-url": "0.4.0"
+      }
+    },
+    "internal-ip": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
+      "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+      "dev": true,
+      "requires": {
+        "default-gateway": "^4.2.0",
+        "ipaddr.js": "^1.9.0"
+      }
+    },
+    "interpret": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
+      "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
+      "dev": true
+    },
+    "invariant": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+      "dev": true,
+      "requires": {
+        "loose-envify": "^1.0.0"
+      }
+    },
+    "invert-kv": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+      "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
+    },
+    "ip": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+      "dev": true
+    },
+    "ip-regex": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+      "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+      "dev": true
+    },
+    "ipaddr.js": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
+      "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==",
+      "dev": true
+    },
+    "is-absolute-url": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+      "dev": true
+    },
+    "is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^1.0.0"
+      }
+    },
+    "is-buffer": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
+      "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
+    },
+    "is-callable": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+      "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
+    },
+    "is-color-stop": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
+      "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
+      "dev": true,
+      "requires": {
+        "css-color-names": "^0.0.4",
+        "hex-color-regex": "^1.1.0",
+        "hsl-regex": "^1.0.0",
+        "hsla-regex": "^1.0.0",
+        "rgb-regex": "^1.0.1",
+        "rgba-regex": "^1.0.0"
+      }
+    },
+    "is-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-date-object": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+      "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
+    },
+    "is-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+      "dev": true,
+      "requires": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+          "dev": true
+        }
+      }
+    },
+    "is-directory": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+      "dev": true
+    },
+    "is-extendable": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "dev": true
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true
+    },
+    "is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+    },
+    "is-function": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
+      "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU="
+    },
+    "is-glob": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-number": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+      "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+      "dev": true
+    },
+    "is-path-cwd": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+      "dev": true
+    },
+    "is-path-in-cwd": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+      "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
+      "dev": true,
+      "requires": {
+        "is-path-inside": "^2.1.0"
+      }
+    },
+    "is-path-inside": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
+      "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+      "dev": true,
+      "requires": {
+        "path-is-inside": "^1.0.2"
+      }
+    },
+    "is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+      "dev": true
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-promise": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+      "dev": true
+    },
+    "is-regex": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+      "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+      "requires": {
+        "has": "^1.0.1"
+      }
+    },
+    "is-regexp": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+      "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+      "dev": true
+    },
+    "is-resolvable": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+      "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+      "dev": true
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+    },
+    "is-svg": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
+      "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
+      "dev": true,
+      "requires": {
+        "html-comment-regex": "^1.1.0"
+      }
+    },
+    "is-symbol": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+      "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+      "requires": {
+        "has-symbols": "^1.0.0"
+      }
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "dev": true,
+      "optional": true
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+      "dev": true
+    },
+    "is-wsl": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+      "dev": true
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+    },
+    "isobject": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "dev": true
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true,
+      "optional": true
+    },
+    "js-base64": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
+      "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==",
+      "dev": true
+    },
+    "js-levenshtein": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
+      "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
+      "dev": true
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.13.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+      "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "dev": true
+    },
+    "jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true
+    },
+    "json-parse-better-errors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+      "dev": true
+    },
+    "json-schema": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+      "dev": true,
+      "optional": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "json-stable-stringify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "jsonify": "~0.0.0"
+      }
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+      "dev": true,
+      "optional": true
+    },
+    "json3": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
+      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
+      "dev": true
+    },
+    "json5": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
+      "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.0"
+      }
+    },
+    "jsonify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+      "dev": true,
+      "optional": true
+    },
+    "jsprim": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "killable": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
+      "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+      "dev": true
+    },
+    "kind-of": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+      "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+      "dev": true
+    },
+    "last-call-webpack-plugin": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
+      "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.5",
+        "webpack-sources": "^1.1.0"
+      }
+    },
+    "lcid": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+      "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+      "requires": {
+        "invert-kv": "^2.0.0"
+      }
+    },
+    "less": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz",
+      "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==",
+      "dev": true,
+      "requires": {
+        "clone": "^2.1.2",
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "mime": "^1.4.1",
+        "mkdirp": "^0.5.0",
+        "promise": "^7.1.1",
+        "request": "^2.83.0",
+        "source-map": "~0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "less-loader": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz",
+      "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==",
+      "dev": true,
+      "requires": {
+        "clone": "^2.1.1",
+        "loader-utils": "^1.1.0",
+        "pify": "^3.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "loader-runner": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
+      "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+      "dev": true
+    },
+    "loader-utils": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+      "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+      "dev": true,
+      "requires": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^2.0.0",
+        "json5": "^1.0.1"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        }
+      }
+    },
+    "locate-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+      "requires": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.15",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+      "dev": true
+    },
+    "lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+      "dev": true
+    },
+    "lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
+    },
+    "lodash.differencewith": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz",
+      "integrity": "sha1-uvr7yRi1UVTheRdqALsK76rIVLc=",
+      "dev": true
+    },
+    "lodash.isequal": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+      "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+      "dev": true
+    },
+    "lodash.isfunction": {
+      "version": "3.0.9",
+      "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",
+      "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==",
+      "dev": true
+    },
+    "lodash.isplainobject": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+      "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+      "dev": true
+    },
+    "lodash.kebabcase": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+      "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=",
+      "dev": true
+    },
+    "lodash.memoize": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+      "dev": true
+    },
+    "lodash.mergewith": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
+      "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
+      "dev": true
+    },
+    "lodash.throttle": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+      "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
+    },
+    "lodash.unionwith": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/lodash.unionwith/-/lodash.unionwith-4.6.0.tgz",
+      "integrity": "sha1-dNFAtcqBRubGQ8NyT1FSU42awfA=",
+      "dev": true
+    },
+    "lodash.uniq": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+      "dev": true
+    },
+    "loglevel": {
+      "version": "1.6.3",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz",
+      "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==",
+      "dev": true
+    },
+    "loose-envify": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+      "dev": true,
+      "requires": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      }
+    },
+    "lower-case": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+      "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+      "dev": true
+    },
+    "lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
+      "requires": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "m3u8-parser": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-2.1.0.tgz",
+      "integrity": "sha1-yBcDKewc1RXQ1Yu4t2LamJbLA2g="
+    },
+    "make-dir": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+      "dev": true,
+      "requires": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      }
+    },
+    "mamacro": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
+      "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
+      "dev": true
+    },
+    "map-age-cleaner": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+      "requires": {
+        "p-defer": "^1.0.0"
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "dev": true
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "dev": true,
+      "requires": {
+        "object-visit": "^1.0.0"
+      }
+    },
+    "math-expression-evaluator": {
+      "version": "1.2.17",
+      "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
+      "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
+      "dev": true
+    },
+    "md5.js": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+      "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "mdn-data": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
+      "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
+      "dev": true
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true
+    },
+    "mem": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+      "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+      "requires": {
+        "map-age-cleaner": "^0.1.1",
+        "mimic-fn": "^2.0.0",
+        "p-is-promise": "^2.0.0"
+      }
+    },
+    "memory-fs": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true
+    },
+    "merge-source-map": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
+      "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "3.1.10",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      }
+    },
+    "miller-rabin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      }
+    },
+    "mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true
+    },
+    "mime-db": {
+      "version": "1.40.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
+      "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
+      "dev": true
+    },
+    "mime-types": {
+      "version": "2.1.24",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
+      "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
+      "dev": true,
+      "requires": {
+        "mime-db": "1.40.0"
+      }
+    },
+    "mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+    },
+    "min-document": {
+      "version": "2.19.0",
+      "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+      "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
+      "requires": {
+        "dom-walk": "^0.1.0"
+      }
+    },
+    "mini-css-extract-plugin": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz",
+      "integrity": "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      }
+    },
+    "minimalistic-assert": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+      "dev": true
+    },
+    "minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+      "dev": true
+    },
+    "mississippi": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
+      "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+      "dev": true,
+      "requires": {
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^3.0.0",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
+      }
+    },
+    "mixin-deep": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "dev": true,
+      "requires": {
+        "minimist": "0.0.8"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+          "dev": true
+        }
+      }
+    },
+    "move-concurrently": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1",
+        "copy-concurrently": "^1.0.0",
+        "fs-write-stream-atomic": "^1.0.8",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.3"
+      }
+    },
+    "ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+    },
+    "multicast-dns": {
+      "version": "6.2.3",
+      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+      "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+      "dev": true,
+      "requires": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      }
+    },
+    "multicast-dns-service-types": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+      "dev": true
+    },
+    "mux.js": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-4.3.2.tgz",
+      "integrity": "sha512-g0q6DPdvb3yYcoK7ElBGobdSSrhY/RjPt19U7uUc733aqvc5bCS/aCvL9z+448y+IoCZnYDwyZfQBBXMSmGOaQ=="
+    },
+    "nan": {
+      "version": "2.14.0",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+      "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+      "dev": true,
+      "optional": true
+    },
+    "nanomatch": {
+      "version": "1.2.13",
+      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      }
+    },
+    "negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+      "dev": true
+    },
+    "neo-async": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
+      "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
+      "dev": true
+    },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+    },
+    "no-case": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+      "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+      "dev": true,
+      "requires": {
+        "lower-case": "^1.1.1"
+      }
+    },
+    "node-cli-config": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/node-cli-config/-/node-cli-config-0.0.1.tgz",
+      "integrity": "sha1-r3d02FQCprfLlsH5G7JP3VjXwLA=",
+      "dev": true
+    },
+    "node-forge": {
+      "version": "0.7.5",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
+      "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
+      "dev": true
+    },
+    "node-libs-browser": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+      "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+      "dev": true,
+      "requires": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^3.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "0.0.1",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
+        "tty-browserify": "0.0.0",
+        "url": "^0.11.0",
+        "util": "^0.11.0",
+        "vm-browserify": "^1.0.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        }
+      }
+    },
+    "node-releases": {
+      "version": "1.1.27",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.27.tgz",
+      "integrity": "sha512-9iXUqHKSGo6ph/tdXVbHFbhRVQln4ZDTIBJCzsa90HimnBYc5jw8RWYt4wBYFHehGyC3koIz5O4mb2fHrbPOuA==",
+      "dev": true,
+      "requires": {
+        "semver": "^5.3.0"
+      }
+    },
+    "nopt": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+      "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+      "dev": true,
+      "requires": {
+        "abbrev": "1"
+      }
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true
+    },
+    "normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+      "dev": true
+    },
+    "normalize-url": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
+      "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
+      "dev": true
+    },
+    "normalize-wheel": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+      "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "requires": {
+        "path-key": "^2.0.0"
+      }
+    },
+    "nth-check": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+      "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+      "dev": true,
+      "requires": {
+        "boolbase": "~1.0.0"
+      }
+    },
+    "num2fraction": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+      "dev": true
+    },
+    "number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "dev": true
+    },
+    "oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+      "dev": true,
+      "optional": true
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "dev": true,
+      "requires": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.assign": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+      "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "function-bind": "^1.1.1",
+        "has-symbols": "^1.0.0",
+        "object-keys": "^1.0.11"
+      }
+    },
+    "object.getownpropertydescriptors": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+      "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.5.1"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "object.values": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
+      "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.12.0",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3"
+      }
+    },
+    "obuf": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+      "dev": true
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "on-headers": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "opn": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
+      "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      }
+    },
+    "optimize-css-assets-webpack-plugin": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz",
+      "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==",
+      "dev": true,
+      "requires": {
+        "cssnano": "^4.1.10",
+        "last-call-webpack-plugin": "^3.0.0"
+      }
+    },
+    "optionator": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+      "dev": true,
+      "requires": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.4",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "wordwrap": "~1.0.0"
+      }
+    },
+    "original": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+      "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
+      "dev": true,
+      "requires": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "os-browserify": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+      "dev": true
+    },
+    "os-locale": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+      "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+      "requires": {
+        "execa": "^1.0.0",
+        "lcid": "^2.0.0",
+        "mem": "^4.0.0"
+      }
+    },
+    "p-defer": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww="
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
+    },
+    "p-is-promise": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg=="
+    },
+    "p-limit": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+      "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+      "requires": {
+        "p-limit": "^2.0.0"
+      }
+    },
+    "p-map": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
+      "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+      "dev": true
+    },
+    "p-retry": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
+      "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+      "dev": true,
+      "requires": {
+        "retry": "^0.12.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+    },
+    "pako": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
+      "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
+      "dev": true
+    },
+    "parallel-transform": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
+      "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+      "dev": true,
+      "requires": {
+        "cyclist": "~0.2.2",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "param-case": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+      "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0"
+      }
+    },
+    "parse-asn1": {
+      "version": "5.1.4",
+      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
+      "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==",
+      "dev": true,
+      "requires": {
+        "asn1.js": "^4.0.0",
+        "browserify-aes": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "parse-code-context": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/parse-code-context/-/parse-code-context-0.2.2.tgz",
+      "integrity": "sha1-FEuK+3IZSC1+iMHranZVlvOmrA0=",
+      "dev": true
+    },
+    "parse-headers": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz",
+      "integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==",
+      "requires": {
+        "for-each": "^0.3.3",
+        "string.prototype.trim": "^1.1.2"
+      }
+    },
+    "parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+      "dev": true,
+      "requires": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      }
+    },
+    "parse-passwd": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+      "dev": true
+    },
+    "parse5": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
+      "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "dev": true
+    },
+    "pascalcase": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "dev": true
+    },
+    "path-browserify": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+      "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+      "dev": true
+    },
+    "path-dirname": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
+    },
+    "path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "dev": true
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+    },
+    "path-parse": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+      "dev": true
+    },
+    "path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "dev": true
+    },
+    "path-type": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+      "dev": true,
+      "requires": {
+        "pify": "^3.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
+    "pbkdf2": {
+      "version": "3.0.17",
+      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
+      "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+      "dev": true,
+      "requires": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+      "dev": true,
+      "optional": true
+    },
+    "pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+      "dev": true
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "pkcs7": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-0.2.3.tgz",
+      "integrity": "sha1-ItYGZtAQZcXyRDkJjkpIMEUic74="
+    },
+    "pkg-dir": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+      "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+      "dev": true,
+      "requires": {
+        "find-up": "^3.0.0"
+      }
+    },
+    "pngjs": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+      "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
+    },
+    "portfinder": {
+      "version": "1.0.21",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.21.tgz",
+      "integrity": "sha512-ESabpDCzmBS3ekHbmpAIiESq3udRsCBGiBZLsC+HgBKv2ezb0R4oG+7RnYEVZ/ZCfhel5Tx3UzdNWA0Lox2QCA==",
+      "dev": true,
+      "requires": {
+        "async": "^1.5.2",
+        "debug": "^2.2.0",
+        "mkdirp": "0.5.x"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "dev": true
+    },
+    "postcss": {
+      "version": "7.0.17",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz",
+      "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2",
+        "source-map": "^0.6.1",
+        "supports-color": "^6.1.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "postcss-calc": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz",
+      "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==",
+      "dev": true,
+      "requires": {
+        "css-unit-converter": "^1.1.1",
+        "postcss": "^7.0.5",
+        "postcss-selector-parser": "^5.0.0-rc.4",
+        "postcss-value-parser": "^3.3.1"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+          "dev": true
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+          "dev": true,
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-colormin": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
+      "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "color": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-convert-values": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
+      "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-discard-comments": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
+      "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-duplicates": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
+      "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-empty": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
+      "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-overridden": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
+      "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-unused": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz",
+      "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
+      "dev": true,
+      "requires": {
+        "postcss": "^5.0.14",
+        "uniqs": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "postcss-filter-plugins": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz",
+      "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==",
+      "dev": true,
+      "requires": {
+        "postcss": "^5.0.4"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "postcss-load-config": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz",
+      "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "import-cwd": "^2.0.0"
+      }
+    },
+    "postcss-loader": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
+      "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "postcss": "^7.0.0",
+        "postcss-load-config": "^2.0.0",
+        "schema-utils": "^1.0.0"
+      }
+    },
+    "postcss-merge-idents": {
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz",
+      "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.1",
+        "postcss": "^5.0.10",
+        "postcss-value-parser": "^3.1.1"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "postcss-merge-longhand": {
+      "version": "4.0.11",
+      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
+      "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
+      "dev": true,
+      "requires": {
+        "css-color-names": "0.0.4",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "stylehacks": "^4.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-merge-rules": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
+      "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "cssnano-util-same-parent": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0",
+        "vendors": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
+          "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^4.1.1",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-message-helpers": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz",
+      "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=",
+      "dev": true
+    },
+    "postcss-minify-font-values": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
+      "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-gradients": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
+      "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "is-color-stop": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-params": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
+      "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "browserslist": "^4.0.0",
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "uniqs": "^2.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-selectors": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
+      "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
+          "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^4.1.1",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-modules-extract-imports": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+      "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.5"
+      }
+    },
+    "postcss-modules-local-by-default": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz",
+      "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0",
+        "postcss-value-parser": "^3.3.1"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-modules-scope": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz",
+      "integrity": "sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0"
+      }
+    },
+    "postcss-modules-values": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz",
+      "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==",
+      "dev": true,
+      "requires": {
+        "icss-replace-symbols": "^1.1.0",
+        "postcss": "^7.0.6"
+      }
+    },
+    "postcss-normalize-charset": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
+      "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-normalize-display-values": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
+      "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-positions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
+      "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-repeat-style": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
+      "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-string": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
+      "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-timing-functions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
+      "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-unicode": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
+      "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-url": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
+      "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
+      "dev": true,
+      "requires": {
+        "is-absolute-url": "^2.0.0",
+        "normalize-url": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-whitespace": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
+      "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-ordered-values": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
+      "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-pxtorem": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-pxtorem/-/postcss-pxtorem-4.0.1.tgz",
+      "integrity": "sha1-nGTQ7+SIVHPMHLAwXG/8PrtFsc0=",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.0",
+        "postcss": "^5.2.10"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "postcss-reduce-idents": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz",
+      "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
+      "dev": true,
+      "requires": {
+        "postcss": "^5.0.4",
+        "postcss-value-parser": "^3.0.2"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "postcss-reduce-initial": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
+      "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-reduce-transforms": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
+      "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-selector-parser": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
+      "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
+      "dev": true,
+      "requires": {
+        "cssesc": "^3.0.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      }
+    },
+    "postcss-svgo": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
+      "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==",
+      "dev": true,
+      "requires": {
+        "is-svg": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "svgo": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-unique-selectors": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
+      "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "postcss": "^7.0.0",
+        "uniqs": "^2.0.0"
+      }
+    },
+    "postcss-value-parser": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz",
+      "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==",
+      "dev": true
+    },
+    "postcss-zindex": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz",
+      "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.1",
+        "postcss": "^5.0.4",
+        "uniqs": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+      "dev": true
+    },
+    "prepend-http": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+      "dev": true
+    },
+    "prettier": {
+      "version": "1.16.3",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz",
+      "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==",
+      "dev": true
+    },
+    "pretty-error": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
+      "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+      "dev": true,
+      "requires": {
+        "renderkid": "^2.0.1",
+        "utila": "~0.4"
+      }
+    },
+    "private": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+      "dev": true
+    },
+    "process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
+    },
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+      "dev": true
+    },
+    "progress": {
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+      "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
+      "dev": true
+    },
+    "progress-bar-webpack-plugin": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmjs.org/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-1.12.1.tgz",
+      "integrity": "sha512-tVbPB5xBbqNwdH3mwcxzjL1r1Vrm/xGu93OsqVSAbCaXGoKFvfWIh0gpMDpn2kYsPVRSAIK0pBkP9Vfs+JJibQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.1",
+        "object.assign": "^4.0.1",
+        "progress": "^1.1.8"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        }
+      }
+    },
+    "promise": {
+      "version": "7.3.1",
+      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "asap": "~2.0.3"
+      }
+    },
+    "promise-inflight": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+      "dev": true
+    },
+    "proxy-addr": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
+      "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
+      "dev": true,
+      "requires": {
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.9.0"
+      }
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "psl": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz",
+      "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==",
+      "dev": true,
+      "optional": true
+    },
+    "public-encrypt": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+      "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "pumpify": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+      "dev": true,
+      "requires": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      },
+      "dependencies": {
+        "pump": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+          "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        }
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+      "dev": true
+    },
+    "q": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true
+    },
+    "qr.js": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz",
+      "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8="
+    },
+    "qrcode": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.1.tgz",
+      "integrity": "sha512-3JhHQJkKqJL4PfoM6t+B40f0GWv9eNJAJmuNx2X/sHEOLvMyvEPN8GfbdN1qmr19O8N2nLraOzeWjXocHz1S4w==",
+      "requires": {
+        "dijkstrajs": "^1.0.1",
+        "isarray": "^2.0.1",
+        "pngjs": "^3.3.0",
+        "yargs": "^13.2.4"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+        }
+      }
+    },
+    "qs": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+      "dev": true,
+      "optional": true
+    },
+    "query-string": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      }
+    },
+    "querystring": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+      "dev": true
+    },
+    "querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "dev": true
+    },
+    "querystringify": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
+      "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==",
+      "dev": true
+    },
+    "randombytes": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "randomfill": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+          "dev": true
+        }
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+      "dev": true,
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "readdirp": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "reduce-css-calc": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz",
+      "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^0.4.2",
+        "math-expression-evaluator": "^1.2.14",
+        "reduce-function-call": "^1.0.1"
+      },
+      "dependencies": {
+        "balanced-match": {
+          "version": "0.4.2",
+          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+          "dev": true
+        }
+      }
+    },
+    "reduce-function-call": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz",
+      "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^0.4.2"
+      },
+      "dependencies": {
+        "balanced-match": {
+          "version": "0.4.2",
+          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+          "dev": true
+        }
+      }
+    },
+    "regenerate": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+      "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+      "dev": true
+    },
+    "regenerate-unicode-properties": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
+      "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.0"
+      }
+    },
+    "regenerator-runtime": {
+      "version": "0.13.3",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
+      "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
+    },
+    "regenerator-transform": {
+      "version": "0.14.1",
+      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz",
+      "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==",
+      "dev": true,
+      "requires": {
+        "private": "^0.1.6"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "regexp-tree": {
+      "version": "0.1.11",
+      "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz",
+      "integrity": "sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg==",
+      "dev": true
+    },
+    "regexpu-core": {
+      "version": "4.5.5",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.5.tgz",
+      "integrity": "sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ==",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.0",
+        "regenerate-unicode-properties": "^8.1.0",
+        "regjsgen": "^0.5.0",
+        "regjsparser": "^0.6.0",
+        "unicode-match-property-ecmascript": "^1.0.4",
+        "unicode-match-property-value-ecmascript": "^1.1.0"
+      }
+    },
+    "regjsgen": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz",
+      "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==",
+      "dev": true
+    },
+    "regjsparser": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz",
+      "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==",
+      "dev": true,
+      "requires": {
+        "jsesc": "~0.5.0"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+          "dev": true
+        }
+      }
+    },
+    "relateurl": {
+      "version": "0.2.7",
+      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+      "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+      "dev": true
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "renderkid": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz",
+      "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==",
+      "dev": true,
+      "requires": {
+        "css-select": "^1.1.0",
+        "dom-converter": "^0.2",
+        "htmlparser2": "^3.3.0",
+        "strip-ansi": "^3.0.0",
+        "utila": "^0.4.0"
+      },
+      "dependencies": {
+        "css-select": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+          "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+          "dev": true,
+          "requires": {
+            "boolbase": "~1.0.0",
+            "css-what": "2.1",
+            "domutils": "1.5.1",
+            "nth-check": "~1.0.1"
+          }
+        },
+        "domutils": {
+          "version": "1.5.1",
+          "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+          "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+          "dev": true,
+          "requires": {
+            "dom-serializer": "0",
+            "domelementtype": "1"
+          }
+        }
+      }
+    },
+    "repeat-element": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+      "dev": true
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "dev": true
+    },
+    "request": {
+      "version": "2.88.0",
+      "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+      "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "aws-sign2": "~0.7.0",
+        "aws4": "^1.8.0",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.6",
+        "extend": "~3.0.2",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.3.2",
+        "har-validator": "~5.1.0",
+        "http-signature": "~1.2.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.19",
+        "oauth-sign": "~0.9.0",
+        "performance-now": "^2.1.0",
+        "qs": "~6.5.2",
+        "safe-buffer": "^5.1.2",
+        "tough-cookie": "~2.4.3",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "dev": true
+    },
+    "resize-observer-polyfill": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+    },
+    "resolve": {
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+      "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+      "dev": true,
+      "requires": {
+        "path-parse": "^1.0.6"
+      }
+    },
+    "resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "resolve-dir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+      "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.0",
+        "global-modules": "^1.0.0"
+      },
+      "dependencies": {
+        "global-modules": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+          "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+          "dev": true,
+          "requires": {
+            "global-prefix": "^1.0.1",
+            "is-windows": "^1.0.1",
+            "resolve-dir": "^1.0.0"
+          }
+        }
+      }
+    },
+    "resolve-from": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+      "dev": true
+    },
+    "resolve-url": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "dev": true
+    },
+    "ret": {
+      "version": "0.1.15",
+      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+      "dev": true
+    },
+    "retry": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+      "dev": true
+    },
+    "rgb-regex": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
+      "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=",
+      "dev": true
+    },
+    "rgba-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
+      "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "ripemd160": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+      "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "run-queue": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "rust-result": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/rust-result/-/rust-result-1.0.0.tgz",
+      "integrity": "sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I=",
+      "requires": {
+        "individual": "^2.0.0"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "dev": true
+    },
+    "safe-json-parse": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-4.0.0.tgz",
+      "integrity": "sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw=",
+      "requires": {
+        "rust-result": "^1.0.0"
+      }
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "dev": true,
+      "requires": {
+        "ret": "~0.1.10"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
+    },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+      "dev": true
+    },
+    "schema-utils": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      }
+    },
+    "select-hose": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+      "dev": true
+    },
+    "selfsigned": {
+      "version": "1.10.4",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz",
+      "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==",
+      "dev": true,
+      "requires": {
+        "node-forge": "0.7.5"
+      }
+    },
+    "semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+    },
+    "send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+              "dev": true
+            }
+          }
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "dev": true
+        }
+      }
+    },
+    "serialize-javascript": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
+      "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==",
+      "dev": true
+    },
+    "serve-index": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.4",
+        "batch": "0.6.1",
+        "debug": "2.6.9",
+        "escape-html": "~1.0.3",
+        "http-errors": "~1.6.2",
+        "mime-types": "~2.1.17",
+        "parseurl": "~1.3.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "http-errors": {
+          "version": "1.6.3",
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+          "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+          "dev": true,
+          "requires": {
+            "depd": "~1.1.2",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.1.0",
+            "statuses": ">= 1.4.0 < 2"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        },
+        "setprototypeof": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+          "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+          "dev": true
+        }
+      }
+    },
+    "serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+      "dev": true,
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+    },
+    "set-value": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "setimmediate": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+      "dev": true
+    },
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+      "dev": true
+    },
+    "sha.js": {
+      "version": "2.4.11",
+      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+      "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "shake.js": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/shake.js/-/shake.js-1.2.2.tgz",
+      "integrity": "sha1-sqxWCoKr5o14oCliOnCI4bMLrP8="
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+    },
+    "shvl": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/shvl/-/shvl-1.3.1.tgz",
+      "integrity": "sha512-+rRPP46hloYUAEImJcqprUgXu+05Ikqr4h4V+w5i2zJy37nAqtkQKufs3+3S2fDq6JNRrHMIQhB/Vaex+jgAAw=="
+    },
+    "signal-exit": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+    },
+    "simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.3.1"
+      },
+      "dependencies": {
+        "is-arrayish": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+          "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+          "dev": true
+        }
+      }
+    },
+    "slash": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+      "dev": true
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+      "dev": true,
+      "requires": {
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+      "dev": true,
+      "requires": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.2.0"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "sntp": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "hoek": "2.x.x"
+      }
+    },
+    "sockjs": {
+      "version": "0.3.19",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
+      "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+      "dev": true,
+      "requires": {
+        "faye-websocket": "^0.10.0",
+        "uuid": "^3.0.1"
+      }
+    },
+    "sockjs-client": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz",
+      "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==",
+      "dev": true,
+      "requires": {
+        "debug": "^3.2.5",
+        "eventsource": "^1.0.7",
+        "faye-websocket": "~0.11.1",
+        "inherits": "^2.0.3",
+        "json3": "^3.3.2",
+        "url-parse": "^1.4.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "faye-websocket": {
+          "version": "0.11.3",
+          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
+          "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
+          "dev": true,
+          "requires": {
+            "websocket-driver": ">=0.5.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "sort-keys": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+      "dev": true,
+      "requires": {
+        "is-plain-obj": "^1.0.0"
+      }
+    },
+    "source-list-map": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+      "dev": true
+    },
+    "source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "dev": true
+    },
+    "source-map-resolve": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+      "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+      "dev": true,
+      "requires": {
+        "atob": "^2.1.1",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
+      }
+    },
+    "source-map-support": {
+      "version": "0.5.13",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+      "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+      "dev": true
+    },
+    "spdy": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz",
+      "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "spdy-transport": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0",
+        "detect-node": "^2.0.4",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.2",
+        "readable-stream": "^3.0.6",
+        "wbuf": "^1.7.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "3.4.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
+          "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "split-string": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.0"
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "sshpk": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.0.2",
+        "tweetnacl": "~0.14.0"
+      }
+    },
+    "ssri": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+      "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+      "dev": true,
+      "requires": {
+        "figgy-pudding": "^3.5.1"
+      }
+    },
+    "stable": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+      "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+      "dev": true
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "dev": true
+    },
+    "stream-browserify": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+      "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "stream-each": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+      "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "stream-http": {
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+      "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+      "dev": true,
+      "requires": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "stream-shift": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+      "dev": true
+    },
+    "strict-uri-encode": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+      "dev": true
+    },
+    "string-width": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+      "requires": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "string.prototype.trim": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.0.tgz",
+      "integrity": "sha512-9EIjYD/WdlvLpn987+ctkLf0FfvBefOCuiEr2henD8X+7jfwPnyvTdmW8OJhj5p+M0/96mBdynLWkxUr+rHlpg==",
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.13.0",
+        "function-bind": "^1.1.1"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "stringstream": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
+      "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
+      "dev": true,
+      "optional": true
+    },
+    "strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
+    },
+    "strip-comments": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-0.4.4.tgz",
+      "integrity": "sha1-ucqvxP6QX5bAkd+J+achXyqmKcY=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "extract-comments": "^0.10.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "strip-css-comments": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-css-comments/-/strip-css-comments-3.0.0.tgz",
+      "integrity": "sha1-elYl7/iisibPiUehElTaluE9rok=",
+      "dev": true,
+      "requires": {
+        "is-regexp": "^1.0.0"
+      }
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
+    },
+    "style-loader": {
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz",
+      "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "schema-utils": "^1.0.0"
+      }
+    },
+    "style-resources-loader": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/style-resources-loader/-/style-resources-loader-1.2.1.tgz",
+      "integrity": "sha512-ekId7AwZRW429UjQo02CJTt0Y8GwoT9zidvJLq4lRTJbu0cghv9XNRmt9mS4MR41+gZwMRT0EpFzP68HDWLbXQ==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.2",
+        "is-callable": "^1.1.4",
+        "is-plain-object": "^2.0.4",
+        "is-promise": "^2.1.0",
+        "loader-utils": "^1.1.0"
+      }
+    },
+    "stylehacks": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
+      "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
+          "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^4.1.1",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "svg-tags": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+      "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
+      "dev": true
+    },
+    "svgo": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.0.tgz",
+      "integrity": "sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.1",
+        "coa": "^2.0.2",
+        "css-select": "^2.0.0",
+        "css-select-base-adapter": "^0.1.1",
+        "css-tree": "1.0.0-alpha.33",
+        "csso": "^3.5.1",
+        "js-yaml": "^3.13.1",
+        "mkdirp": "~0.5.1",
+        "object.values": "^1.1.0",
+        "sax": "~1.2.4",
+        "stable": "^0.1.8",
+        "unquote": "~1.1.1",
+        "util.promisify": "~1.0.0"
+      }
+    },
+    "tapable": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+      "dev": true
+    },
+    "terser": {
+      "version": "4.1.4",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.4.tgz",
+      "integrity": "sha512-+ZwXJvdSwbd60jG0Illav0F06GDJF0R4ydZ21Q3wGAFKoBGyJGo34F63vzJHgvYxc1ukOtIjvwEvl9MkjzM6Pg==",
+      "dev": true,
+      "requires": {
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.20.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+          "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "terser-webpack-plugin": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz",
+      "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==",
+      "dev": true,
+      "requires": {
+        "cacache": "^12.0.2",
+        "find-cache-dir": "^2.1.0",
+        "is-wsl": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^1.7.0",
+        "source-map": "^0.6.1",
+        "terser": "^4.1.2",
+        "webpack-sources": "^1.4.0",
+        "worker-farm": "^1.7.0"
+      },
+      "dependencies": {
+        "cacache": {
+          "version": "12.0.2",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz",
+          "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==",
+          "dev": true,
+          "requires": {
+            "bluebird": "^3.5.5",
+            "chownr": "^1.1.1",
+            "figgy-pudding": "^3.5.1",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.1.15",
+            "infer-owner": "^1.0.3",
+            "lru-cache": "^5.1.1",
+            "mississippi": "^3.0.0",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.6.3",
+            "ssri": "^6.0.1",
+            "unique-filename": "^1.1.1",
+            "y18n": "^4.0.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "throttle-debounce": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
+      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
+    },
+    "through2": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+      "dev": true,
+      "requires": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "thunky": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz",
+      "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==",
+      "dev": true
+    },
+    "timers-browserify": {
+      "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz",
+      "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==",
+      "dev": true,
+      "requires": {
+        "setimmediate": "^1.0.4"
+      }
+    },
+    "timsort": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
+      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
+      "dev": true
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+      "dev": true
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+      "dev": true
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+      "dev": true,
+      "requires": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "to-regex-range": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      }
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+      "dev": true
+    },
+    "toposort": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
+      "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+      "dev": true
+    },
+    "touch": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz",
+      "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=",
+      "dev": true,
+      "requires": {
+        "nopt": "~1.0.10"
+      }
+    },
+    "tough-cookie": {
+      "version": "2.4.3",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+      "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "psl": "^1.1.24",
+        "punycode": "^1.4.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "trim-right": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+      "dev": true
+    },
+    "tslib": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+      "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+      "dev": true
+    },
+    "tsml": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/tsml/-/tsml-1.0.1.tgz",
+      "integrity": "sha1-ifghi52eJX9H1/a1bQHFpNLGj8M="
+    },
+    "tty-browserify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+      "dev": true
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "dev": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
+    },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "dev": true
+    },
+    "uglify-js": {
+      "version": "3.4.10",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz",
+      "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
+      "dev": true,
+      "requires": {
+        "commander": "~2.19.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.19.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+          "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "uglifyjs-webpack-plugin": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz",
+      "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==",
+      "dev": true,
+      "requires": {
+        "cacache": "^12.0.2",
+        "find-cache-dir": "^2.1.0",
+        "is-wsl": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^1.7.0",
+        "source-map": "^0.6.1",
+        "uglify-js": "^3.6.0",
+        "webpack-sources": "^1.4.0",
+        "worker-farm": "^1.7.0"
+      },
+      "dependencies": {
+        "cacache": {
+          "version": "12.0.2",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz",
+          "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==",
+          "dev": true,
+          "requires": {
+            "bluebird": "^3.5.5",
+            "chownr": "^1.1.1",
+            "figgy-pudding": "^3.5.1",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.1.15",
+            "infer-owner": "^1.0.3",
+            "lru-cache": "^5.1.1",
+            "mississippi": "^3.0.0",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.6.3",
+            "ssri": "^6.0.1",
+            "unique-filename": "^1.1.1",
+            "y18n": "^4.0.0"
+          }
+        },
+        "commander": {
+          "version": "2.20.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+          "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "uglify-js": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
+          "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
+          "dev": true,
+          "requires": {
+            "commander": "~2.20.0",
+            "source-map": "~0.6.1"
+          }
+        }
+      }
+    },
+    "underscore": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
+      "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==",
+      "dev": true
+    },
+    "unicode-canonical-property-names-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+      "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+      "dev": true
+    },
+    "unicode-match-property-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+      "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+      "dev": true,
+      "requires": {
+        "unicode-canonical-property-names-ecmascript": "^1.0.4",
+        "unicode-property-aliases-ecmascript": "^1.0.4"
+      }
+    },
+    "unicode-match-property-value-ecmascript": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
+      "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
+      "dev": true
+    },
+    "unicode-property-aliases-ecmascript": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
+      "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
+      "dev": true
+    },
+    "union-value": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      }
+    },
+    "uniq": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+      "dev": true
+    },
+    "uniqs": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
+      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+      "dev": true
+    },
+    "unique-filename": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+      "dev": true,
+      "requires": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "unique-slug": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+      "dev": true,
+      "requires": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true
+    },
+    "unquote": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+      "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+      "dev": true
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "dev": true,
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "dev": true,
+          "requires": {
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "dev": true,
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4",
+          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+          "dev": true
+        }
+      }
+    },
+    "upath": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
+      "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==",
+      "dev": true
+    },
+    "upper-case": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+      "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+      "dev": true
+    },
+    "uri-js": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "urix": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "dev": true
+    },
+    "url": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "dev": true,
+      "requires": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+          "dev": true
+        }
+      }
+    },
+    "url-loader": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz",
+      "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "mime": "^2.0.3",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "2.4.4",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+          "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+          "dev": true
+        }
+      }
+    },
+    "url-parse": {
+      "version": "1.4.7",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
+      "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
+      "dev": true,
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "url-toolkit": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.1.6.tgz",
+      "integrity": "sha512-UaZ2+50am4HwrV2crR/JAf63Q4VvPYphe63WGeoJxeu8gmOm0qxPt+KsukfakPNrX9aymGNEkkaoICwn+OuvBw=="
+    },
+    "use": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+      "dev": true
+    },
+    "util": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+      "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+      "dev": true,
+      "requires": {
+        "inherits": "2.0.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "util.promisify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
+      "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "object.getownpropertydescriptors": "^2.0.3"
+      }
+    },
+    "utila": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+      "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+      "dev": true
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true
+    },
+    "uuid": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+      "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+      "dev": true
+    },
+    "v8-compile-cache": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz",
+      "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==",
+      "dev": true
+    },
+    "validator": {
+      "version": "9.4.1",
+      "resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz",
+      "integrity": "sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA=="
+    },
+    "vanilla-masker": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/vanilla-masker/-/vanilla-masker-1.2.0.tgz",
+      "integrity": "sha1-woMOnZlKX+zSJhUGR3wnB/5Yl1Y="
+    },
+    "vant": {
+      "version": "2.4.7",
+      "resolved": "https://registry.npmjs.org/vant/-/vant-2.4.7.tgz",
+      "integrity": "sha512-wjAUP+jw7PN/2jZ9JVpzE+p2Nq1JWN3seVO+jRityESquGEixfC1bBRL9WO6YdjzqzgbvrzLhvYeUPlR309ksQ==",
+      "requires": {
+        "@babel/runtime": "7.x",
+        "@vant/icons": "1.2.1",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "vue-lazyload": "1.2.3"
+      }
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true
+    },
+    "vendors": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz",
+      "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==",
+      "dev": true
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "video.js": {
+      "version": "6.13.0",
+      "resolved": "https://registry.npmjs.org/video.js/-/video.js-6.13.0.tgz",
+      "integrity": "sha512-36/JR/GhPQSZj0o+GNbhcEYv/b0SkV9SQsjlodAnzMQYN0TA7VhmqrKPYMCi1NGRYu7S9W3OaFCFoUxkYfSVlg==",
+      "requires": {
+        "babel-runtime": "^6.9.2",
+        "global": "4.3.2",
+        "safe-json-parse": "4.0.0",
+        "tsml": "1.0.1",
+        "videojs-font": "2.1.0",
+        "videojs-ie8": "1.1.2",
+        "videojs-vtt.js": "0.12.6",
+        "xhr": "2.4.0"
+      }
+    },
+    "videojs-contrib-hls": {
+      "version": "5.15.0",
+      "resolved": "https://registry.npmjs.org/videojs-contrib-hls/-/videojs-contrib-hls-5.15.0.tgz",
+      "integrity": "sha512-18zbMYZ0XRBKTPEayA9bFTWWrqhT9b4G8+zf0czJLD7Epe5PcK1I/3dflTHQeQ5rwlWir+/XnFU3sMg/B2MMcw==",
+      "requires": {
+        "aes-decrypter": "1.0.3",
+        "global": "^4.3.0",
+        "m3u8-parser": "2.1.0",
+        "mux.js": "4.3.2",
+        "url-toolkit": "^2.1.3",
+        "video.js": "^5.19.1 || ^6.2.0",
+        "videojs-contrib-media-sources": "4.7.2",
+        "webwackify": "0.1.6"
+      }
+    },
+    "videojs-contrib-media-sources": {
+      "version": "4.7.2",
+      "resolved": "https://registry.npmjs.org/videojs-contrib-media-sources/-/videojs-contrib-media-sources-4.7.2.tgz",
+      "integrity": "sha512-e6iCHWBFuV05EGo7v+pS9iepObXnJ9joms467gzi8ZjpKVb3ifha9M0Ja24Rd8JfvYpzjltsgDVtGFDvIg4hQQ==",
+      "requires": {
+        "global": "^4.3.0",
+        "mux.js": "4.3.2",
+        "video.js": "^5.17.0 || ^6.2.0",
+        "webwackify": "0.1.6"
+      }
+    },
+    "videojs-flash": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/videojs-flash/-/videojs-flash-2.2.1.tgz",
+      "integrity": "sha512-mHu6TD12EKkxMvr8tg4AcfV/DuVLff427nneoZom3N9Dd2bv0sJOWwdLPQH1v5BCuAuXAVuAOba56ovTl+G3tQ==",
+      "requires": {
+        "global": "^4.4.0",
+        "video.js": "^6 || ^7",
+        "videojs-swf": "5.4.2"
+      },
+      "dependencies": {
+        "global": {
+          "version": "4.4.0",
+          "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+          "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+          "requires": {
+            "min-document": "^2.19.0",
+            "process": "^0.11.10"
+          }
+        }
+      }
+    },
+    "videojs-font": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-2.1.0.tgz",
+      "integrity": "sha1-olkwpn9snPvyu4jay4xrRR8JM3k="
+    },
+    "videojs-hotkeys": {
+      "version": "0.2.25",
+      "resolved": "https://registry.npmjs.org/videojs-hotkeys/-/videojs-hotkeys-0.2.25.tgz",
+      "integrity": "sha512-XgMjWiqGlmAjuHtpP529A2voVh++z46FSD0XeSy+65yeuTZOd+w2CJmfrL4jPpGm+MME5l9lOLfVpoEeDaBa1Q=="
+    },
+    "videojs-ie8": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/videojs-ie8/-/videojs-ie8-1.1.2.tgz",
+      "integrity": "sha1-oj09hgitcZK2nGB3/E64SJmNNdk=",
+      "requires": {
+        "es5-shim": "^4.5.1"
+      }
+    },
+    "videojs-swf": {
+      "version": "5.4.2",
+      "resolved": "https://registry.npmjs.org/videojs-swf/-/videojs-swf-5.4.2.tgz",
+      "integrity": "sha512-FGg+Csioa8/A/EacvFefBdb9Z0rSiMlheHDunZnN3xXfUF43jvjawcWFQnZvrv1Cs1nE1LBrHyUZjF7j2mKOLw=="
+    },
+    "videojs-vtt.js": {
+      "version": "0.12.6",
+      "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.12.6.tgz",
+      "integrity": "sha512-XFXeGBQiljnElMhwCcZst0RDbZn2n8LU7ZScXryd3a00OaZsHAjdZu/7/RdSr7Z1jHphd45FnOvOQkGK4YrWCQ==",
+      "requires": {
+        "global": "^4.3.1"
+      }
+    },
+    "vm-browserify": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz",
+      "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==",
+      "dev": true
+    },
+    "vue": {
+      "version": "2.6.10",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz",
+      "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ=="
+    },
+    "vue-hot-reload-api": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz",
+      "integrity": "sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==",
+      "dev": true
+    },
+    "vue-i18n": {
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.14.0.tgz",
+      "integrity": "sha512-utI1Rvc8i+fmmUkkKRmHaf4QQ87s7rGVL5ZZLsKvvRzmgaIr1l+GfGxxxRmsZxHpPlgeB8OxoUZ4noqZgDL6xg=="
+    },
+    "vue-lazyload": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/vue-lazyload/-/vue-lazyload-1.2.3.tgz",
+      "integrity": "sha512-DC0ZwxanbRhx79tlA3zY5OYJkH8FYp3WBAnAJbrcuoS8eye1P73rcgAZhyxFSPUluJUTelMB+i/+VkNU/qVm7g=="
+    },
+    "vue-loader": {
+      "version": "15.7.0",
+      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.7.0.tgz",
+      "integrity": "sha512-x+NZ4RIthQOxcFclEcs8sXGEWqnZHodL2J9Vq+hUz+TDZzBaDIh1j3d9M2IUlTjtrHTZy4uMuRdTi8BGws7jLA==",
+      "dev": true,
+      "requires": {
+        "@vue/component-compiler-utils": "^2.5.1",
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.1.0",
+        "vue-hot-reload-api": "^2.3.0",
+        "vue-style-loader": "^4.1.0"
+      }
+    },
+    "vue-router": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.2.tgz",
+      "integrity": "sha512-WssQEHSEvIS1/CI4CO2T8LJdoK4Q9Ngox28K7FDNMTfzNTk2WS5D0dDlqYCaPG+AG4Z8wJkn1KrBc7AhspZJUQ=="
+    },
+    "vue-style-loader": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz",
+      "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==",
+      "dev": true,
+      "requires": {
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.0.2"
+      }
+    },
+    "vue-template-compiler": {
+      "version": "2.6.10",
+      "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz",
+      "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==",
+      "dev": true,
+      "requires": {
+        "de-indent": "^1.0.2",
+        "he": "^1.1.0"
+      }
+    },
+    "vue-template-es2015-compiler": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz",
+      "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
+      "dev": true
+    },
+    "vue-video-player": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/vue-video-player/-/vue-video-player-5.0.2.tgz",
+      "integrity": "sha512-IZXeRGGSX4YIp54G0Q5cB7iqh6Ok6Dpa2jRkjdyvMWw7MShJuh54/d5QNb1CZ+CvZUzX/TH7osnpir7mBNcFvQ==",
+      "requires": {
+        "object-assign": "^4.1.1",
+        "video.js": "^6.6.0",
+        "videojs-contrib-hls": "^5.12.2",
+        "videojs-flash": "^2.1.0",
+        "videojs-hotkeys": "^0.2.20"
+      }
+    },
+    "vuex": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.1.tgz",
+      "integrity": "sha512-ER5moSbLZuNSMBFnEBVGhQ1uCBNJslH9W/Dw2W7GZN23UQA69uapP5GTT9Vm8Trc0PzBSVt6LzF3hGjmv41xcg=="
+    },
+    "vuex-persistedstate": {
+      "version": "2.5.4",
+      "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-2.5.4.tgz",
+      "integrity": "sha512-XYJhKIwO+ZVlTaXyxKxnplrJ88Fnvk5aDw753bxzRw5/yMKLQ6lq9CDCBex2fwZaQcLibhtgJOxGCHjy9GLSlQ==",
+      "requires": {
+        "deepmerge": "^2.1.0",
+        "shvl": "^1.3.0"
+      }
+    },
+    "vux": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npmjs.org/vux/-/vux-2.9.2.tgz",
+      "integrity": "sha512-Ve8PabP4U2R10GZZPFXMa6fXxk5n2OBr0VSlBcSA/aavCSe2E4hR6Jzllg5jObvmUuhLSBP/wq8Ko+2Ik+O0nA==",
+      "requires": {
+        "@antv/f2": "^3.1.4-beta.2",
+        "array-filter": "^1.0.0",
+        "array-find": "^1.0.0",
+        "array-map": "^0.0.0",
+        "array-shuffle": "^1.0.1",
+        "autosize": "^3.0.20",
+        "axios": "^0.15.3",
+        "big.js": "^3.1.3",
+        "blueimp-md5": "^2.6.0",
+        "countup.js": "^1.8.1",
+        "fastclick": "^1.0.6",
+        "lodash.debounce": "^4.0.8",
+        "lodash.throttle": "^4.1.1",
+        "object-assign": "^4.1.0",
+        "qr.js": "0.0.0",
+        "shake.js": "^1.2.2",
+        "validator": "^9.3.0",
+        "vanilla-masker": "^1.2.0",
+        "vux-blazy": "^1.6.4",
+        "vux-xscroll": "^3.1.10",
+        "x-photoswipe": "^4.1.3-rc.1"
+      },
+      "dependencies": {
+        "axios": {
+          "version": "0.15.3",
+          "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz",
+          "integrity": "sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=",
+          "requires": {
+            "follow-redirects": "1.0.0"
+          }
+        },
+        "big.js": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+          "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q=="
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "follow-redirects": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz",
+          "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=",
+          "requires": {
+            "debug": "^2.2.0"
+          }
+        }
+      }
+    },
+    "vux-blazy": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmjs.org/vux-blazy/-/vux-blazy-1.6.4.tgz",
+      "integrity": "sha1-4zBz2QLgo4RO8aRjzOPKLgqrR78="
+    },
+    "vux-loader": {
+      "version": "1.2.9",
+      "resolved": "https://registry.npmjs.org/vux-loader/-/vux-loader-1.2.9.tgz",
+      "integrity": "sha512-AjaD08eyeflQgGwAVJjcwA245h2hTJgXR5pRfLajgmIeEXpbzXs41FnuKLig5U2EQpYyMJ7/f/2Rdlr7cYrIOA==",
+      "dev": true,
+      "requires": {
+        "acorn": "^5.1.2",
+        "compare-versions": "^3.1.0",
+        "cssnano": "^3.7.4",
+        "draftlog": "^1.0.10",
+        "escodegen": "^1.9.0",
+        "inline-manifest-webpack-plugin": "^3.0.1",
+        "js-yaml": "^3.6.1",
+        "less": "^2.7.1",
+        "loader-utils": "^0.2.15",
+        "node-cli-config": "^0.0.1",
+        "parse5": "^3.0.2",
+        "progress-bar-webpack-plugin": "^1.9.3",
+        "strip-comments": "^0.4.4",
+        "strip-css-comments": "^3.0.0",
+        "touch": "^1.0.0",
+        "underscore": "^1.8.3",
+        "uuid": "^3.0.1",
+        "webpack-merge": "^1.1.2",
+        "webpack-sources": "^0.1.2"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "5.7.3",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+          "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+          "dev": true
+        },
+        "ajv": {
+          "version": "4.11.8",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+          "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "co": "^4.6.0",
+            "json-stable-stringify": "^1.0.1"
+          }
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "assert-plus": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+          "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+          "dev": true,
+          "optional": true
+        },
+        "autoprefixer": {
+          "version": "6.7.7",
+          "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
+          "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
+          "dev": true,
+          "requires": {
+            "browserslist": "^1.7.6",
+            "caniuse-db": "^1.0.30000634",
+            "normalize-range": "^0.1.2",
+            "num2fraction": "^1.2.2",
+            "postcss": "^5.2.16",
+            "postcss-value-parser": "^3.2.3"
+          }
+        },
+        "aws-sign2": {
+          "version": "0.6.0",
+          "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+          "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+          "dev": true,
+          "optional": true
+        },
+        "big.js": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+          "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+          "dev": true
+        },
+        "browserslist": {
+          "version": "1.7.7",
+          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+          "dev": true,
+          "requires": {
+            "caniuse-db": "^1.0.30000639",
+            "electron-to-chromium": "^1.2.7"
+          }
+        },
+        "caniuse-api": {
+          "version": "1.6.1",
+          "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz",
+          "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
+          "dev": true,
+          "requires": {
+            "browserslist": "^1.3.6",
+            "caniuse-db": "^1.0.30000529",
+            "lodash.memoize": "^4.1.2",
+            "lodash.uniq": "^4.5.0"
+          }
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "coa": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
+          "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
+          "dev": true,
+          "requires": {
+            "q": "^1.1.2"
+          }
+        },
+        "cssnano": {
+          "version": "3.10.0",
+          "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
+          "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
+          "dev": true,
+          "requires": {
+            "autoprefixer": "^6.3.1",
+            "decamelize": "^1.1.2",
+            "defined": "^1.0.0",
+            "has": "^1.0.1",
+            "object-assign": "^4.0.1",
+            "postcss": "^5.0.14",
+            "postcss-calc": "^5.2.0",
+            "postcss-colormin": "^2.1.8",
+            "postcss-convert-values": "^2.3.4",
+            "postcss-discard-comments": "^2.0.4",
+            "postcss-discard-duplicates": "^2.0.1",
+            "postcss-discard-empty": "^2.0.1",
+            "postcss-discard-overridden": "^0.1.1",
+            "postcss-discard-unused": "^2.2.1",
+            "postcss-filter-plugins": "^2.0.0",
+            "postcss-merge-idents": "^2.1.5",
+            "postcss-merge-longhand": "^2.0.1",
+            "postcss-merge-rules": "^2.0.3",
+            "postcss-minify-font-values": "^1.0.2",
+            "postcss-minify-gradients": "^1.0.1",
+            "postcss-minify-params": "^1.0.4",
+            "postcss-minify-selectors": "^2.0.4",
+            "postcss-normalize-charset": "^1.1.0",
+            "postcss-normalize-url": "^3.0.7",
+            "postcss-ordered-values": "^2.1.0",
+            "postcss-reduce-idents": "^2.2.2",
+            "postcss-reduce-initial": "^1.0.0",
+            "postcss-reduce-transforms": "^1.0.3",
+            "postcss-svgo": "^2.1.1",
+            "postcss-unique-selectors": "^2.0.2",
+            "postcss-value-parser": "^3.2.3",
+            "postcss-zindex": "^2.0.1"
+          }
+        },
+        "csso": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz",
+          "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
+          "dev": true,
+          "requires": {
+            "clap": "^1.0.9",
+            "source-map": "^0.5.3"
+          }
+        },
+        "esprima": {
+          "version": "2.7.3",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+          "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+          "dev": true
+        },
+        "form-data": {
+          "version": "2.1.4",
+          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+          "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "asynckit": "^0.4.0",
+            "combined-stream": "^1.0.5",
+            "mime-types": "^2.1.12"
+          }
+        },
+        "har-schema": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+          "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
+          "dev": true,
+          "optional": true
+        },
+        "har-validator": {
+          "version": "4.2.1",
+          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+          "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ajv": "^4.9.1",
+            "har-schema": "^1.0.5"
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "http-signature": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+          "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "assert-plus": "^0.2.0",
+            "jsprim": "^1.2.2",
+            "sshpk": "^1.7.0"
+          }
+        },
+        "is-svg": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
+          "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
+          "dev": true,
+          "requires": {
+            "html-comment-regex": "^1.1.0"
+          }
+        },
+        "json5": {
+          "version": "0.5.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+          "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+          "dev": true
+        },
+        "less": {
+          "version": "2.7.3",
+          "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz",
+          "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==",
+          "dev": true,
+          "requires": {
+            "errno": "^0.1.1",
+            "graceful-fs": "^4.1.2",
+            "image-size": "~0.5.0",
+            "mime": "^1.2.11",
+            "mkdirp": "^0.5.0",
+            "promise": "^7.1.1",
+            "request": "2.81.0",
+            "source-map": "^0.5.3"
+          }
+        },
+        "loader-utils": {
+          "version": "0.2.17",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+          "dev": true,
+          "requires": {
+            "big.js": "^3.1.3",
+            "emojis-list": "^2.0.0",
+            "json5": "^0.5.0",
+            "object-assign": "^4.0.1"
+          }
+        },
+        "normalize-url": {
+          "version": "1.9.1",
+          "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+          "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+          "dev": true,
+          "requires": {
+            "object-assign": "^4.0.1",
+            "prepend-http": "^1.0.0",
+            "query-string": "^4.1.0",
+            "sort-keys": "^1.0.0"
+          }
+        },
+        "oauth-sign": {
+          "version": "0.8.2",
+          "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+          "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+          "dev": true,
+          "optional": true
+        },
+        "performance-now": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+          "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
+          "dev": true,
+          "optional": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "postcss-calc": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz",
+          "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.2",
+            "postcss-message-helpers": "^2.0.0",
+            "reduce-css-calc": "^1.2.6"
+          }
+        },
+        "postcss-colormin": {
+          "version": "2.2.2",
+          "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz",
+          "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
+          "dev": true,
+          "requires": {
+            "colormin": "^1.0.5",
+            "postcss": "^5.0.13",
+            "postcss-value-parser": "^3.2.3"
+          }
+        },
+        "postcss-convert-values": {
+          "version": "2.6.1",
+          "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz",
+          "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.11",
+            "postcss-value-parser": "^3.1.2"
+          }
+        },
+        "postcss-discard-comments": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz",
+          "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.14"
+          }
+        },
+        "postcss-discard-duplicates": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz",
+          "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.4"
+          }
+        },
+        "postcss-discard-empty": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz",
+          "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.14"
+          }
+        },
+        "postcss-discard-overridden": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz",
+          "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.16"
+          }
+        },
+        "postcss-merge-longhand": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz",
+          "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.4"
+          }
+        },
+        "postcss-merge-rules": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz",
+          "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
+          "dev": true,
+          "requires": {
+            "browserslist": "^1.5.2",
+            "caniuse-api": "^1.5.2",
+            "postcss": "^5.0.4",
+            "postcss-selector-parser": "^2.2.2",
+            "vendors": "^1.0.0"
+          }
+        },
+        "postcss-minify-font-values": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz",
+          "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
+          "dev": true,
+          "requires": {
+            "object-assign": "^4.0.1",
+            "postcss": "^5.0.4",
+            "postcss-value-parser": "^3.0.2"
+          }
+        },
+        "postcss-minify-gradients": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz",
+          "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.12",
+            "postcss-value-parser": "^3.3.0"
+          }
+        },
+        "postcss-minify-params": {
+          "version": "1.2.2",
+          "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz",
+          "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
+          "dev": true,
+          "requires": {
+            "alphanum-sort": "^1.0.1",
+            "postcss": "^5.0.2",
+            "postcss-value-parser": "^3.0.2",
+            "uniqs": "^2.0.0"
+          }
+        },
+        "postcss-minify-selectors": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz",
+          "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
+          "dev": true,
+          "requires": {
+            "alphanum-sort": "^1.0.2",
+            "has": "^1.0.1",
+            "postcss": "^5.0.14",
+            "postcss-selector-parser": "^2.0.0"
+          }
+        },
+        "postcss-normalize-charset": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz",
+          "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.5"
+          }
+        },
+        "postcss-normalize-url": {
+          "version": "3.0.8",
+          "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz",
+          "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
+          "dev": true,
+          "requires": {
+            "is-absolute-url": "^2.0.0",
+            "normalize-url": "^1.4.0",
+            "postcss": "^5.0.14",
+            "postcss-value-parser": "^3.2.3"
+          }
+        },
+        "postcss-ordered-values": {
+          "version": "2.2.3",
+          "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz",
+          "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.4",
+            "postcss-value-parser": "^3.0.1"
+          }
+        },
+        "postcss-reduce-initial": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz",
+          "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.4"
+          }
+        },
+        "postcss-reduce-transforms": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz",
+          "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
+          "dev": true,
+          "requires": {
+            "has": "^1.0.1",
+            "postcss": "^5.0.8",
+            "postcss-value-parser": "^3.0.1"
+          }
+        },
+        "postcss-selector-parser": {
+          "version": "2.2.3",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
+          "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
+          "dev": true,
+          "requires": {
+            "flatten": "^1.0.2",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        },
+        "postcss-svgo": {
+          "version": "2.1.6",
+          "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz",
+          "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
+          "dev": true,
+          "requires": {
+            "is-svg": "^2.0.0",
+            "postcss": "^5.0.14",
+            "postcss-value-parser": "^3.2.3",
+            "svgo": "^0.7.0"
+          }
+        },
+        "postcss-unique-selectors": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz",
+          "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
+          "dev": true,
+          "requires": {
+            "alphanum-sort": "^1.0.1",
+            "postcss": "^5.0.4",
+            "uniqs": "^2.0.0"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        },
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true,
+          "optional": true
+        },
+        "qs": {
+          "version": "6.4.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+          "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
+          "dev": true,
+          "optional": true
+        },
+        "request": {
+          "version": "2.81.0",
+          "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
+          "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "aws-sign2": "~0.6.0",
+            "aws4": "^1.2.1",
+            "caseless": "~0.12.0",
+            "combined-stream": "~1.0.5",
+            "extend": "~3.0.0",
+            "forever-agent": "~0.6.1",
+            "form-data": "~2.1.1",
+            "har-validator": "~4.2.1",
+            "hawk": "~3.1.3",
+            "http-signature": "~1.1.0",
+            "is-typedarray": "~1.0.0",
+            "isstream": "~0.1.2",
+            "json-stringify-safe": "~5.0.1",
+            "mime-types": "~2.1.7",
+            "oauth-sign": "~0.8.1",
+            "performance-now": "^0.2.0",
+            "qs": "~6.4.0",
+            "safe-buffer": "^5.0.1",
+            "stringstream": "~0.0.4",
+            "tough-cookie": "~2.3.0",
+            "tunnel-agent": "^0.6.0",
+            "uuid": "^3.0.0"
+          }
+        },
+        "source-list-map": {
+          "version": "0.1.8",
+          "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
+          "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        },
+        "svgo": {
+          "version": "0.7.2",
+          "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz",
+          "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
+          "dev": true,
+          "requires": {
+            "coa": "~1.0.1",
+            "colors": "~1.1.2",
+            "csso": "~2.3.1",
+            "js-yaml": "~3.7.0",
+            "mkdirp": "~0.5.1",
+            "sax": "~1.2.1",
+            "whet.extend": "~0.9.9"
+          },
+          "dependencies": {
+            "js-yaml": {
+              "version": "3.7.0",
+              "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
+              "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
+              "dev": true,
+              "requires": {
+                "argparse": "^1.0.7",
+                "esprima": "^2.6.0"
+              }
+            }
+          }
+        },
+        "tough-cookie": {
+          "version": "2.3.4",
+          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+          "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "punycode": "^1.4.1"
+          }
+        },
+        "webpack-merge": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-1.1.2.tgz",
+          "integrity": "sha1-SfKmi6X9NLsTwzjBhMcCjZOENDI=",
+          "dev": true,
+          "requires": {
+            "lodash.clonedeep": "^4.5.0",
+            "lodash.differencewith": "^4.5.0",
+            "lodash.isequal": "^4.4.0",
+            "lodash.isfunction": "^3.0.8",
+            "lodash.isplainobject": "^4.0.6",
+            "lodash.mergewith": "^4.6.0",
+            "lodash.unionwith": "^4.6.0"
+          }
+        },
+        "webpack-sources": {
+          "version": "0.1.5",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz",
+          "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=",
+          "dev": true,
+          "requires": {
+            "source-list-map": "~0.1.7",
+            "source-map": "~0.5.3"
+          }
+        }
+      }
+    },
+    "vux-xscroll": {
+      "version": "3.1.12",
+      "resolved": "https://registry.npmjs.org/vux-xscroll/-/vux-xscroll-3.1.12.tgz",
+      "integrity": "sha1-41Ln+dxfn+6SU9szHJZ91Ws7yVA="
+    },
+    "watchpack": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
+      "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+      "dev": true,
+      "requires": {
+        "chokidar": "^2.0.2",
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0"
+      }
+    },
+    "wbuf": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+      "dev": true,
+      "requires": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "webpack": {
+      "version": "4.39.2",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.2.tgz",
+      "integrity": "sha512-AKgTfz3xPSsEibH00JfZ9sHXGUwIQ6eZ9tLN8+VLzachk1Cw2LVmy+4R7ZiwTa9cZZ15tzySjeMui/UnSCAZhA==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.8.5",
+        "@webassemblyjs/helper-module-context": "1.8.5",
+        "@webassemblyjs/wasm-edit": "1.8.5",
+        "@webassemblyjs/wasm-parser": "1.8.5",
+        "acorn": "^6.2.1",
+        "ajv": "^6.10.2",
+        "ajv-keywords": "^3.4.1",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^4.1.0",
+        "eslint-scope": "^4.0.3",
+        "json-parse-better-errors": "^1.0.2",
+        "loader-runner": "^2.4.0",
+        "loader-utils": "^1.2.3",
+        "memory-fs": "^0.4.1",
+        "micromatch": "^3.1.10",
+        "mkdirp": "^0.5.1",
+        "neo-async": "^2.6.1",
+        "node-libs-browser": "^2.2.1",
+        "schema-utils": "^1.0.0",
+        "tapable": "^1.1.3",
+        "terser-webpack-plugin": "^1.4.1",
+        "watchpack": "^1.6.0",
+        "webpack-sources": "^1.4.1"
+      }
+    },
+    "webpack-cli": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.6.tgz",
+      "integrity": "sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==",
+      "dev": true,
+      "requires": {
+        "chalk": "2.4.2",
+        "cross-spawn": "6.0.5",
+        "enhanced-resolve": "4.1.0",
+        "findup-sync": "3.0.0",
+        "global-modules": "2.0.0",
+        "import-local": "2.0.0",
+        "interpret": "1.2.0",
+        "loader-utils": "1.2.3",
+        "supports-color": "6.1.0",
+        "v8-compile-cache": "2.0.3",
+        "yargs": "13.2.4"
+      },
+      "dependencies": {
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "webpack-dev-middleware": {
+      "version": "3.7.0",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz",
+      "integrity": "sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==",
+      "dev": true,
+      "requires": {
+        "memory-fs": "^0.4.1",
+        "mime": "^2.4.2",
+        "range-parser": "^1.2.1",
+        "webpack-log": "^2.0.0"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "2.4.4",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+          "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+          "dev": true
+        }
+      }
+    },
+    "webpack-dev-server": {
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.8.0.tgz",
+      "integrity": "sha512-Hs8K9yI6pyMvGkaPTeTonhD6JXVsigXDApYk9JLW4M7viVBspQvb1WdAcWxqtmttxNW4zf2UFLsLNe0y87pIGQ==",
+      "dev": true,
+      "requires": {
+        "ansi-html": "0.0.7",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.1.6",
+        "compression": "^1.7.4",
+        "connect-history-api-fallback": "^1.6.0",
+        "debug": "^4.1.1",
+        "del": "^4.1.1",
+        "express": "^4.17.1",
+        "html-entities": "^1.2.1",
+        "http-proxy-middleware": "^0.19.1",
+        "import-local": "^2.0.0",
+        "internal-ip": "^4.3.0",
+        "ip": "^1.1.5",
+        "is-absolute-url": "^3.0.0",
+        "killable": "^1.0.1",
+        "loglevel": "^1.6.3",
+        "opn": "^5.5.0",
+        "p-retry": "^3.0.1",
+        "portfinder": "^1.0.21",
+        "schema-utils": "^1.0.0",
+        "selfsigned": "^1.10.4",
+        "semver": "^6.3.0",
+        "serve-index": "^1.9.1",
+        "sockjs": "0.3.19",
+        "sockjs-client": "1.3.0",
+        "spdy": "^4.0.1",
+        "strip-ansi": "^3.0.1",
+        "supports-color": "^6.1.0",
+        "url": "^0.11.0",
+        "webpack-dev-middleware": "^3.7.0",
+        "webpack-log": "^2.0.0",
+        "ws": "^6.2.1",
+        "yargs": "12.0.5"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "cliui": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+          "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+          "dev": true,
+          "requires": {
+            "string-width": "^2.1.1",
+            "strip-ansi": "^4.0.0",
+            "wrap-ansi": "^2.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "4.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "get-caller-file": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+          "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+          "dev": true
+        },
+        "is-absolute-url": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.0.tgz",
+          "integrity": "sha512-3OkP8XrM2Xq4/IxsJnClfMp3OaM3TAatLPLKPeWcxLBTrpe6hihwtX+XZfJTcXg/FTRi4qjy0y/C5qiyNxY24g==",
+          "dev": true
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        },
+        "require-main-filename": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+          "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+          "dev": true
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "4.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "wrap-ansi": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+          "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+          "dev": true,
+          "requires": {
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1"
+          },
+          "dependencies": {
+            "is-fullwidth-code-point": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+              "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+              "dev": true,
+              "requires": {
+                "number-is-nan": "^1.0.0"
+              }
+            },
+            "string-width": {
+              "version": "1.0.2",
+              "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+              "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+              "dev": true,
+              "requires": {
+                "code-point-at": "^1.0.0",
+                "is-fullwidth-code-point": "^1.0.0",
+                "strip-ansi": "^3.0.0"
+              }
+            }
+          }
+        },
+        "yargs": {
+          "version": "12.0.5",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+          "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^4.0.0",
+            "decamelize": "^1.2.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^3.0.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1 || ^4.0.0",
+            "yargs-parser": "^11.1.1"
+          }
+        },
+        "yargs-parser": {
+          "version": "11.1.1",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+          "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
+      }
+    },
+    "webpack-log": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
+      "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+      "dev": true,
+      "requires": {
+        "ansi-colors": "^3.0.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "webpack-merge": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz",
+      "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.5"
+      }
+    },
+    "webpack-sources": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+      "dev": true,
+      "requires": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "websocket-driver": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
+      "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==",
+      "dev": true,
+      "requires": {
+        "http-parser-js": ">=0.4.0 <0.4.11",
+        "safe-buffer": ">=5.1.0",
+        "websocket-extensions": ">=0.1.1"
+      }
+    },
+    "websocket-extensions": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+      "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+      "dev": true
+    },
+    "webwackify": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/webwackify/-/webwackify-0.1.6.tgz",
+      "integrity": "sha512-pGcw1T3HpNnM/UTRQqqRkkkzythSLts05mB+7Gr00B+0VbL0m39dFL5g20rSIEUt9Wrpw+/8k+snxRlUFHhcqA=="
+    },
+    "whet.extend": {
+      "version": "0.9.9",
+      "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
+      "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=",
+      "dev": true
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+    },
+    "wordwrap": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "dev": true
+    },
+    "worker-farm": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
+      "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+      "dev": true,
+      "requires": {
+        "errno": "~0.1.7"
+      }
+    },
+    "wrap-ansi": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+      "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+      "requires": {
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    },
+    "ws": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+      "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+      "dev": true,
+      "requires": {
+        "async-limiter": "~1.0.0"
+      }
+    },
+    "x-photoswipe": {
+      "version": "4.1.3-rc.1",
+      "resolved": "https://registry.npmjs.org/x-photoswipe/-/x-photoswipe-4.1.3-rc.1.tgz",
+      "integrity": "sha512-ok+x+1ufLuBT9dfM5P2FcRefwNniQoVwwfBhGa5gLn8NrSTzNah2p4IElMLwzXuKLtyH4yb+z3IsdDef3FOL5A=="
+    },
+    "xhr": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.0.tgz",
+      "integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=",
+      "requires": {
+        "global": "~4.3.0",
+        "is-function": "^1.0.1",
+        "parse-headers": "^2.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+    },
+    "y18n": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+    },
+    "yallist": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
+      "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+      "dev": true
+    },
+    "yargs": {
+      "version": "13.2.4",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
+      "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
+      "requires": {
+        "cliui": "^5.0.0",
+        "find-up": "^3.0.0",
+        "get-caller-file": "^2.0.1",
+        "os-locale": "^3.1.0",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^3.0.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^13.1.0"
+      }
+    },
+    "yargs-parser": {
+      "version": "13.1.1",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+      "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..94a6bd2
--- /dev/null
+++ b/package.json
@@ -0,0 +1,68 @@
+{
+  "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": "小明丶",
+  "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.29.6",
+    "webpack-cli": "^3.2.3",
+    "webpack-dev-server": "^3.2.1",
+    "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",
+    "qrcode": "^1.4.1",
+    "vant": "^2.4.7",
+    "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"
+  ]
+}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..4177fb7
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,11 @@
+module.exports = {
+    plugins: {
+      'autoprefixer': {},
+      //默认不开启rem配置
+      'postcss-pxtorem': {
+        rootValue: 50,
+        mediaQuery:true, //允许在媒体查询中转换px
+        propList: ['*'],//px 大写 Px 就不会被转换
+      }
+    }
+  }
\ No newline at end of file
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..d961f79
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,140 @@
+<!--
+ * @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">
+    <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>
+        if(location.href.split('?')[1]){
+            if(location.href.split('?')[1].split('appToken=')[1]){
+                document.title = ''
+            }
+        }
+        if(window.sessionStorage.getItem("wxScore") && window.sessionStorage.getItem("wxScore") == '1'){
+            document.title = '和微分';
+        }
+        if(window.sessionStorage.getItem("chanSource") && window.sessionStorage.getItem("chanSource") == 'xml'){
+            document.title = '花呗分期';
+        }
+        if(window.sessionStorage.getItem("chanSource") && window.sessionStorage.getItem("chanSource") == 'xml'){
+                document.title = '花呗分期';
+        }else if(window.location.href.indexOf("chanSource=")>-1 ){
+            if(window.location.href.split("chanSource=")[1] == 'xml'){
+                document.title = '花呗分期';
+                window.sessionStorage.setItem("chanSource", 'xml');
+            }else{
+                if(window.sessionStorage.getItem("chanSource")!=null && window.sessionStorage.getItem("chanSource") == 'xml'){
+                    document.title = '花呗分期';
+                }
+            }
+        }else if(window.location.href.indexOf("wxScore=")>-1 ){
+            if(window.location.href.split("wxScore=")[1] == '1'){
+                document.title = '和微分';
+                window.sessionStorage.setItem("wxScore", '1');
+            }else{
+                if(window.sessionStorage.getItem("wxScore") && window.sessionStorage.getItem("wxScore") == '1'){
+                    document.title = '和微分';
+                }
+            }
+        }
+        (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="../src/utils/agreement1.js"></script>-->
+        <!--<script src="../src/utils/agreement2.js"></script>-->
+
+        <script src="static/agreement1.js"></script>
+        <script src="static/agreement2.js"></script>
+        <script src="static/agreement3.js"></script>
+        <script src="static/agreement4.js"></script>
+        <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://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>
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..5e81c26
--- /dev/null
+++ b/src/App.vue
@@ -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>
diff --git a/src/api/config.js b/src/api/config.js
new file mode 100644
index 0000000..c959f6e
--- /dev/null
+++ b/src/api/config.js
@@ -0,0 +1,174 @@
+/*
+ * @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('user_account')
+    localStorage.removeItem('user_pwd')
+    Store.commit(SET_USER_INFO,{})
+    Store.commit(SET_SESSION_ID,{})
+}
+
+// 错误处理
+const resolveError = {
+    999(message){
+        Notify(message || '网络异常,请稍后重试');
+    },
+    // 90040006
+    99(){
+        deleteCatchInfo()
+        Notify('登录超时,请重新登录!');
+        if(sessionStorage.isddxt==1){
+            router.push({
+                path:'/',
+                query:{
+                    platNo:'ddxt'
+                }
+            });
+        }else if(sessionStorage.appToken != undefined){
+            router.push({
+                path:'/app/home',
+                query:{
+                    appToken:sessionStorage.appToken,
+                    backUrl:sessionStorage.backUrl
+                }
+            });
+        }else{
+            router.push('/');
+        }
+
+
+    },
+    90040006(message){
+        deleteCatchInfo()
+        Notify(message || '登录超时,请重新登录!');
+        if(sessionStorage.isddxt==1){
+            router.push({
+                path:'/',
+                query:{
+                    platNo:'ddxt'
+                }
+            });
+        }else if(sessionStorage.appToken != undefined){
+            router.push({
+                path:'/app/home',
+                query:{
+                    appToken:sessionStorage.appToken,
+                    backUrl:sessionStorage.backUrl,
+                    wxScore:sessionStorage.wxScore
+                }
+            });
+        }else{
+            router.push({
+                path:'/',
+                query:{
+                    wxScore:sessionStorage.wxScore
+                }
+            });
+        }
+    },
+    // 密码错误
+    9990027(message){
+        Notify(message);
+        deleteCatchInfo()
+    },
+    // 密码错误
+    1340004(message){
+        Notify(message);
+        deleteCatchInfo()
+        if(sessionStorage.isddxt==1){
+            router.push({
+                path:'/',
+                query:{
+                    platNo:'ddxt'
+                }
+            });
+        }else{
+            router.push('/');
+        }
+    }
+}
+
+const $http = axios.create({
+    baseURL: '/sib',
+    timeout: 90000,
+    headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+    }
+})
+console.log($http.interceptors)
+// 添加请求拦截器
+$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;
diff --git a/src/api/index.js b/src/api/index.js
new file mode 100644
index 0000000..13911d0
--- /dev/null
+++ b/src/api/index.js
@@ -0,0 +1,577 @@
+/*
+ * @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 = {
+    ...oldapi,
+    // 获取微信配置
+    getTokenInfo(data) {
+        data.apploading = 1;
+        return $http.post('/wechat/getSign', data);
+    },
+    // 获取微信token
+    getWeChatUserInfo(data) {
+        return $http.post('/wechat/userInfo', data);
+    },
+    setUserOpenId(data) {
+        return Service.post('/wechat/binding', data);
+    },
+    //token登陆
+    loginByToken(data) {
+        return $http.post('/login/loginByToken', data);
+    },
+    loginByMerToken(data){
+        return $http.post('/login/loginByMerToken',data);
+    },
+    //登陆
+    login(data) {
+        return $http.post('/login/login', data);
+    },
+    //登出
+    logout(data) {
+        return $http.post('/login/logout', data);
+    },
+    // 获取角色列表
+    getRole(data) {
+        return $http.post('/user/getUserMgrInfo', data);
+    },
+    getAgencyMerList(data){
+        return $http.post('/user/getAgencyMerList',data)
+    },
+    // 获取用户信息
+    getPowerInfo(mgrId) {
+        return $http.post('/user/mgr/powerInfo', {
+            mgrId
+        });
+    },
+    // 账户管理——获取用户信息
+    getUserDetail(mgrId) {
+        return $http.post('/user/mgr/detail', {
+            mgrId
+        });
+    },
+    //修改密码
+    userUpdatePwd(data) {
+      return $http.post('/user/updatePwd', data);
+    },
+    //获取验证码
+    userSendMsg(data) {
+      return $http.post('/user/sendMsg', data);
+    },
+    //忘记密码
+      userForgetPwd(data) {
+        return $http.post('/user/forgetPwd', data);
+      },
+
+
+
+    // 获取地区列表
+    getArea() {
+        let data = {
+            apploading:1
+        };
+        return $http.post('/public/areaList',data);
+    },
+
+    // 获取机构拥有的地区列表
+    getOrgAreaInfo(orgType) {
+        let data = {
+            apploading:1,
+            orgType
+        };
+        return  $http.post('/public/getOrgAreaInfo', data);
+    },
+    /**
+     * 渠道相关
+     */
+    //列表
+    getChannel() {
+        return $http.post('/chan/chanList');
+    },
+    //添加
+    addChan(data) {
+        return $http.post('/chan/addChan', data);
+    },
+    //切换状态
+    channSwitchStatus(data) {
+        return $http.post('/chan/switchStatus', data);
+    },
+    //更新渠道详细信息
+    updateChan(data) {
+        return $http.post('/chan/updateChan', data);
+    },
+    //查看/加载渠道详细信息
+    getChannelInfo(chanId) {
+        return $http.post('/chan/viewChanInf', {chanId});
+    },
+
+    // 获取审批列表
+    getAuditList(data) {
+        return $http.post('/merchant/auditList', data);
+    },
+    //审批商户
+    merAudit(data){
+        return $http.post('/merchant/audit', data);
+    },
+
+    // /merchant/auditList
+
+    getAuditType(data){
+        return $http.post('/merchant/auditType', data);
+    },
+    setAuditType(data){
+        return $http.post('/merchant/setAuditType', data);
+    },
+
+
+    /**
+     * 门店管理相关
+     */
+    //门店列表
+    storeStoreList(data) {
+        return $http.post('/store/storeList', data);
+    },
+    //门店详情
+    storeDtl(data) {
+        return $http.post('/store/dtl', data);
+    },
+    //编辑门店
+    storeEdit(data) {
+        return $http.post('/store/edit', data);
+    },
+    //添加门店
+    storeAdd(data) {
+        return $http.post('/store/add', data);
+    },
+
+
+
+
+
+
+
+
+
+
+    // 数据查询相关
+    //获取产品列表
+    getProductList(data) {
+        return $http.post('/prod/typeList', data);
+    },
+
+    // 获取订单初始化数据
+    getOrderInit(data) {
+        return $http.post('/order/init', data);
+    },
+
+
+
+
+
+    // 账号管理——列表
+    getMgrList(data) {
+        return $http.post('/user/getMgrList', data);
+    },
+    // 账户管理——冻结账户
+    userFreezeMgr(mgrId){
+        return $http.post('/user/freezeMgr', {mgrId});
+    },
+    // 账户管理——增加账户
+    userAdd(data){
+        return $http.post('/user/add', data);
+    },
+    // 账户管理——更新账户信息
+    userUpdate(data){
+        return $http.post('/user/update', data);
+    },
+
+    // 花呗订单列表
+    getHBList(data){
+        return $http.post('/order/hbList', data);
+    },
+    // 获取花呗订单详情
+    getHBDetail(orderId){
+        return $http.post('/order/hbOrderDtl', {orderId});
+    },
+    // 花呗订单——退款
+    hbOrderRefund(data){
+        return $http.post('/hbOrder/refund', data);
+    },
+    // 花呗——订单导出
+    hbExport(data){
+        return $http.post('/order/hbExport', data);
+    },
+    // 获取产品订单金额统计
+    getAmtReport(prodId){
+        return $http.post('/order/amtReport', {prodId});
+    },
+    //获取周次商户统计
+    getMerWeeksReport(){
+        return $http.post('/merchant/weeksReport');
+    },
+    // 商户统计
+    getMerReport(data){
+        return $http.post('/merchant/report',data);
+    },
+    // 获取订单统计
+    getOrderReport(data){
+        return $http.post('/order/report',data);
+    },
+
+
+
+
+
+
+    //获取商户列表
+    merList(data) {
+        return $http.post('/merchant/list', data);
+    },
+    //商户详情
+    merDetail(data) {
+        return $http.post('/merchant/merDetail', data);
+    },
+    //商户照片信息
+    merFile(data) {
+        return $http.post('/merchant/file', data);
+    },
+    //商户列表导出
+    merExport(data) {
+        return $http.post('/merchant/export', data);
+    },
+    getUnAuditNb(data){
+        return $http.post('/merchant/unAuditNb',data);
+    },
+    // 信用卡分期订单
+    getCreditOrderList(data){
+        return $http.post('/order/list', data);
+    },
+    // 信用卡分期 导出
+    creditExport(data){
+        return $http.post('/order/export', data);
+    },
+    // 信用卡分期 详情
+    getCreditDetail(orderId){
+        return $http.post('/order/orderDtl', {orderId});
+    },
+
+
+
+
+    // 手机分期订单列表
+    ljOrderList(data){
+        return $http.post('/ljOrder/list', data);
+    },
+    // 手机分期——导出
+    ljOrderExport(data){
+        return $http.post('/ljOrder/export', data);
+    },
+    // 智享花 ——订单
+    getHeydOrder(data){
+        return $http.post('/heydOrder/list', data);
+    },
+    // 智享花 ——导出
+    zxhExport(data){
+        return $http.post('/heydOrder/export', data);
+    },
+
+    // 信用购 ——订单
+    getXygOrder(data){
+        return $http.post('/xygOrder/list', data);
+    },
+    // 信用购 ——导出
+    xygExport(data){
+        return $http.post('/xygOrder/export', data);
+    },
+    getXygDetail(orderId){
+        return $http.post('/xygOrder/orderDtl', {orderId});
+    },
+    // 信用购 ——订单
+    getGzzjOrder(data){
+        return $http.post('/gzzjOrder/list', data);
+    },
+    // 信用购 ——导出
+    gzzjExport(data){
+        return $http.post('/gzzjOrder/export', data);
+    },
+    getGzzjDetail(orderId){
+        return $http.post('/gzzjOrder/orderDtl', {orderId});
+    },
+    // 获取商户收款订单列表
+    getDmfOrderList(data){
+        return $http.post('/dmfOrder/orderList', data);
+    },
+    //商户收款 详情
+    getDmfOrderDetail(orderId){
+        return $http.post('/dmfOrder/orderDetails', {orderId});
+    },
+    //商户收款 退款
+    facepay_refund(data){
+        return $http.post('/dmfOrder/refund', data);
+    },
+    // 商户收款 获取支付状态
+    facepay_getStatus(orderId){
+        return $http.post('/dmfOrder/findOrderSts', {orderId});
+    },
+
+    // 购机直降——订单列表
+    getGjzjList(data){
+        return $http.post('/gjzjOrder/list', data);
+    },
+    // 购机直降——详情
+    getGjzjDetail(orderId){
+        return $http.post('/gjzjOrder/orderDtl', {orderId});
+    },
+    // 购机直降——导出
+    gjzjExport(data){
+        return $http.post('/gjzjOrder/export', data);
+    },
+
+    getZxhDetail(orderId){
+        return $http.post('/heydOrder/orderDtl', {orderId});
+    },
+
+
+
+
+
+    //商户注册
+    merRegist(data) {
+        return $http.post('/user/regist', data);
+    },
+    // 商户筛选条件初始化
+    merInitFilter(data){
+        return $http.post('/merchant/initFilter', data);
+    },
+
+    // 模板列表
+    getTempList(data){
+        return $http.post('/temp/tempList', data);
+    },
+    // 模板 初始化数据
+    // getTempInit(){
+    //     return $http.post('/temp/init');
+    // },
+    getTempInit(data){
+        return $http.post('/tempManager/init',data);
+    },
+    // 模板详情
+    // getTempDetail(tempId){
+    //     return $http.post('/temp/detail',{tempId});
+    // },
+    getTempDetail(tempId){
+        return $http.post('/tempManager/detail',{tempId});
+    },
+    //模板——保存
+    // tempSave(data){
+    //     return $http.post('/temp/save',data);
+    // },
+    tempSave(data){
+        return $http.post('/tempManager/save',data);
+    },
+    tempManagerUpdate(data){
+        return $http.post('/tempManager/update',data)
+    },
+    //模板——商户保存
+    tempSaveMerTemp(data){
+        return $http.post('/temp/saveMerTemp',data);
+    },
+    getTempMerRef(data){
+        return $http.post('/temp/getTempMerRef',data);
+    },
+    tempGetMerRef(data){
+        return $http.post('/temp/getMerRef',data);
+    },
+    //模板——商户列表
+    getTempMerList(data){
+        return $http.post('/temp/tempMerList',data);
+    },
+    //模板 保存商户分配模板
+    saveMerListTemp(data){
+        return $http.post('/temp/saveMerListTemp',data);
+    },
+
+    //红包接口
+    redPacketInit(data){
+        return $http.post('/redPacket/init',data)
+    },
+    redPacketIncomeList(data){
+        return $http.post('/redPacket/incomeList',data)
+    },
+    redPacketExpendList(data){
+        return $http.post('/redPacket/expendList',data)
+    },
+    redPacketBindAliInfo(data){
+        return $http.post('/redPacket/bindAliInfo',data)
+    },
+    redPacketExpend(data){
+        return $http.post('/redPacket/expend',data)
+    },
+    //花呗合约机套餐信息获取
+    categoryList(data){
+        return $http.post('/contract/categoryList',data)
+    },
+    // 信用购花呗导出
+    xygOrderHbExport(data){
+        return $http.post('/xygOrder/hbExport',data)
+    },
+    // 信用购花呗列表获取
+    xygOrderHbList(data){
+        return $http.post('/xygOrder/hbList',data)
+    },
+    // 验证是否需要手动绑定
+    xygOrderCheckInfo(data){
+        return $http.post('/xygOrder/checkInfo',data)
+    },
+    //绑定信息
+    xygOrderBindInfo(data){
+        return $http.post('/xygOrder/bindInfo',data)
+    },
+    //信用购花呗创建订单
+    xygOrderCreateHbOrder(data){
+        return $http.post('/xygOrder/createHbOrder',data)
+    },
+    // 信用购花呗订单详情
+    xygOrderHbOrderDtl(data){
+        return $http.post('/xygOrder/hbOrderDtl',data)
+    },
+    // 信用购花呗 退款
+    xygOrderRefundHb(data){
+        return $http.post('/xygOrder/refundHb',data)
+    },
+
+    // 花呗间联接口
+    hbjlOrderList(data){
+        return $http.post('/hbjlOrder/list',data)
+    },
+    hbjlOrderInit(data){
+        return $http.post('/hbjlOrder/init',data)
+    },//创建订单初始化
+    hbjlOrderExport(data){
+        return $http.post('/hbjlOrder/export',data)
+    },
+    hbjlOrderTrial(data){
+        return $http.post('/hbjlOrder/trial',data)
+    },
+    hbjlOrderOrderDtl(data){
+        return $http.post('/hbjlOrder/orderDtl',data)
+    },
+    /**
+     * 通联接口
+     * **/
+    tltMerOpenInit(data){
+        return $http.post('/tlt/merOpen/init',data)
+    },//页面信息初始化
+    tltMerOpenOpen(data){
+        return $http.post('/tlt/merOpen/open',data)
+    },//商户开通
+    tltMerOpenFindOpenSts(data){
+        return $http.post('/tlt/merOpen/findOpenSts',data)
+    },//查询开通状态
+    tltMerOpenSendSmsCode(data){
+        return $http.post('/tlt/merOpen/sendSmsCode',data)
+    },//获取网商验证码
+    tltMerOpenReOpenMer(data){
+        return $http.post('/tlt/merOpen/reOpenMer',data)
+    },//重置开通状态
+    tltMerOpenQueryElectUrl(data){
+        return $http.post('/tlt/merOpen/queryElectUrl',data)
+    },//进件电子协议URL查询
+    tltMerOpenRepair(data){
+        return $http.post('/tlt/merOpen/repair',data)
+    },//商户资料补录
+    tltMerOpenPayAuth(data){
+        return $http.post('/tlt/merOpen/payAuth',data)
+    },//打款验证接口
+    /**
+     * 通联提现接口
+     * **/
+    tltWalletOpenStatus(data){
+        return $http.post('tlt/wallet/openStatus',data)
+    },
+    tltWalletInit(data){
+        return $http.post('/tlt/wallet/init',data)
+    },//钱包初始化
+    tltWalletSendSmsCode(data){
+        return $http.post('/tlt/wallet/sendSmsCode',data)
+    },//获取网商验证码
+    tltWalletWithdraw(data){
+        return $http.post('/tlt/wallet/withdraw',data)
+    },//提现
+    tltWalletWithdrawDetails(data){
+        return $http.post('/tlt/wallet/withdrawDetails',data)
+    },//提现记录
+    tltWalletWithdrawStatus(data){
+        return $http.post('/tlt/wallet/withdrawStatus',data)
+    },//提现状态
+    tltMerOpenSendAuthFile(data){
+        return $http.post('/tlt/merOpen/sendAuthFile',data)
+    },//获取授权书模板
+    // 风控订单接口
+    riskNum(data){
+        return $http.post('/risk/num',data)
+    },
+    riskInit(data){
+        return $http.post('/risk/init',data)
+    },
+    riskList(data){
+        return $http.post('/risk/list',data)
+    },
+    riskHandle(data){
+        return $http.post('/risk/handle',data)
+    },
+    riskExport(data){
+        return $http.post('/risk/export',data)
+    },
+    // 微信扫码登录
+    loginByOpenId(data){
+        return $http.post('/login/loginByOpenId',data)
+    },//openid登录
+    checkOpenIdIsBind(data){
+        return $http.post('/user/checkOpenIdIsBind',data)
+    },//判断是否绑定openId
+    userAddStoreManager(data){
+        return $http.post('/user/addStoreManager',data)
+    },//资料补充
+
+    // 商户收款接口
+    shskTypeList(data){
+        return $http.post('/prod/dmfTypeList',data)
+    },//获取支付方式列表
+    shskCalAmt(data){
+        return $http.post('/prod/calAmt',data)
+    },
+    shskProdFee(data){
+        return $http.post('/dmfOrder/prodFee',data)
+    },//获取支付方式费率
+
+    // 联通合约机
+    cuccOrderInit(data){
+        return $http.post('/cuccOrder/init',data)
+    },//初始化合约套餐
+    cuccOrderPreCreate(data){
+        return $http.post('/cuccOrder/preCreate',data)
+    },//订单预创建
+    cuccOrderList(data){
+        return $http.post('/cuccOrder/list',data)
+    },//订单列表
+    cuccOrderDetail(data){
+        return $http.post('cuccOrder/detail',data)
+    },//订单详情
+
+
+}
+
+export default {
+    install(Vue, opt) {
+        Vue.prototype.$api = api;
+    }
+}
diff --git a/src/api/oldapi.js b/src/api/oldapi.js
new file mode 100644
index 0000000..a432a61
--- /dev/null
+++ b/src/api/oldapi.js
@@ -0,0 +1,478 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-30 10:46:07
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-03 17:18:42
+ * @Description:
+ */
+import $http from './config';
+
+export default {
+    //创建订单
+    facepay_create(data) {
+        return $http.post('/dmfOrder/create', data);
+    },
+    //查询订单支付状态
+    facepay_getStatus(data) {
+        data.hiddenLoading = true;
+        return $http.post('/dmfOrder/findOrderSts', data);
+    },
+    //订单列表
+    facepay_orderList(data) {
+        return $http.post('/dmfOrder/orderList', data);
+    },
+    //订单 退款
+    facepay_refund(data) {
+        return $http.post('/dmfOrder/refund', data);
+    },
+    //订单详情
+    facepay_orderDetails(orderId) {
+        return $http.post('/dmfOrder/orderDetails', {orderId});
+    },
+
+    //订单列表导出
+    facepayOrderExport(data) {
+        return $http.post('/dmfOrder/export', data);
+    },
+
+    // return $http.post('/wechat/getSign', data);
+    prodList(data) {
+        return $http.post('/prod/typeList', data);
+    },
+    //新商户产品管理接口
+    prodManagerInit(data){
+        return $http.post('/prod/managerInit',data)
+    },
+    // 新商户数据页面获取列表接口
+    prodListTitle(data){
+        return $http.post('/prod/listTitle',data)
+    },
+    // 新门店主页获取业务数据
+    prodIndexTypeList(data){
+        return $http.post('/prod/indexTypeList',data)
+    },
+    // 花呗业务产品页面获取产品列表
+    prodHbProd(data){
+        return $http.post('/prod/hbProd',data)
+    },
+    storeProdList(data) {
+        return $http.post('/prod/storeTypeList', data);
+    },
+     walletUrl(data){
+        return $http.post('/prod/walletUrl', data);
+    },
+    hbLinesSMS(data){
+        return $http.post('/order/hbLinesSMS', data);
+    },
+    findTerms(data){
+        return $http.post('/prod/findTerms', data);
+    },
+    calAmt(data){
+        return $http.post('/prod/calAmt', data);
+    },
+    hbOrderInit(data) {
+        return $http.post('/hbOrder/init', data);
+    },
+    shtxOrderInit(data){
+        return $http.post('/shtxOrder/init',data)
+    },
+    shtxOrderCreate(data){
+        return $http.post('/shtxOrder/create',data)
+    },
+    getMonthMoney(data){
+        return $http.post('/shtxOrder/trial',data)
+    },
+    calcMonthMoney(data){
+        return $http.post('/hbOrder/trial', data);
+    },
+    hbOrderCreate(data) {
+        return $http.post('/hbOrder/create', data);
+    },
+    hbhyjCreate(data) {
+        return $http.post('/hbOrder/createMbl', data);
+    },
+    contractList(data) {
+        return $http.post('/contract/list', data);
+    },
+    hbOrderFindOrderSts(data){
+        return  $http.post('/hbOrder/findOrderSts', data);
+    },
+    shtxOrderFindOrderSts(data){
+        return  $http.post('/shtxOrder/findOrderSts', data);
+    },
+    getShtxDetail(data){
+        return $http.post('/shtxOrder/refund',data)
+    },
+    /**
+     * 手机分期相关
+     */
+    //订单创建
+    ljOrderCreate(data) {
+        return $http.post('/ljOrder/create', data);
+    },
+    //订单创建初始化
+    ljOrderCreateInit(data) {
+        return $http.post('/ljOrder/createInit', data);
+    },
+    //订单列表导出
+    ljOrderExport(data) {
+        return $http.post('/ljOrder/export', data);
+    },
+    //订单列表
+    ljOrderList(data) {
+        return $http.post('/ljOrder/list', data);
+    },
+    //订单详情
+    ljOrderOrderDtl(data) {
+        return $http.post('/ljOrder/orderDtl', data);
+    },
+    //订单创建试算
+    ljOrderTrial(data) {
+        return $http.post('/ljOrder/trial', data);
+    },
+
+
+    saveProtocol(data){
+        return $http.post('/gjzjOrder/uploadProtocol', data);
+    },
+
+    uploadFile(data){
+        return $http.post('/order/uploadFile', data);
+    },
+
+
+    prodRefInit(data) {
+        return $http.post('/prod/refInit', data);
+    },
+
+    prodSaveRef(data) {
+        return $http.post('/prod/saveRef', data);
+    },
+
+
+    h_contractList(data) {
+        return $http.post('/contract/list', data);
+    },
+
+
+
+    // 检查授权
+    checkAuth (data) {
+        return $http.post('/hbOpen/checkAuth', data);
+    },
+    // 花呗开户初始化
+    hbOpenInit (data) {
+        return $http.post('/hbOpen/init', data);
+    },
+    // 商户详情
+    merPayInfo(data) {
+        return $http.post('/merchant/merPayInfo', data);
+    },
+     // xyg花呗开户初始化
+     xygHbOpenInit (data) {
+        return $http.post('/hbOpen/xygInit', data);
+    },
+    // xyg花呗检查授权
+    xygCheckAuth(data){
+        return $http.post('/hbOpen/xygCheckAuth',data)
+    },
+    // xyg花呗开通
+    hbOpenXygOpen(data){
+        return $http.post('/hbOpen/xygOpen',data)
+    },
+    //照片上传
+    merUploadPhoto(data) {
+        return $http.post('/user/uploadPhoto', data);
+    },
+    // 信用购开通上传图片
+    uploadXygPhoto(data){
+        return $http.post('/user/uploadXygPhoto', data);
+    },
+    //照片上传
+    merUploadPhotoStore(data) {
+        return $http.post('/public/uploadFile', data);
+    },
+
+    heydInitOpen(data) {
+        return $http.post('/heydOpen/init', data);
+    },
+    // 开通
+    heydOpen(data) {
+        return $http.post('/heydOpen/open', data);
+    },
+    // 开通
+    heydInitStore(data) {
+        return $http.post('/heydOpen/initStore', data);
+    },
+    // 开通
+    heydInitMgr(data) {
+        return $http.post('/heydOpen/initMgr', data);
+    },
+    // 营业员开通
+    heydOpenMgr(data) {
+        return $http.post('/heydOpen/openMgr', data);
+    },
+    // 门店开通
+    heydOpenStore(data) {
+        return $http.post('/heydOpen/openStore', data);
+    },
+
+    getMerInfo(merId){
+        return $http.post('/heydOpen/merInfo', {merId});
+    },
+
+
+    h_uploadProtocol(data) {
+        return $http.post('/heydOrder/uploadProtocol', data);
+    },
+    h_getFileType(data={}){
+        return $http.post('/heydOrder/getFileType', data);
+    },
+    //退货
+    h_refund(data) {
+        return $http.post('/heydOrder/refund', data);
+    },
+    //海尔云贷经纬度保存
+    gpsAddr(data){
+        return $http.post('/heydOpen/updateMgrDeviceInfo',data);
+    },
+    gjzjOpenInit (data) {
+        return $http.post('/gjzjOpen/init', data);
+    },
+    // 商户开通
+    gjzjOpen (data) {
+        return $http.post('/gjzjOpen/open', data);
+    },
+
+    // 商户开通
+    hbOpenOpen (data) {
+        return $http.post('/hbOpen/open', data);
+    },
+    // 商户重新开通
+    hbOpenReOpen (data) {
+        return $http.post('/hbOpen/reOpen', data);
+    },
+    // 查询商户开通状态
+    findOpenSts (data) {
+        return $http.post('/hbOpen/findOpenSts', data);
+    },
+    getJson() {
+        return $http.get('/scene/json/childChanList.json');
+    },
+    getShsUrl() {
+        return $http.post('/shsOrder/getUrl');
+    },
+
+    //门店优化
+    indexInit(data){
+        return $http.post('/index/init',data);
+    },
+    indexDetail(data){
+        return $http.post('/index/bannerDetail',data);
+    },
+    //消息
+    noticeDetail(data){
+        return $http.post('/notice/detail',data);
+    },
+    noticeList(data){
+        return $http.post('/notice/list',data);
+    },
+
+    //商户
+    merchantDetail(data){
+        return $http.post('/merchant/merDetail',data);
+    },
+    merchantEdit(data){
+        return $http.post('/merchant/merEdit',data);
+    },
+    //逾期用户列表
+    overdueList(data){
+        return $http.post('/overdue/oveList',data);
+    },
+    //逾期详情
+    overdueDetail(data){
+        return $http.post('/overdue/oveDetail',data);
+    },
+    //逾期用户数
+    overdueNum(data){
+        return $http.post('/overdue/oveNum',data);
+    },
+    //保存跟进记录
+    overdueSaveOveFol(data){
+        return $http.post('/overdue/saveOveFol',data);
+    },
+    // 支付宝拉新
+    zfbLxSave(data){
+        return $http.post('/zfb/lx/save',data);
+    },
+    //支付宝拉新查询列表
+    zfbLxList(data){
+        return $http.post('/zfb/lx/list',data);
+    },
+    //支付宝拉新列表初始化
+    zfbLxInit(data){
+        return $http.post('/zfb/lx/init',data);
+    },
+    //支付宝拉新查询
+    zfbLxReport(data){
+        return $http.post('/zfb/lx/report',data);
+    },
+    //支付宝周数据统计
+    zfbLxWeekReport(data){
+        return $http.post('/zfb/lx/weekReport',data);
+    },
+    //支付宝数据导出
+    zfbLxExport(data){
+        return $http.post('/zfb/lx/export',data);
+    },
+    // 信用购接口开始
+
+    xygInitOpen(data) {
+        return $http.post('/xygOpen/init', data);
+    },
+    // 信用购开通
+    xygOpen(data) {
+        return $http.post('/xygOpen/open', data);
+    },
+    // 信用购开通
+    xygInitStore(data) {
+        return $http.post('/xygOpen/initStore', data);
+    },
+    // 信用购开通
+    xygInitMgr(data) {
+        return $http.post('/xygOpen/initMgr', data);
+    },
+    // 信用购营业员开通
+    xygOpenMgr(data) {
+        return $http.post('/xygOpen/openMgr', data);
+    },
+    // 信用购门店开通
+    xygOpenStore(data) {
+        return $http.post('/xygOpen/openStore', data);
+    },
+    getXygMerInfo(merId){
+        return $http.post('/xygOpen/merInfo', {merId});
+    },
+    getunhandingList(data){
+        return $http.post('xygOrder/unhandingList',data)
+    },
+    getGoodsTypeList(data){
+        return $http.post('xygOrder/createInit',data)
+    },
+    h_uploadXygProtocol(data) {
+        return $http.post('/xygOrder/uploadProtocol', data);
+    },
+    h_getXygFileType(data={}){
+        return $http.post('/xygOrder/getFileType', data);
+    },
+    //信用购退货
+    h_xygRefund(data) {
+        return $http.post('/xygOrder/refund', data);
+    },
+    //信用购经纬度保存
+    gpsXygAddr(data){
+        return $http.post('/xygOpen/updateMgrDeviceInfo',data);
+    },
+
+    // 信用购接口结束
+    //开通花呗省市区数据获取
+    getAliAreaList(data){
+        return $http.post('/public/aliAreaList',data);
+    },
+    // 获取通道
+    prodZfbVersion(data){
+        return $http.post('/prod/zfbVersion',data);
+    },
+    // 信用购花呗开通结果
+    findXygOpenSts(data){
+        return $http.post('/hbOpen/findXygOpenSts',data)
+    },
+    // xyg花呗开通详情获取
+    merXygPayInfo(data){
+        return $http.post('/merchant/merXygPayInfo',data)
+    },
+    // 门店管理分页
+    storeStoreList(data){
+        return $http.post('/store/storeList',data)
+    },
+    // 微信分创建
+    wxScoreCreate(data){
+        return $http.post('/cmccWxpay/create',data)
+    },
+    // 微信分订单详情
+    wxScoreDetail(data){
+        return $http.post('/cmccWxpay/detail',data)
+    },
+    // 微信分初始化
+    wxScoreInit(data){
+        return $http.post('/cmccWxpay/init',data)
+    },
+    // 微信分订单列表
+    wxScoreList(data){
+        return $http.post('/cmccWxpay/list',data)
+    },
+    // 微信分套餐列表
+    wxScoreContList(data){
+        return $http.post('/cmccWxpay/contList',data)
+    },
+    // 微信分返销
+    wxScoreRefund(data){
+        return $http.post('/cmccWxpay/refund',data)
+    },
+    // 微信分手机号验证
+    wxScoreVertify(data){
+        return $http.post('/cmccWxpay/verifyMblNo',data)
+    },
+    // 微信分手机号验证
+    wxScoreOrderStatus(data){
+        return $http.post('/cmccWxpay/orderStatus',data)
+    },
+    wxScoreExport(data){
+        return $http.post('/cmccWxpay/export', data);
+    },
+    //公众租机接口开始
+    gzzjInitOpen(data) {
+        return $http.post('/gzzjOpen/init', data);
+    },
+    // 开通
+    gzzjOpen(data) {
+        return $http.post('/gzzjOpen/open', data);
+    },
+    // 开通
+    gzzjInitStore(data) {
+        return $http.post('/gzzjOpen/initStore', data);
+    },
+    // 开通
+    gzzjInitMgr(data) {
+        return $http.post('/gzzjOpen/initMgr', data);
+    },
+    // 营业员开通
+    gzzjOpenMgr(data) {
+        return $http.post('/gzzjOpen/openMgr', data);
+    },
+    // 门店开通
+    gzzjOpenStore(data) {
+        return $http.post('/gzzjOpen/openStore', data);
+    },
+
+    getGzzjMerInfo(merId){
+        return $http.post('/gzzjOpen/merInfo', {merId});
+    },
+    gzzjOrderInit(data) {
+        return $http.post('/gzzjOrder/init', data);
+    },
+    gzzjOrderPrecreate(data) {
+        return $http.post('/gzzjOrder/preCreate', data);
+    },
+    gzzj_h_uploadProtocol(data) {
+        return $http.post('/gzzjOrder/uploadProtocol', data);
+    },
+    gzzj_h_getFileType(data={}){
+        return $http.post('/gzzjOrder/getFileType', data);
+    },
+    //退货
+    gzzj_h_refund(data) {
+        return $http.post('/gzzjOrder/refund', data);
+    },
+    //公众租机接口结束
+}
diff --git a/src/assets/img/1.png b/src/assets/img/1.png
new file mode 100644
index 0000000..7d492d7
--- /dev/null
+++ b/src/assets/img/1.png
Binary files differ
diff --git a/src/assets/img/2.png b/src/assets/img/2.png
new file mode 100644
index 0000000..3197eb8
--- /dev/null
+++ b/src/assets/img/2.png
Binary files differ
diff --git a/src/assets/img/3.png b/src/assets/img/3.png
new file mode 100644
index 0000000..eae2437
--- /dev/null
+++ b/src/assets/img/3.png
Binary files differ
diff --git a/src/assets/img/4.png b/src/assets/img/4.png
new file mode 100644
index 0000000..5a8d054
--- /dev/null
+++ b/src/assets/img/4.png
Binary files differ
diff --git a/src/assets/img/bg-qr-code.png b/src/assets/img/bg-qr-code.png
new file mode 100644
index 0000000..0748e2a
--- /dev/null
+++ b/src/assets/img/bg-qr-code.png
Binary files differ
diff --git a/src/assets/img/bg_code.png b/src/assets/img/bg_code.png
new file mode 100644
index 0000000..7908d74
--- /dev/null
+++ b/src/assets/img/bg_code.png
Binary files differ
diff --git a/src/assets/img/bg_top.png b/src/assets/img/bg_top.png
new file mode 100644
index 0000000..2fbcfe3
--- /dev/null
+++ b/src/assets/img/bg_top.png
Binary files differ
diff --git a/src/assets/img/circle-bottom.png b/src/assets/img/circle-bottom.png
new file mode 100644
index 0000000..83238d9
--- /dev/null
+++ b/src/assets/img/circle-bottom.png
Binary files differ
diff --git a/src/assets/img/circle-top.png b/src/assets/img/circle-top.png
new file mode 100644
index 0000000..1ec6a83
--- /dev/null
+++ b/src/assets/img/circle-top.png
Binary files differ
diff --git a/src/assets/img/gjzj.png b/src/assets/img/gjzj.png
new file mode 100644
index 0000000..672fc09
--- /dev/null
+++ b/src/assets/img/gjzj.png
Binary files differ
diff --git a/src/assets/img/hbjl.png b/src/assets/img/hbjl.png
new file mode 100644
index 0000000..5bf7116
--- /dev/null
+++ b/src/assets/img/hbjl.png
Binary files differ
diff --git a/src/assets/img/hyfq.png b/src/assets/img/hyfq.png
new file mode 100644
index 0000000..8336543
--- /dev/null
+++ b/src/assets/img/hyfq.png
Binary files differ
diff --git a/src/assets/img/idcardf.png b/src/assets/img/idcardf.png
new file mode 100644
index 0000000..0c0bc54
--- /dev/null
+++ b/src/assets/img/idcardf.png
Binary files differ
diff --git a/src/assets/img/idcardz.png b/src/assets/img/idcardz.png
new file mode 100644
index 0000000..7647289
--- /dev/null
+++ b/src/assets/img/idcardz.png
Binary files differ
diff --git a/src/assets/img/img_upload.png b/src/assets/img/img_upload.png
new file mode 100644
index 0000000..2644339
--- /dev/null
+++ b/src/assets/img/img_upload.png
Binary files differ
diff --git a/src/assets/img/imgti.png b/src/assets/img/imgti.png
new file mode 100644
index 0000000..5653d38
--- /dev/null
+++ b/src/assets/img/imgti.png
Binary files differ
diff --git a/src/assets/img/pic.png b/src/assets/img/pic.png
new file mode 100644
index 0000000..3c22470
--- /dev/null
+++ b/src/assets/img/pic.png
Binary files differ
diff --git a/src/assets/img/qqfk.png b/src/assets/img/qqfk.png
new file mode 100644
index 0000000..b6dbef8
--- /dev/null
+++ b/src/assets/img/qqfk.png
Binary files differ
diff --git a/src/assets/img/shs.png b/src/assets/img/shs.png
new file mode 100644
index 0000000..4d78712
--- /dev/null
+++ b/src/assets/img/shs.png
Binary files differ
diff --git a/src/assets/img/shsaom.png b/src/assets/img/shsaom.png
new file mode 100644
index 0000000..f2e1a2e
--- /dev/null
+++ b/src/assets/img/shsaom.png
Binary files differ
diff --git a/src/assets/img/shsk.png b/src/assets/img/shsk.png
new file mode 100644
index 0000000..8ada23f
--- /dev/null
+++ b/src/assets/img/shsk.png
Binary files differ
diff --git a/src/assets/img/shtx.png b/src/assets/img/shtx.png
new file mode 100644
index 0000000..16d30a3
--- /dev/null
+++ b/src/assets/img/shtx.png
Binary files differ
diff --git a/src/assets/img/spfx.png b/src/assets/img/spfx.png
new file mode 100644
index 0000000..a275cfd
--- /dev/null
+++ b/src/assets/img/spfx.png
Binary files differ
diff --git a/src/assets/img/tkimg.png b/src/assets/img/tkimg.png
new file mode 100644
index 0000000..1d72d1e
--- /dev/null
+++ b/src/assets/img/tkimg.png
Binary files differ
diff --git a/src/assets/img/wxfk.png b/src/assets/img/wxfk.png
new file mode 100644
index 0000000..4e2203d
--- /dev/null
+++ b/src/assets/img/wxfk.png
Binary files differ
diff --git a/src/assets/img/xshsk.png b/src/assets/img/xshsk.png
new file mode 100644
index 0000000..8228730
--- /dev/null
+++ b/src/assets/img/xshsk.png
Binary files differ
diff --git a/src/assets/img/xydk.png b/src/assets/img/xydk.png
new file mode 100644
index 0000000..25bf0dc
--- /dev/null
+++ b/src/assets/img/xydk.png
Binary files differ
diff --git a/src/assets/img/xyg.png b/src/assets/img/xyg.png
new file mode 100755
index 0000000..9b21225
--- /dev/null
+++ b/src/assets/img/xyg.png
Binary files differ
diff --git a/src/assets/img/xygpic.png b/src/assets/img/xygpic.png
new file mode 100644
index 0000000..57612ff
--- /dev/null
+++ b/src/assets/img/xygpic.png
Binary files differ
diff --git a/src/assets/img/xykdh.png b/src/assets/img/xykdh.png
new file mode 100644
index 0000000..5278a85
--- /dev/null
+++ b/src/assets/img/xykdh.png
Binary files differ
diff --git a/src/assets/img/ysffk.png b/src/assets/img/ysffk.png
new file mode 100644
index 0000000..e789351
--- /dev/null
+++ b/src/assets/img/ysffk.png
Binary files differ
diff --git a/src/assets/img/zfbfk.png b/src/assets/img/zfbfk.png
new file mode 100644
index 0000000..1a199b3
--- /dev/null
+++ b/src/assets/img/zfbfk.png
Binary files differ
diff --git a/src/assets/img/zxh.png b/src/assets/img/zxh.png
new file mode 100644
index 0000000..e58a98b
--- /dev/null
+++ b/src/assets/img/zxh.png
Binary files differ
diff --git a/src/assets/img/zxsyt.png b/src/assets/img/zxsyt.png
new file mode 100644
index 0000000..c32a7ac
--- /dev/null
+++ b/src/assets/img/zxsyt.png
Binary files differ
diff --git "a/src/assets/img/\346\224\257\344\273\230\344\270\255.png" "b/src/assets/img/\346\224\257\344\273\230\344\270\255.png"
new file mode 100644
index 0000000..4a6c7e9
--- /dev/null
+++ "b/src/assets/img/\346\224\257\344\273\230\344\270\255.png"
Binary files differ
diff --git "a/src/assets/img/\346\224\257\344\273\230\346\210\220\345\212\237.png" "b/src/assets/img/\346\224\257\344\273\230\346\210\220\345\212\237.png"
new file mode 100644
index 0000000..bb996f6
--- /dev/null
+++ "b/src/assets/img/\346\224\257\344\273\230\346\210\220\345\212\237.png"
Binary files differ
diff --git "a/src/assets/img/\350\266\205\346\227\266.png" "b/src/assets/img/\350\266\205\346\227\266.png"
new file mode 100644
index 0000000..72e3679
--- /dev/null
+++ "b/src/assets/img/\350\266\205\346\227\266.png"
Binary files differ
diff --git a/src/assets/imgs/business.png b/src/assets/imgs/business.png
new file mode 100644
index 0000000..0b2c429
--- /dev/null
+++ b/src/assets/imgs/business.png
Binary files differ
diff --git a/src/assets/imgs/credit.png b/src/assets/imgs/credit.png
new file mode 100644
index 0000000..21a76d2
--- /dev/null
+++ b/src/assets/imgs/credit.png
Binary files differ
diff --git a/src/assets/imgs/img_details.png b/src/assets/imgs/img_details.png
new file mode 100644
index 0000000..d8f9080
--- /dev/null
+++ b/src/assets/imgs/img_details.png
Binary files differ
diff --git a/src/assets/imgs/logo.png b/src/assets/imgs/logo.png
new file mode 100644
index 0000000..4419c20
--- /dev/null
+++ b/src/assets/imgs/logo.png
Binary files differ
diff --git a/src/assets/imgs/myHeader.png b/src/assets/imgs/myHeader.png
new file mode 100644
index 0000000..fa8a747
--- /dev/null
+++ b/src/assets/imgs/myHeader.png
Binary files differ
diff --git a/src/assets/imgs/nodata.png b/src/assets/imgs/nodata.png
new file mode 100644
index 0000000..9ea398f
--- /dev/null
+++ b/src/assets/imgs/nodata.png
Binary files differ
diff --git a/src/assets/imgs/openpic.png b/src/assets/imgs/openpic.png
new file mode 100644
index 0000000..dd78720
--- /dev/null
+++ b/src/assets/imgs/openpic.png
Binary files differ
diff --git a/src/assets/imgs/pic.png b/src/assets/imgs/pic.png
new file mode 100644
index 0000000..edc845c
--- /dev/null
+++ b/src/assets/imgs/pic.png
Binary files differ
diff --git a/src/assets/imgs/userImg.png b/src/assets/imgs/userImg.png
new file mode 100644
index 0000000..b1b84e5
--- /dev/null
+++ b/src/assets/imgs/userImg.png
Binary files differ
diff --git a/src/assets/imgs/yqpic.png b/src/assets/imgs/yqpic.png
new file mode 100644
index 0000000..3123494
--- /dev/null
+++ b/src/assets/imgs/yqpic.png
Binary files differ
diff --git a/src/assets/zfblx/1.png b/src/assets/zfblx/1.png
new file mode 100644
index 0000000..51ff3db
--- /dev/null
+++ b/src/assets/zfblx/1.png
Binary files differ
diff --git a/src/assets/zfblx/2.png b/src/assets/zfblx/2.png
new file mode 100644
index 0000000..fed081b
--- /dev/null
+++ b/src/assets/zfblx/2.png
Binary files differ
diff --git a/src/assets/zfblx/3.png b/src/assets/zfblx/3.png
new file mode 100644
index 0000000..22003ad
--- /dev/null
+++ b/src/assets/zfblx/3.png
Binary files differ
diff --git a/src/assets/zfblx/4.png b/src/assets/zfblx/4.png
new file mode 100644
index 0000000..64b7849
--- /dev/null
+++ b/src/assets/zfblx/4.png
Binary files differ
diff --git a/src/assets/zfblx/5.png b/src/assets/zfblx/5.png
new file mode 100644
index 0000000..3a363f8
--- /dev/null
+++ b/src/assets/zfblx/5.png
Binary files differ
diff --git a/src/assets/zfblx/bg.png b/src/assets/zfblx/bg.png
new file mode 100644
index 0000000..1050eb2
--- /dev/null
+++ b/src/assets/zfblx/bg.png
Binary files differ
diff --git a/src/assets/zfblx/bg2.png b/src/assets/zfblx/bg2.png
new file mode 100644
index 0000000..30e57b8
--- /dev/null
+++ b/src/assets/zfblx/bg2.png
Binary files differ
diff --git a/src/assets/zfblx/bg3.png b/src/assets/zfblx/bg3.png
new file mode 100644
index 0000000..76795bf
--- /dev/null
+++ b/src/assets/zfblx/bg3.png
Binary files differ
diff --git a/src/assets/zfblx/bg4.png b/src/assets/zfblx/bg4.png
new file mode 100644
index 0000000..91b1433
--- /dev/null
+++ b/src/assets/zfblx/bg4.png
Binary files differ
diff --git a/src/assets/zfblx/code.png b/src/assets/zfblx/code.png
new file mode 100644
index 0000000..cfe225c
--- /dev/null
+++ b/src/assets/zfblx/code.png
Binary files differ
diff --git a/src/assets/zfblx/code1.png b/src/assets/zfblx/code1.png
new file mode 100644
index 0000000..cfe225c
--- /dev/null
+++ b/src/assets/zfblx/code1.png
Binary files differ
diff --git a/src/assets/zfblx/course.png b/src/assets/zfblx/course.png
new file mode 100644
index 0000000..c3ff11b
--- /dev/null
+++ b/src/assets/zfblx/course.png
Binary files differ
diff --git a/src/assets/zfblx/zfb.png b/src/assets/zfblx/zfb.png
new file mode 100644
index 0000000..85c76b2
--- /dev/null
+++ b/src/assets/zfblx/zfb.png
Binary files differ
diff --git a/src/components/common/h-ipt.vue b/src/components/common/h-ipt.vue
new file mode 100644
index 0000000..ed60d1b
--- /dev/null
+++ b/src/components/common/h-ipt.vue
@@ -0,0 +1,112 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-01-15 09:50:23
+ * @LastEditors  : 小明丶
+ * @LastEditTime : 2020-01-15 16:51:51
+ * @Description: 
+ -->
+<template>
+    <div class="ipt-com">
+        <p>
+            <span>{{tit}}</span>
+            <span v-if="mustFill">*</span>
+        </p>
+        <input v-model="newVal" class="input" :class="[readonly ? 'readonly' : '']" :type="type" :maxlength="max"  :disabled="readonly"  :placeholder="placeholder"  >
+    </div>
+</template>
+<script>
+export default {
+    model: {
+      prop: 'value',
+      event: 'input'
+    },
+    props: {
+            tit:String,
+            mustFill:{
+                type:Boolean,
+                default:false
+            },
+            max:[String,Number],
+            type:{
+                type:String,
+                default:'text'
+            },
+            // 左侧文字
+            label:String,
+            //左侧图标类名
+            icon: String,
+            //是否展示右侧图标
+            isLink: {
+                type: Boolean,
+                default: false
+            },
+            // title文字加粗
+            isTitle:{
+                type: Boolean,
+                default: false
+            },
+            // 是否只读
+            readonly: {
+                type: Boolean,
+                default: false
+            },
+            // 是否禁用
+            disabled:{
+                type: Boolean,
+                default: false
+            },
+            // input 的vmodel
+            value:[String, Number],
+            placeholder:String,
+        },
+    computed: { 
+		newVal: {
+			get:function() {
+				return this.value; 
+			},
+			set:function(value) {
+			  	this.$emit('input', value);
+			}
+        },
+    },
+}
+</script>
+<style lang="less" scoped>
+    .ipt-com{
+        width: 100%;
+        margin-bottom: 16px;
+        p{
+            margin-bottom: 10px;
+            span:nth-of-type(1){
+                font-size: 13px;
+                color: #999999;
+            }
+            span:nth-of-type(2){
+                font-size: 13px;
+                color: #FF6666
+            }
+        }
+        input::-webkit-input-placeholder{color:#333333;}
+        input{
+            background-color: #F9FAFF;
+            width: 100%;
+            height: 40px;
+            border: 1px solid rgba(205,211,246,1);
+            border-radius:4px;
+            font-size: 14px;
+            color: #333;
+            padding-left: 8px;
+            display: inline-block;
+            box-sizing: border-box;
+        }
+        select{
+            background-color: #CDD3F6;
+            width: 100%;
+            height: 40px;
+            border: 1px solid rgba(205,211,246,1);
+            border-radius:4px;
+            font-size: 14px;
+            color: #333;
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/src/components/common/h-list.vue b/src/components/common/h-list.vue
new file mode 100644
index 0000000..782b6ca
--- /dev/null
+++ b/src/components/common/h-list.vue
@@ -0,0 +1,73 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-01-07 09:27:05
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-06-12 12:49:30
+ * @Description: 下滑分页组件 为保证不重复请求 使用时要根据显示内容的div高度确定一次返回条数,数据足够的情况下一次放回请装满容器
+ -->
+<template>
+    <div class="h-list" :style="{'height':height}">
+        <div class="box" ref="lisBox">
+            <slot></slot>
+            <p v-if="loading" class="load">加载中....</p>
+            <p v-if="finished" class="finish">没有更多了</p>
+        </div>
+   </div>
+</template>
+<script>
+export default {
+    /**
+     * defScroll-滚动条距离底部小于此距离执行加载,可根据需求调整距离(必传)
+     * finished-是否已经等到所有数据(必传)
+     * loading-是否显示加载(必传)
+     */
+    props:['defScroll','finished','loading','height'],
+    data() {
+        return {
+           previous:0,
+           now:0,
+        }
+    },
+    mounted(){
+        document.querySelector('.h-list').addEventListener('scroll', this.boxScroll,true)
+        //window.addEventListener('scroll', this.boxScroll,true)
+        console.log(this.defScroll)
+    },
+    methods:{
+        boxScroll(e){
+            this.now = new Date().getTime()
+            // 获取滚动条距离容器底部的距离
+            let scrollBottom =
+                e.target.scrollHeight -
+                e.target.scrollTop -
+                e.target.clientHeight;
+            if(this.now-this.previous > 100){
+                if(scrollBottom < this.defScroll && !this.finished && scrollBottom!=0){
+                    this.loading = true
+                    this.$emit('scroll')
+                    this.previous = this.now
+                    return
+                }else{
+                    this.loading = false
+                    return
+                }
+            }
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+.h-list::-webkit-scrollbar,.withdrawals-box::-webkit-scrollbar {
+        display: none;
+    }
+.h-list{
+    overflow: scroll;
+    height: 75vh;
+    background-color: #fff;
+    width: 100%;
+    padding-bottom: 20px;
+    .load,.finish{
+        text-align: center;
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/components/common/h-login-box.vue b/src/components/common/h-login-box.vue
new file mode 100644
index 0000000..040143c
--- /dev/null
+++ b/src/components/common/h-login-box.vue
@@ -0,0 +1,62 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-09 09:50:39
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-10 11:17:07
+ * @Description: 登录样式组件
+-->
+<template>
+    <div class="login-box">
+        <div class="h-login">
+            <van-icon :name="icon" :size="iconSize"/>
+            <input :type="type" v-model="caleValue" :maxlength="max" :placeholder="placeholder">
+            <slot name="right-content">
+                
+            </slot>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    name:'loginBox',
+    props:{
+        icon:String,
+        iconSize:String,
+        type:{
+            type:String,
+            default:'text'
+        },
+        max:Number,
+        placeholder:String,
+        value:[String,Number]
+    },
+    computed:{
+        caleValue:{
+            get(){
+                return this.value
+            },
+            set(newValue){
+                this.$emit('input', newValue)
+            }
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+.login-box{
+    &{
+        border-bottom:1px #ebedf0 solid ;
+        margin-bottom: 20px;
+    }
+    .h-login{
+        display: flex;
+        padding: 11px 16px ;
+    }
+    input{
+        border: 0;
+        outline: none;
+        background: #fff;
+        text-align: left;
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/components/common/h-staging-detail-dmf.vue b/src/components/common/h-staging-detail-dmf.vue
new file mode 100644
index 0000000..4f6c2b2
--- /dev/null
+++ b/src/components/common/h-staging-detail-dmf.vue
@@ -0,0 +1,188 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-27 11:08:39
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-08 14:34:06
+ * @Description: 产品已开通费率展示组件
+-->
+<template>
+  <div class="h-staging-detail-component">
+    <div class="info-box">
+      <div class="info-box-top">
+        <van-cell
+          :title="item.title"
+          :value="item.value"
+          title-class="tit-class"
+          value-class="val-class"
+          v-for="(item, index) in infoList"
+          :key="index"
+        />
+      </div>
+      <div class="info-box-bottom" v-if="rateList.length > 1">
+        <div class="left-cr" :style="{ background: bcColor }"></div>
+        <div class="right-cr" :style="{ background: bcColor }"></div>
+        <div class="rate-title">费率</div>
+        <div class="item" v-for="i in spanList" :key="i.termName">
+          <span v-for="(e, key) in i" :key="key">{{ e }}</span>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+/**
+ * infoList 展示信息数组 数组得再父组件按照 想要的数据先处理好顺序,形成一个对象数组,其实作用不大只是想减少下HTML代码
+ * hasTitle 费率是否含有标题栏  费率展示处是否展示标题栏  需要标题栏请手动在rateList第一项给入对应对象
+ * rateList 费率数组 费率数组全部传入即可
+ * rateListRule 费率数组规则  rateList里哪些要展示就在此数组定义 每一项为一个对象  keyName为rateList中需要展示的某一项的键名,type为特殊类型会添加% 期 这些后缀
+ * bcColor 小圆形的背景色,如果内容过少可以 小圆会呈现在上部有背景色处,所以给一个自定义颜色传入
+ * **/
+export default {
+  name: "h-staging-detail",
+  props: {
+    rateList: {
+      type: Array,
+    }, //费率数组
+    infoList: {
+      type: Array,
+    }, //展示信息数组
+    rateListRule: {
+      type: Array,
+    }, //费率数组规则
+    hasTitle: {
+      type: Boolean,
+      default: false,
+    }, //费率是否含有标题栏
+    bcColor: {
+      type: String,
+      default: "#f5f5f5",
+    }, //小圆形的背景色
+  },
+  computed: {
+    spanList() {
+      let arr = [];
+      this.rateList.forEach((item, index) => {
+        let obj = {};
+        this.rateListRule.forEach((e) => {
+          if (item.hasOwnProperty(e.keyName)) {
+            if (this.hasTitle) {
+              if (e.type == "isTerm") {
+                obj[e.keyName] =
+                  index == 0 ? item[e.keyName] : `${item[e.keyName]}期`;
+              }
+              if (e.type == "isRate") {
+                obj[e.keyName] =
+                  index == 0 ? item[e.keyName] : `${item[e.keyName]}%`;
+              } else {
+                obj[e.keyName] = item[e.keyName];
+              }
+            } else {
+              if (e.type == "isTerm") {
+                obj[e.keyName] = item[e.keyName] + "期";
+              }
+              if (e.type == "isRate") {
+                obj[e.keyName] = item[e.keyName] + "%";
+              } else {
+                obj[e.keyName] = item[e.keyName];
+              }
+            }
+          }
+        });
+        arr.push(obj);
+      });
+      return arr;
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+.h-staging-detail-component {
+  .info-box {
+    width: 92%;
+    background: rgba(255, 255, 255, 1);
+    box-shadow: 0px 18px 15px 0px rgba(40, 23, 92, 0.04);
+    border-radius: 3px;
+    position: absolute;
+    top: 96px;
+    left: 4%;
+    .info-box-bottom {
+      box-sizing: border-box;
+      padding: 0 17px 20px 17px;
+      position: relative;
+      background-color: #fff;
+      .left-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: #f5f5f7;
+        top: -7px;
+        left: -7px;
+      }
+      .right-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: #f5f5f7;
+        top: -7px;
+        right: -7px;
+      }
+      .rate-title {
+        padding: 20px 0 0 0;
+        font-size: 14px;
+        color: #999999;
+        font-weight: normal;
+        line-height: 1.6;
+        border-top: 1px dashed #e6e6e6;
+      }
+    }
+
+    .item {
+      width: 100%;
+      margin-top: 5px;
+      padding: 0 10px;
+      box-sizing: border-box;
+      display: inline-block;
+      background: rgba(249, 247, 252, 1);
+      height: 40px;
+      line-height: 40px;
+      display: flex;
+      justify-content: space-around;
+      span {
+        text-align: center;
+        display: inline-block;
+      }
+      span:nth-child(1) {
+        width: 45%;
+      }
+      span:nth-child(2) {
+        width: 40%;
+      }
+    }
+  }
+  .tit-class {
+    min-width: 36%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(153, 153, 153, 1);
+  }
+  .val-class {
+    min-width: 64%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(51, 51, 51, 1);
+  }
+  /deep/.van-cell__value {
+    position: relative;
+    overflow: visible;
+    text-align: right;
+    vertical-align: middle;
+  }
+  .van-cell:not(:last-child)::after {
+    border-bottom: 0;
+  }
+}
+</style>
diff --git a/src/components/common/h-staging-detail.vue b/src/components/common/h-staging-detail.vue
new file mode 100644
index 0000000..80aed7e
--- /dev/null
+++ b/src/components/common/h-staging-detail.vue
@@ -0,0 +1,191 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-27 11:08:39
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-29 14:11:39
+ * @Description: 产品已开通费率展示组件
+-->
+<template>
+  <div class="h-staging-detail-component">
+    <div class="info-box">
+      <div class="info-box-top">
+        <van-cell
+          :title="item.title"
+          :value="item.value"
+          title-class="tit-class"
+          value-class="val-class"
+          v-for="(item, index) in infoList"
+          :key="index"
+        />
+      </div>
+      <div class="info-box-bottom" v-if="rateList.length > 1">
+        <div class="left-cr" :style="{ background: bcColor }"></div>
+        <div class="right-cr" :style="{ background: bcColor }"></div>
+        <div class="rate-title">费率</div>
+        <div class="item" v-for="i in spanList" :key="i.termName">
+          <span v-for="(e, key) in i" :key="key">{{ e }}</span>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+/**
+ * infoList 展示信息数组 数组得再父组件按照 想要的数据先处理好顺序,形成一个对象数组,其实作用不大只是想减少下HTML代码
+ * hasTitle 费率是否含有标题栏  费率展示处是否展示标题栏  需要标题栏请手动在rateList第一项给入对应对象
+ * rateList 费率数组 费率数组全部传入即可
+ * rateListRule 费率数组规则  rateList里哪些要展示就在此数组定义 每一项为一个对象  keyName为rateList中需要展示的某一项的键名,type为特殊类型会添加% 期 这些后缀
+ * bcColor 小圆形的背景色,如果内容过少可以 小圆会呈现在上部有背景色处,所以给一个自定义颜色传入
+ * **/
+export default {
+  name: "h-staging-detail",
+  props: {
+    rateList: {
+      type: Array,
+    }, //费率数组
+    infoList: {
+      type: Array,
+    }, //展示信息数组
+    rateListRule: {
+      type: Array,
+    }, //费率数组规则
+    hasTitle: {
+      type: Boolean,
+      default: false,
+    }, //费率是否含有标题栏
+    bcColor: {
+      type: String,
+      default: "#f5f5f5",
+    }, //小圆形的背景色
+  },
+  computed: {
+    spanList() {
+      let arr = [];
+      this.rateList.forEach((item, index) => {
+        let obj = {};
+        this.rateListRule.forEach((e) => {
+          if (item.hasOwnProperty(e.keyName)) {
+            if (this.hasTitle) {
+              if (e.type == "isTerm") {
+                obj[e.keyName] =
+                  index == 0 ? item[e.keyName] : `${item[e.keyName]}期`;
+              }
+              if (e.type == "isRate") {
+                obj[e.keyName] =
+                  index == 0 ? item[e.keyName] : `${item[e.keyName]}%`;
+              } else {
+                obj[e.keyName] = item[e.keyName];
+              }
+            } else {
+              if (e.type == "isTerm") {
+                obj[e.keyName] = item[e.keyName] + "期";
+              }
+              if (e.type == "isRate") {
+                obj[e.keyName] = item[e.keyName] + "%";
+              } else {
+                obj[e.keyName] = item[e.keyName];
+              }
+            }
+          }
+        });
+        arr.push(obj);
+      });
+      return arr;
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+.h-staging-detail-component {
+  .info-box {
+    width: 92%;
+    background: rgba(255, 255, 255, 1);
+    box-shadow: 0px 18px 15px 0px rgba(40, 23, 92, 0.04);
+    border-radius: 3px;
+    position: absolute;
+    top: 96px;
+    left: 4%;
+    .info-box-bottom {
+      box-sizing: border-box;
+      padding: 0 17px 20px 17px;
+      position: relative;
+      background-color: #fff;
+      .left-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: #f5f5f7;
+        top: -7px;
+        left: -7px;
+      }
+      .right-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: #f5f5f7;
+        top: -7px;
+        right: -7px;
+      }
+      .rate-title {
+        padding: 20px 0 0 0;
+        font-size: 14px;
+        color: #999999;
+        font-weight: normal;
+        line-height: 1.6;
+        border-top: 1px dashed #e6e6e6;
+      }
+    }
+
+    .item {
+      width: 100%;
+      margin-top: 5px;
+      padding: 0 10px;
+      box-sizing: border-box;
+      display: inline-block;
+      background: rgba(249, 247, 252, 1);
+      height: 40px;
+      line-height: 40px;
+      display: flex;
+      justify-content: space-around;
+      span {
+        text-align: center;
+        display: inline-block;
+      }
+      span:nth-child(1) {
+        width: 15%;
+      }
+      span:nth-child(2) {
+        width: 40%;
+      }
+      span:nth-child(3) {
+        width: 45%;
+      }
+    }
+  }
+  .tit-class {
+    min-width: 36%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(153, 153, 153, 1);
+  }
+  .val-class {
+    min-width: 64%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(51, 51, 51, 1);
+  }
+  /deep/.van-cell__value {
+    position: relative;
+    overflow: visible;
+    text-align: right;
+    vertical-align: middle;
+  }
+  .van-cell:not(:last-child)::after {
+    border-bottom: 0;
+  }
+}
+</style>
diff --git a/src/components/common/new-v-order-item.vue b/src/components/common/new-v-order-item.vue
new file mode 100644
index 0000000..cf03202
--- /dev/null
+++ b/src/components/common/new-v-order-item.vue
@@ -0,0 +1,151 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:55:10
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-23 16:28:59
+ * @Description: 订单组件
+ -->
+<template>
+    <div class="order-item" @click="$emit('click')">
+        <header class="header flex-around-g text-center-g">
+            <div class="flex-1-g" :class="[index!==list.length-1 ? 'border-right' : '']" v-for="(item, index) in list"
+                :key="index">
+                <h5 class="title" :class="[item.color,index===2?'ch-status':'']" >{{item.value}}</h5>
+                <p class="label">{{item.label}}</p>
+            </div>
+        </header>
+        <footer class="footer">
+            <div class="flex-between-g">
+                <slot name="bottom-status">
+                <p v-if="orderId" class="flex-start-g">
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                        <use  xlink:href="#iconshanghumingcheng"></use>
+                    </svg>
+                    <span class="text-clip-g" style="max-width:120px;">{{orderId}}</span>
+                </p>
+                <p v-if="time" class="flex-start-g">
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                        <use xlink:href="#iconshijian"></use>
+                    </svg>
+                    <time>{{+time | timeformat('yyyy-MM-dd HH:mm:ss')}}</time>
+                </p>
+                </slot>
+            </div>
+            <!-- <p v-if="user" class="flex-start-g">
+                <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                    <use xlink:href="#iconshanghumingcheng"></use>
+                </svg>
+                <span class="flex-1-g text-clip-g">{{user}}</span>
+            </p> -->
+            <p v-if="name" class="flex-start-g">
+                <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                    <use xlink:href="#iconyonghu"></use>
+                </svg>
+                <span class="flex-1-g text-clip-g">{{name}}</span>
+            </p>
+            
+        </footer>
+    </div>
+</template>
+<script>
+    // list结构说明:
+    // [
+    //     {
+    //         label:'',
+    //         value:'',
+    //         color:''  //标识状态颜色
+    //     }
+    // ]
+    export default {
+        name: 'new-v-order-item',
+        props: {
+            time: {//时间
+                type:[String,Number],
+            },
+            name: String,
+            user: String,
+            orderId: Number,
+            list: { //header数据展示
+                type: Array
+            }
+        },
+        created() {
+            console.log(this.list)
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+
+    .ch-status{
+        font-size: 13px!important;
+        width: 60px;
+        margin-left: 30px;
+    }
+
+    .order-item {
+        background-color: @c-bg-fff;
+        margin-bottom: 10px;
+        padding: 0 8px 10px;
+        border-radius: 3px;
+        .header {
+            height: 80px;
+        }
+        // .info{
+        //     height: 100%;
+        //     .flex(center,center,'',column);
+        // }
+
+        .title {
+            font-size: @font-18;
+            margin-bottom: 8px;
+        }
+
+        .label {
+            font-size: @font-12;
+            color: @c-text-999;
+        }
+
+        .footer {
+            height: 50px;
+            line-height: 25px;
+            background-color: #F7F7FA;
+            padding: 0 12px;
+            font-size: @font-12;
+            color: @c-text-666;
+
+            .icon {
+                width: 18px;
+                margin-right: 8px;
+            }
+        }
+
+        .success {
+            color: #19BE6B;
+        }
+
+        .error {
+            color: #ED4014;
+        }
+
+        .warning {
+            color: #FF9900;
+        }
+    }
+
+    .border-right {
+        position: relative;
+        &::after {
+            content: "";
+            display: block;
+            position: absolute;
+            right: 0;
+            top: 50%;
+            transform: translateY(-50%);
+            width: 1px;
+            height: 32px;
+            background: rgba(230, 230, 230, 1);
+
+        }
+    }
+</style>
diff --git a/src/components/common/v-button-circle.vue b/src/components/common/v-button-circle.vue
new file mode 100644
index 0000000..23ba5b6
--- /dev/null
+++ b/src/components/common/v-button-circle.vue
@@ -0,0 +1,59 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:45:33
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 16:55:24
+ * @Description: 全局圆形按钮
+ -->
+<template>
+    <van-button class="btn-export" @click="$emit('click')" :style="{background:$store.state.backColor}">
+            <div class="inner">
+                <svg class="icon" aria-hidden="true" style="width:15px;height:15px;fill:#fff">
+                    <use :xlink:href="'#'+icon"></use>
+                </svg>
+                <span class="text">{{title}}</span>
+            </div>
+    </van-button>
+</template>
+<script>
+export default {
+    name:'v-button-circle',
+    props:{
+        title:{
+            type:String,
+            required:true,
+        },
+        icon:{
+            type:String,
+            required:true,
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+    .btn-export {
+            position: fixed;
+            width: 50px;
+            height: 50px;
+            padding: 0;
+            right: 8px;
+            bottom: 68px;
+            border-radius: 50%;
+            color: @c-text-f5;
+            z-index: @zIndex-50;
+            box-shadow: 0px 5px 9px 0px rgba(80, 47, 183, 0.3);
+            background: linear-gradient(0deg, rgba(106, 79, 188, 1), rgba(137, 110, 219, 1));
+
+            .inner {
+                display: flex;
+                flex-direction: column;
+                align-items: center;
+                justify-content: center;
+            }
+
+            .text {
+                .lh(15px);
+                margin-top: 2px;
+            }
+        }
+</style>
\ No newline at end of file
diff --git a/src/components/common/v-cell.vue b/src/components/common/v-cell.vue
new file mode 100644
index 0000000..63b8d9b
--- /dev/null
+++ b/src/components/common/v-cell.vue
@@ -0,0 +1,138 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 10:05:10
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-09 11:12:38
+ * @Description:
+ -->
+<template>
+    <div class="flex-between-g v-cell-box">
+        <div class="left flex-start-g">
+            <svg v-if="icon" class="icon" aria-hidden="true" style="width:16px;height:16px;">
+                <use :xlink:href="'#'+icon"></use>
+            </svg>
+            <span class="label" :class="[isTitle? 'title' : '']">{{label}}</span>
+        </div>
+        <div class="right flex-end-g">
+            <slot name="v-cell-right">
+            <div class="c-text-999-g" v-if="!Show_input">{{calcValue}}</div>
+            <input class="input" :class="[readonly ? 'readonly' : '']" :type="type" :maxlength="max" v-if="Show_input"  :disabled="readonly" v-model="calcValue" :placeholder="placeholder">
+
+            <svg v-if="isLink" class="icon" aria-hidden="true" style="width:18px;height:18px;fill:#999;">
+                <use xlink:href="#iconyou"></use>
+            </svg>
+            </slot>
+        </div>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'v-cell',
+        props: {
+            max:[String,Number],
+            type:{
+                type:String,
+                default:'text'
+            },
+            // 左侧文字
+            label:String,
+            //左侧图标类名
+            icon: String,
+            //是否展示右侧图标
+            isLink: {
+                type: Boolean,
+                default: false
+            },
+            // title文字加粗
+            isTitle:{
+                type: Boolean,
+                default: false
+            },
+            // 是否只读
+            readonly: {
+                type: Boolean,
+                default: false
+            },
+            // 是否禁用
+            disabled:{
+                type: Boolean,
+                default: false
+            },
+            Show_input:{
+                type:Boolean,
+                default: true
+            },
+            // input 的vmodel
+            value:[String, Number],
+            placeholder:String,
+        },
+        computed: {
+            calcValue: {
+                get() {
+                    return this.value;
+                },
+                set(v) {
+                    this.$emit('input', v)
+                }
+            }
+        },
+        mounted(){
+            
+        },
+        methods:{
+           
+        }
+    }
+</script>
+
+<style lang="less" scoped>
+    .v-cell-box {
+        padding: 16px 12px;
+        background-color: @c-bg-fff;
+        margin-bottom: 1px;
+
+
+
+        &:first-child {
+            border-top-left-radius: 3px;
+            border-top-right-radius: 3px;
+        }
+
+        &:last-child {
+            border-bottom-left-radius: 3px;
+            border-bottom-right-radius: 3px;
+            margin-bottom: 0;
+        }
+
+        .label {
+            font-size: @font-16;
+            &.title{
+                font-weight: bold;
+            }
+        }
+
+        .left {
+            .icon {
+                margin-right: 8px;
+            }
+        }
+
+        .input {
+            border: none;
+            outline: none;
+            text-align: right;
+            color: @c-text-333;
+            background: @c-bg-fff;
+            &.readonly{
+                color: @c-text-999;
+            }
+            &[disabled]{
+                opacity: 1;
+                -webkit-opacity:1;
+                color: @c-text-999;
+                -webkit-text-fill-color:@c-text-999;
+            }
+        }
+    }
+</style>
diff --git a/src/components/common/v-datacard.vue b/src/components/common/v-datacard.vue
new file mode 100644
index 0000000..d696adf
--- /dev/null
+++ b/src/components/common/v-datacard.vue
@@ -0,0 +1,80 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:23:30
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 16:50:58
+ * @Description: 数据展示
+ -->
+<template>
+    <section class="datacard-box flex-around-g text-center-g" :style="{background:$store.state.backColor}">
+        <!-- <img src="static/img/circle-top.png" class="img top" alt="">
+        <img src="static/img/circle-bottom.png" class="img bottom" alt=""> -->
+        <div v-for="(item,index) in list" :key="index">
+            <h4 class="title">{{ item.num || '0' }}</h4>
+            <p class="label">{{ item.title || '' }}</p>
+        </div>
+
+    </section>
+</template>
+<script>
+    export default {
+        name: 'v-datacard',
+        props:{
+            list:{
+                type:Array,
+                default: () => {
+                       return [
+                            {
+                                title:'交易额',
+                                num:'126,500'
+                            },
+                            {
+                                title:'交易单数',
+                                num:'3,211'
+                            },
+                            {
+                                title:'交易商户数',
+                                num:'126'
+                            }
+                        ]
+                    }
+            }
+        }
+    }
+</script>
+<style lang="less" scoped>
+.datacard-box{
+    position: relative;
+    height:105px;
+    background:rgba(66,61,93,1);
+    box-shadow:0px 6px 10px 0px rgba(66,61,93,0.3);
+    border-radius:3px;
+    color: @c-text-fff;
+    background-image: url('../../../static/img/circle-top.png'),url('../../../static/img/circle-bottom.png');
+    background-position: 0 0,100% 100%;
+    background-size: 78px 65px,54px 41px;
+    background-repeat: no-repeat;
+    .title{
+        font-size: @font-20;
+        margin-bottom: 10px;
+    }
+    .label{
+        font-size: @font-12;
+    }
+    // .img{
+    //     position: absolute;
+    //     &.top{
+    //         top: 0;
+    //         left: 0;
+    //         width: 78px;
+    //         height: 65px;
+    //     }
+    //     &.bottom{
+    //         right: 0;
+    //         bottom: 0;
+    //         width: 54px;
+    //         height: 41px;
+    //     }
+    // }
+}
+</style>
diff --git a/src/components/common/v-dialog.vue b/src/components/common/v-dialog.vue
new file mode 100644
index 0000000..15069c3
--- /dev/null
+++ b/src/components/common/v-dialog.vue
@@ -0,0 +1,59 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-13 10:43:38
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-13 11:10:52
+ * @Description: 
+-->
+<template>
+    <div class="v-dialog">
+        <van-dialog v-model="show" title="提示" show-cancel-button @cancel="hanldCancel" @confirm="hanldConfirm">
+            <div class="content">
+                <p>当前支付宝无法办理业务,企业类型商户请使用企业支付宝账号扫码授权,个体工商户请使用经营者支付宝账号扫码授权!</p>
+            </div>
+        </van-dialog>
+    </div>
+</template>
+<script>
+export default {
+    name:'Vdialog',
+    props:{
+        show:{
+            type:Boolean,
+            default:false
+        }
+    },
+    data() {
+        return {
+            
+        }
+    },
+    methods:{
+        hanldConfirm(){
+            this.$router.push({
+                path:'/huabei/open',
+                query:{
+                    isCreateOrderPush:true,
+                    title:'花呗分期',
+                    path:this.$route.path,
+                    ...this.$route.query
+                }
+            })
+        },
+        hanldCancel(){
+            this.$emit('cancel',false)
+        }
+    }
+}
+</script> 
+<style lang="less" scoped>
+.v-dialog{
+    /deep/.content{
+        display: flex;
+        min-height: 100px;
+        text-align: center;
+        align-items: center;
+        padding: 0 20px;
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/components/common/v-filter.vue b/src/components/common/v-filter.vue
new file mode 100644
index 0000000..067c1cc
--- /dev/null
+++ b/src/components/common/v-filter.vue
@@ -0,0 +1,573 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-26 10:46:28
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-07 11:20:10
+ * @Description: 全局筛选组件
+ -->
+<template>
+    <div class="filter-box">
+        <van-popup v-model="calcValue" position="right" :style="{ minHeight: '100%',width:'75%',overflow:'scroll', }">
+            <van-collapse v-model="cityCodeArr">
+                <!-- 时间范围 -->
+                <van-collapse-item v-if="hasTime" title="时间范围" name="time">
+                    <p class="time-box flex-around-g text-center-g">
+                        <time class="time-item" @click="isShow = true;">{{getDateText(startDay) || '请选择起始日期'}}</time>
+                        <span>至</span>
+                        <time class="time-item" @click="isShow2 = true;">{{getDateText(endDay) || '请选择结束日期'}} </time>
+                    </p>
+                </van-collapse-item>
+                 <!-- 所属 -->
+                <van-collapse-item v-if="belongArr.length" :title="calcParam.title" name="belongArr">
+                    <ul>
+                        <li class="filter-item" :style="belongArrCode==item.code?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[belongArrCode==item.code?'active':'']"  v-for="(item) of belongArr" :key="item.code" @click="setCode('belongArrCode',item.code)">
+                            {{item.name}}
+                        </li>
+                        <!-- :class="[belongArrCode==item.code?'active':'']" -->
+                    </ul>
+                </van-collapse-item>
+                <!-- 模板 -->
+                <!-- <van-collapse-item v-if="templateArr.length" title="模板" name="template">
+                    <ul>
+                        <li class="filter-item" :class="[templateArrCode==item.code?'active':'']" v-for="(item) of templateArr" :key="item.code" @click="setCode('templateArrCode',item.code)">
+                            {{item.name}}
+                        </li>
+                    </ul>
+                </van-collapse-item> -->
+                <!-- 分期期数 -->
+                <van-collapse-item v-if="periodsArr.length" title="分期期数" name="periodsArr">
+                    <ul>
+                        <li class="filter-item" :style="periodsArrCode==item.code?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[periodsArrCode==item.code?'active':'']" v-for="(item) of periodsArr" :key="item.code" @click="setCode('periodsArrCode',item.code)">
+                            {{item.name}}
+                        </li>
+                    </ul>
+                </van-collapse-item>
+                <!-- 风险级别 -->
+                <van-collapse-item v-if="riskLevelArr.length" title="风险级别" name="riskLevelArr">
+                    <ul>
+                        <li class="filter-item" :style="riskLevelArrCode==item.code?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[riskLevelArrCode==item.code?'active':'']" v-for="(item) of riskLevelArr" :key="item.code" @click="setCode('riskLevelArrCode',item.code)">
+                            {{item.name}}
+                        </li>
+                    </ul>
+                </van-collapse-item>
+                <!-- 风险类型 -->
+                <van-collapse-item v-if="riskTypeArr.length" title="风险类型" name="riskTypeArr">
+                    <ul>
+                        <li class="filter-item" :style="riskTypeArrCode==item.code?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[riskTypeArrCode==item.code?'active':'']" v-for="(item) of riskTypeArr" :key="item.code" @click="setCode('riskTypeArrCode',item.code)">
+                            {{item.name}}
+                        </li>
+                    </ul>
+                </van-collapse-item>
+                <!-- 订单状态 -->
+                <van-collapse-item v-if="statusArr.length" title="订单状态" name="status">
+                    <ul>
+                        <li class="filter-item" :style="statusArrCode==item.code?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[statusArrCode===item.code?'active':'']" v-for="(item) of statusArr" :key="item.code" @click="setCode('statusArrCode',item.code)">
+                            {{item.name}}
+                        </li>
+                    </ul>
+                </van-collapse-item>
+                <!-- 支付通道 -->
+                <van-collapse-item v-if="zfbVersionArr.length" title="通道" name="zfbVersion">
+                    <ul>
+                        <li class="filter-item" :style="zfbVersionArrCode==item.code?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[zfbVersionArrCode===item.code?'active':'']" v-for="(item) of zfbVersionArr" :key="item.code" @click="setCode('zfbVersionArrCode',item.code)">
+                            {{item.name}}
+                        </li>
+                    </ul>
+                </van-collapse-item>
+                <!-- 所属渠道 -->
+                <van-collapse-item v-if="channelArr.length" title="所属渠道" name="channel">
+                    <ul>
+                        <li class="filter-item" :style="channelArrCode==item.code?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[channelArrCode==item.code?'active':'']" v-for="(item) of channelArr" :key="item.code" @click="setCode('channelArrCode',item.code)">
+                            {{item.name}}
+                        </li>
+                    </ul>
+                </van-collapse-item>
+                <!-- 模板 -->
+                <van-collapse-item v-if="templateArr.length" title="模板" name="template">
+                    <ul>
+                        <li class="filter-item" :style="templateArrCode==item.code?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[templateArrCode==item.code?'active':'']" v-for="(item) of templateArr" :key="item.code" @click="setCode('templateArrCode',item.code)">
+                            {{item.name}}
+                        </li>
+                    </ul>
+                </van-collapse-item>
+
+                <van-collapse-item v-if="hasMoney"  :title="customTitle" name="template">
+                    <div class="input-box flex-between-g">
+                        <input class="input" v-model="startAmt" maxlength="6" type="text" placeholder="请输入起始金额">
+                        <span>-</span>
+                        <input class="input" v-model="endAmt" maxlength="6" type="text" placeholder="请输入结束金额">
+                    </div>
+                </van-collapse-item>
+
+
+                <!-- 省市区联动 -->
+                <van-collapse-item v-if="hasCity" title="省份" name="province_list">
+                    <ul>
+                        <li class="filter-item" :style="provinceCode==value?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[provinceCode==value?'active':'']"
+                            v-for="(text,value) of areaList.province_list" :key="value" @click='getCity(text,value)'>
+                            {{text}}
+                        </li>
+                    </ul>
+                </van-collapse-item>
+                <van-collapse-item v-if="hasCity" title="城市" name="city_list">
+                    <ul>
+                        <li class="filter-item" :style="cityCode==value?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[cityCode==value?'active':'']" v-for="(text,value) of city_list"
+                            :key="value" @click='getCounty(text,value)'>
+                            {{text}}
+                        </li>
+                    </ul>
+                </van-collapse-item>
+                <van-collapse-item v-if="hasCity" title="区县" name="county_list">
+                    <ul>
+                        <li class="filter-item" :style="countyCode==value?{color:$store.state.backColor,border:`0.5px solid ${$store.state.backColor}`}:''" :class="[countyCode==value?'active':'']"
+                            v-for="(text,value) of county_list" :key="value" @click="setCountyCode(text,value)">
+                            {{text}}
+                        </li>
+                    </ul>
+                </van-collapse-item>
+                <f-search  :placeholder="getSearchTips.searchTip" @on-value="onValue" :queryStr='queryStr'  v-if="hasSearch"></f-search>
+                <!-- 占位标签 -->
+                <div id="adress" class="slider"></div>
+            </van-collapse>
+
+        </van-popup>
+        <footer class="footer" v-show="calcValue">
+            <van-button class="btn btn-left" @click="reset">重置</van-button>
+            <van-button :color="$store.state.backColor" class="btn btn-right" @click="search">确定</van-button>
+        </footer>
+
+        <van-popup v-model="isShow" position="bottom" :close-on-click-overlay="false">
+            <van-datetime-picker
+                :value="startDay"
+                @cancel="isShow = false;"
+                @confirm="setStartDay"
+                :max-date="new Date()"
+                cancel-button-text='关闭'
+                type="date"
+            />
+        </van-popup>
+        <van-popup v-model="isShow2" position="bottom" :close-on-click-overlay="false">
+            <van-datetime-picker
+                :value="endDay"
+                @cancel="isShow2 = false;"
+                @confirm="setEndDay"
+                :max-date="new Date()"
+                :min-date="startDay || new Date('2010-01-01')"
+                cancel-button-text='关闭'
+                type="date"
+            />
+        </van-popup>
+    </div>
+
+</template>
+
+<script>
+    import {
+        mapState
+    } from 'vuex';
+    export default {
+        name: "v-filter",
+        data() {
+            return {
+                orgType: 1,
+                isShow:false,
+                isShow2:false,
+                startDay:'',
+                queryStr:'',
+                endDay:'',
+                cityCodeArr: [],
+                provinceCode: null, //省code
+                city_list: {}, //市
+                cityCode: null, //市code
+                county_list: {}, //区县
+                countyCode: null, //区县code
+                statusArrCode: null,
+                channelArrCode:'',
+                templateArrCode:'',
+                periodsArrCode:'',
+                riskLevelArrCode:'',// 风险级别
+                riskTypeArrCode: '',// 风险类型
+                belongArrCode:'',
+                zfbVersionArrCode:'',
+                startAmt:'', //起始金额
+                endAmt:'',//结束金额
+            }
+        },
+        props: {
+            //vmodel
+            value: {
+                type: Boolean,
+                default: false
+            },
+            // 是否包含城市组件
+            hasCity: {
+                type: Boolean,
+                default: false
+            },
+            //订单状态
+            statusArr: {
+                type: Array,
+                default(){
+                    return []
+                }
+            },
+            //渠道
+            channelArr: {
+                type: Array,
+                default(){
+                    return []
+                }
+            },
+            //模板
+            templateArr: {
+                type: Array,
+                default(){
+                    return []
+                }
+            },
+            //期数
+            periodsArr: {
+                type: Array,
+                default(){
+                    return []
+                }
+            },
+            //风险级别
+            riskLevelArr: {
+                type: Array,
+                default(){
+                    return []
+                }
+            },
+            //风险类型
+            riskTypeArr: {
+                type: Array,
+                default(){
+                    return []
+                }
+            },
+            //通道
+            zfbVersionArr: {
+                type: Array,
+                default(){
+                    return []
+                }
+            },
+            // 所属---(渠道,商户,店员)
+            belongArr:{
+                type: Array,
+                default(){
+                    return []
+                }
+            },
+            // 是否有办单员搜索条件
+            hasSearch:{
+                type:Boolean,
+                default:false,
+            },
+            // 是否有办单员搜索条件
+            hasWxScore:{
+                type:Boolean,
+                default:false,
+            },
+            // 是否有金额筛选条件
+            hasMoney:{
+                type:Boolean,
+                default:true,
+            },
+            // 是否显示时间选择
+            hasTime:{
+                type:Boolean,
+                default:true,
+            },
+            customTitle:{
+                type:String,
+                default:'商品金额'
+            },
+            //地区列表——商户管理页面才有
+            areaList:Object
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            calcValue: {
+                get() {
+                    return this.value
+                },
+                set(v) {
+                    this.$emit('input', v)
+                }
+            },
+            getSearchTips() {
+                let orgType = this.userinfo.orgType,
+                    searchTip = '';
+                if(this.hasWxScore){
+                    searchTip = '姓名/手机号';
+                }else{
+                    if (orgType === 1) {
+                        searchTip = '姓名/渠道名称/商户名称';
+                    } else if (orgType === 2) {
+                        searchTip = '姓名/商户名称';
+                    } else if (orgType === 3) {
+                        searchTip = '姓名/门店名称';
+                    } else {
+                        searchTip = '姓名/办单员';
+                    }
+                }
+
+                return {
+                    searchTip
+                };
+            },
+            calcParam(){
+                let orgType = this.userinfo.orgType,
+                    title='',
+                    searchKey='';
+                if (orgType === 1) {
+                    title = '所属渠道';
+                    searchKey = 'chanList';
+                } else if (orgType === 2) {
+                    title = '所属商户';
+                    searchKey = 'merList';
+                } else if (orgType === 3) {
+                    title = '所属门店';
+                    searchKey = 'storeList';
+                } else {
+                    title = '办单员';
+                    searchKey = 'mgrList';
+                }
+                return {
+                    title,
+                    searchKey
+                };
+            },
+            // 查询参数组合
+            searchParam(){
+                console.log(this.belongArrCode)
+                let insTerm = this.periodsArrCode,
+                    key = this.calcParam.searchKey,
+                    orderStatus = this.statusArrCode,
+                    startDay =this.getDateText(this.startDay),
+                    endDay = this.getDateText(this.endDay),
+                    startAmt = +this.startAmt || '',
+                    endAmt = +this.endAmt || '',
+                    provCode = this.provinceCode,
+                    cityCode = this.cityCode,
+                    countyCode = this.countyCode,
+                    zfbVersion = this.zfbVersionArrCode,
+                    arr = this.belongArrCode ? [this.belongArrCode] : [],
+                    tempList = this.templateArrCode ? [this.templateArrCode] : [],
+                    queryStr = this.queryStr,
+                    riskLevelArrCode = this.riskLevelArrCode,// 风险级别
+                    riskTypeArrCode = this.riskTypeArrCode// 风险类型
+                return {
+                    insTerm,
+                    orderStatus,
+                    [key]:arr,
+                    tempList,
+                    startDay,
+                    endDay,
+                    startAmt,
+                    endAmt,
+                    provCode,
+                    cityCode,
+                    countyCode,
+                    zfbVersion,
+                    queryStr,
+                    riskLevelArrCode,
+                    riskTypeArrCode
+                }
+            },
+        },
+        methods: {
+            // 获取时间日期文字
+            getDateText(date){
+                if(date instanceof Date){
+                    let y = date.getFullYear(),
+                        m =date.getMonth()+1,
+                        d = date.getDate();
+
+                    if(m<10){
+                        m = '0'+m;
+                    }
+                    if(d<10){
+                        d = '0'+d;
+                    }
+                    return y +'-' + m + '-' + d;
+                }
+                return '';
+            },
+            // 设置起始日期
+            setEndDay(v){
+                this.endDay = v;
+                this.isShow2 = false;
+            },
+            // 设置结束日期
+            setStartDay(v){
+                this.startDay = v;
+                this.isShow = false;
+            },
+            // 搜索回调
+            onValue(val) {
+                this.queryStr = val;
+            },
+            // 触发查询
+            search(){
+                let notify={
+                        type:'warning',
+                        message:'请输入正确的数字'
+                    };
+                if(this.startAmt && isNaN(this.startAmt)){
+                    this.startAmt = '';
+                    this.$notify(notify)
+                    return
+                }
+                if(this.endAmt && isNaN(this.endAmt)){
+                    this.endAmt = '';
+                    this.$notify(notify)
+                    return
+                }
+                this.$emit('search',this.searchParam)
+            },
+            //设置区县code
+            setCountyCode(text, value) {
+                this.countyCode = value;
+            },
+            // 根据市 code 获取下级区县
+            getCounty(text, value) {
+                this.cityCode = value;
+                this.countyCode = null;
+                let county = this.areaList.county_list;
+                this.county_list = {};
+                for (let key in county) {
+                    let code = +key;
+                    if (key - code % 100 == value) {
+                        this.county_list[key] = county[key]
+                    }
+                }
+            },
+            // 根据省 code 获取下级市
+            getCity(text, value) {
+                this.cityCode = null;
+                this.countyCode = null;
+                this.provinceCode = value;
+                let city = this.areaList.city_list;
+                this.county_list = {};
+                this.city_list = {};
+                for (let key in city) {
+                    let code = +key;
+                    if (key - code % 10000 == value) {
+                        this.city_list[key] = city[key]
+                    }
+                }
+            },
+            setCode(key,code){
+                console.log(key)
+                console.log(code)
+                this[key] = code;
+            },
+            // 重置
+            reset(){
+                this.statusArrCode = '';
+                this.channelArrCode = '';
+                this.templateArrCode= '';
+                this.periodsArrCode='';
+                this.riskLevelArrCode = '';
+                this.riskTypeArrCode = '';
+                this.belongArrCode='';
+                this.startAmt = '';
+                this.endAmt = '';
+                this.startDay = '';
+                this.endDay = '';
+                this.provinceCode = '';
+                this.cityCode = '';
+                this.countyCode = '';
+                this.queryStr = '';
+                this.zfbVersionArrCode = '';
+            }
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .filter-box{
+        width: 100%;
+    }
+    .filter-item {
+        .lh(32px);
+        display: inline-block;
+        width: 32%;
+        margin-bottom: 6px;
+        margin-right: 2%;
+        text-align: center;
+        color: @c-text-666;
+        font-size: 12Px;
+        background-color: @c-bg-f5;
+        padding: 0 2px;
+        box-sizing: border-box;
+        overflow: hidden;
+        vertical-align: bottom;
+        border-radius: 16px;
+        border: .5px solid transparent;
+
+        &:nth-child(3n) {
+            margin-right: 0;
+        }
+
+        &.active {
+            background: rgba(244, 241, 255, 1);
+            border: .5px solid @c-default;
+            color: @c-text-default;
+        }
+    }
+
+    .time-box {
+        .time-item {
+            .lh(32px);
+            width: 110px;
+            font-size: @font-12;
+            color: @c-text-666;
+            background-color: @c-bg-f5;
+            border-radius: 16px;
+        }
+    }
+
+    .footer {
+        position: fixed;
+        z-index: 3000;
+        width: 75%;
+        right: 0;
+        bottom: 0;
+
+        .btn {
+            width: 50%;
+            float: left;
+            font-size: @font-16;
+
+            &.btn-left {
+                color: @c-text-666;
+                background-color: @c-bg-eee;
+            }
+
+            &.btn-right {
+                color: @c-text-fff;
+                background-color: @c-bg-default;
+            }
+        }
+    }
+    .slider{
+        height: 74px;
+    }
+    .input-box{
+        .input{
+            border: none;
+            width: 45%;
+            padding: 5px 0;
+            outline: none;
+            color: @c-text-black;
+            background-color: @c-bg-f5;
+            text-align: center;
+            font-size: @font-12;
+            border-radius: 16px;
+
+        }
+    }
+</style>
diff --git a/src/components/common/v-gzzj-order-item.vue b/src/components/common/v-gzzj-order-item.vue
new file mode 100644
index 0000000..0a0e297
--- /dev/null
+++ b/src/components/common/v-gzzj-order-item.vue
@@ -0,0 +1,167 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:55:10
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-23 16:28:59
+ * @Description: 订单组件
+ -->
+<template>
+    <div class="order-item" @click="$emit('click')">
+        <header class="header flex-around-g text-center-g">
+            <div class="flex-1-g" :class="[index!==list.length-1 ? 'border-right' : '']" v-for="(item, index) in list"
+                :key="index">
+                <h5 class="title" :class="[item.color,index===2?'ch-status':'']" >{{item.value}}</h5>
+                <p class="label">{{item.label}}</p>
+            </div>
+        </header>
+        <footer class="footer">
+            <div class="flex-between-g">
+                <slot name="bottom-status">
+                <p v-if="orderId" class="flex-start-g">
+                    订单编号:
+                    <span class="text-clip-g" style="max-width:120px;">{{orderId}}</span>
+                </p>
+                    <p v-if="storeName" class="flex-start-g">
+                        门店:
+                        <span class="text-clip-g" style="max-width:120px;">{{storeName}}</span>
+                    </p>
+                </slot>
+            </div>
+            <div class="flex-between-g">
+                <slot name="bottom-status">
+
+                    <p v-if="orderTime" class="flex-start-g">
+                        订单时间:
+                        <time>{{+orderTime | timeformat('yyyy-MM-dd HH:mm:ss')}}</time>
+                    </p>
+                </slot>
+            </div>
+            <div class="flex-between-g">
+                <slot name="bottom-status">
+                    <p v-if="signTime" class="flex-start-g">
+                        签约时间:
+                        <time>{{+signTime | timeformat('yyyy-MM-dd HH:mm:ss')}}</time>
+                    </p>
+                </slot>
+            </div>
+            <div class="flex-between-g">
+                <slot name="bottom-status">
+                    <p v-if="userName" class="flex-start-g">
+                        用户名称:
+                        <span class="text-clip-g" style="max-width:120px;">{{userName}}</span>
+                    </p>
+                    <p v-if="mblNo" class="flex-start-g">
+                        用户电话:
+                        <span class="text-clip-g" style="max-width:120px;">{{mblNo}}</span>
+                    </p>
+                </slot>
+            </div>
+        </footer>
+    </div>
+</template>
+<script>
+    // list结构说明:
+    // [
+    //     {
+    //         label:'',
+    //         value:'',
+    //         color:''  //标识状态颜色
+    //     }
+    // ]
+    export default {
+        name: 'v-gzzj-order-item',
+        props: {
+            orderTime: {//时间
+                type:[String,Number],
+            },
+            signTime: {//时间
+                type:[String,Number],
+            },
+            storeName: String, //商户名
+            mblNo: String, //商户名
+            userName: String, //商户名
+            orderId: Number, //用户名
+            list: { //header数据展示
+                type: Array
+            }
+        },
+        created() {
+            console.log(this.list)
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+
+    .ch-status{
+        font-size: 13px!important;
+        width: 80px;
+        margin-left: 20px;
+    }
+
+    .order-item {
+        background-color: @c-bg-fff;
+        margin-bottom: 10px;
+        padding: 0 8px 10px;
+        border-radius: 3px;
+        .header {
+            height: 120px;
+        }
+        // .info{
+        //     height: 100%;
+        //     .flex(center,center,'',column);
+        // }
+
+        .title {
+            font-size: @font-18;
+            margin-bottom: 8px;
+        }
+
+        .label {
+            font-size: @font-12;
+            color: @c-text-999;
+        }
+
+        .footer {
+            height: 100px;
+            line-height: 25px;
+            background-color: #F7F7FA;
+            padding: 0 12px;
+            font-size: @font-12;
+            color: @c-text-666;
+
+            .icon {
+                width: 18px;
+                margin-right: 8px;
+            }
+        }
+
+        .success {
+            color: #19BE6B;
+        }
+
+        .error {
+            color: #ED4014;
+        }
+
+        .warning {
+            color: #FF9900;
+        }
+    }
+
+    .border-right {
+        position: relative;
+        &::after {
+            content: "";
+            display: block;
+            position: absolute;
+            right: 0;
+            top: 50%;
+            transform: translateY(-50%);
+            width: 1px;
+            height: 32px;
+            background: rgba(230, 230, 230, 1);
+
+        }
+    }
+</style>
diff --git a/src/components/common/v-navbar.vue b/src/components/common/v-navbar.vue
new file mode 100644
index 0000000..8c13dcd
--- /dev/null
+++ b/src/components/common/v-navbar.vue
@@ -0,0 +1,96 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-15 15:44:44
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-19 16:40:34
+ * @Description:
+ -->
+<template>
+    <div class="nav-bar flex-start-g" :class="[fixed ? 'fixed' : '']">
+        <slot name="left-back">
+            <svg class="icon" aria-hidden="true" style="width:25px;height:44px;" @click="go">
+                <use xlink:href="#iconzuojiantou"></use>
+            </svg>
+        </slot>
+        <h4 class="title text-center-g">{{title}}</h4>
+        <div class="rightText" @click="rightClick">
+            <slot name="right">{{rightText}}</slot>
+        </div>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'v-navbar',
+        props: {
+            title: {
+                type: String,
+                require: true,
+            },
+            rightText: {
+                type: String,
+            },
+            fixed:{
+                type:Boolean,
+                default:false
+            },
+            back:{
+                type:Boolean,
+                default:false
+            }
+        },
+        methods:{
+            rightClick(){
+                this.$emit('right-click')
+            },
+            go(){
+                if(this.back){
+                    if(sessionStorage.isdddxt == 1){
+                        this.$router.push('/?platNo=ddxt')
+                    }else{
+                        this.$router.push('/')
+                    }
+                    
+                }else{
+                    this.$router.back()
+                }
+            }
+        }
+    }
+</script>
+
+<style lang="less" scoped>
+    .nav-bar {
+        background-color: @c-bg-fff;
+        .lh(44px);
+        position: relative;
+        padding: 0 20px;
+        z-index: @zIndex-100;
+        &.fixed{
+            position: fixed;
+            top: 0;
+            left: 0;
+            right: 0;
+        }
+
+        .icon {
+            z-index: @zIndex-20;
+        }
+
+        .title {
+            font-size: @font-16;
+            position: absolute;
+            left: 60px;
+            right: 60px;
+        }
+
+        .rightText {
+            font-size: @font-14;
+            position: absolute;
+            right: 20px;
+            height: 44px;
+            min-width: 50px;
+            text-align: right;
+        }
+    }
+</style>
diff --git a/src/components/common/v-order-item.vue b/src/components/common/v-order-item.vue
new file mode 100644
index 0000000..220926a
--- /dev/null
+++ b/src/components/common/v-order-item.vue
@@ -0,0 +1,143 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:55:10
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-23 16:28:59
+ * @Description: 订单组件
+ -->
+<template>
+    <div class="order-item" @click="$emit('click')">
+        <header class="header flex-around-g text-center-g">
+            <div class="flex-1-g" :class="[index!==list.length-1 ? 'border-right' : '']" v-for="(item, index) in list"
+                :key="index">
+                <h5 class="title" :class="[item.color,index===2?'ch-status':'']" >{{item.value}}</h5>
+                <p class="label">{{item.label}}</p>
+            </div>
+        </header>
+        <footer class="footer">
+            <div class="flex-between-g">
+                <slot name="bottom-status">
+                <p v-if="orderId" class="flex-start-g">
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                        <use xlink:href="#iconyonghu"></use>
+                    </svg>
+                    <span class="text-clip-g" style="max-width:120px;">{{orderId}}</span>
+                </p>
+                <p v-if="time" class="flex-start-g">
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                        <use xlink:href="#iconshijian"></use>
+                    </svg>
+                    <time>{{+time | timeformat('yyyy-MM-dd HH:mm:ss')}}</time>
+                </p>
+                </slot>
+            </div>
+            <p v-if="user" class="flex-start-g">
+                <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                    <use xlink:href="#iconshanghumingcheng"></use>
+                </svg>
+                <span class="flex-1-g text-clip-g">{{user}}</span>
+            </p>
+        </footer>
+    </div>
+</template>
+<script>
+    // list结构说明:
+    // [
+    //     {
+    //         label:'',
+    //         value:'',
+    //         color:''  //标识状态颜色
+    //     }
+    // ]
+    export default {
+        name: 'v-order-item',
+        props: {
+            time: {//时间
+                type:[String,Number],
+            },
+            user: String, //商户名
+            orderId: Number, //用户名
+            list: { //header数据展示
+                type: Array
+            }
+        },
+        created() {
+            console.log(this.list)
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+
+    .ch-status{
+        font-size: 13px!important;
+        width: 60px;
+        margin-left: 30px;
+    }
+
+    .order-item {
+        background-color: @c-bg-fff;
+        margin-bottom: 10px;
+        padding: 0 8px 10px;
+        border-radius: 3px;
+        .header {
+            height: 80px;
+        }
+        // .info{
+        //     height: 100%;
+        //     .flex(center,center,'',column);
+        // }
+
+        .title {
+            font-size: @font-18;
+            margin-bottom: 8px;
+        }
+
+        .label {
+            font-size: @font-12;
+            color: @c-text-999;
+        }
+
+        .footer {
+            height: 50px;
+            line-height: 25px;
+            background-color: #F7F7FA;
+            padding: 0 12px;
+            font-size: @font-12;
+            color: @c-text-666;
+
+            .icon {
+                width: 18px;
+                margin-right: 8px;
+            }
+        }
+
+        .success {
+            color: #19BE6B;
+        }
+
+        .error {
+            color: #ED4014;
+        }
+
+        .warning {
+            color: #FF9900;
+        }
+    }
+
+    .border-right {
+        position: relative;
+        &::after {
+            content: "";
+            display: block;
+            position: absolute;
+            right: 0;
+            top: 50%;
+            transform: translateY(-50%);
+            width: 1px;
+            height: 32px;
+            background: rgba(230, 230, 230, 1);
+
+        }
+    }
+</style>
diff --git a/src/components/common/v-scroll-x.vue b/src/components/common/v-scroll-x.vue
new file mode 100644
index 0000000..a717e56
--- /dev/null
+++ b/src/components/common/v-scroll-x.vue
@@ -0,0 +1,32 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-23 09:54:25
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-23 09:55:47
+ * @Description: 公共横向滑动组件
+ -->
+<template>
+    <div class="cardsList">
+            <slot></slot>
+    </div>
+</template>
+
+<script>
+export default {
+    name:'v-scroll-x'
+}
+</script>
+
+<style lang="less" scoped>
+.cardsList{
+        display: -webkit-box;
+        justify-content: flex-start;
+        align-items: flex-start;
+        overflow-x: scroll;
+        overflow-y:hidden;
+        &::-webkit-scrollbar{
+            display: none;
+        }
+
+}
+</style>
diff --git a/src/components/common/v-wxScore-order-item.vue b/src/components/common/v-wxScore-order-item.vue
new file mode 100644
index 0000000..a15dd67
--- /dev/null
+++ b/src/components/common/v-wxScore-order-item.vue
@@ -0,0 +1,159 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:55:10
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-23 16:28:59
+ * @Description: 订单组件
+ -->
+<template>
+    <div class="order-item" @click="$emit('click')">
+        <header class="header flex-around-g text-center-g">
+            <div class="flex-1-g" :class="[index!==list.length-1 ? 'border-right' : '']" v-for="(item, index) in list"
+                 :key="index">
+                <h5 class="title" :class="[item.color,index===2?'ch-status':'']" >{{item.value}}</h5>
+                <p class="label">{{item.label}}</p>
+            </div>
+        </header>
+        <footer class="footer">
+            <div class="flex-between-g">
+                <slot name="bottom-status">
+                    <p v-if="userName" class="flex-start-g">
+                        <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                            <use  xlink:href="#iconyonghu"></use>
+                        </svg>
+                        <span class="text-clip-g" style="max-width:120px;">{{userName}}</span>
+                    </p>
+                    <p v-if="time" class="flex-start-g">
+                        <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                            <use xlink:href="#iconshijian"></use>
+                        </svg>
+                        <time>{{+time | timeformat('yyyy-MM-dd HH:mm:ss')}}</time>
+                    </p>
+                </slot>
+            </div>
+            <!-- <p v-if="user" class="flex-start-g">
+                <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                    <use xlink:href="#iconshanghumingcheng"></use>
+                </svg>
+                <span class="flex-1-g text-clip-g">{{user}}</span>
+            </p> -->
+            <p v-if="contName" class="flex-start-g">
+                <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                    <use xlink:href="#iconshanghumingcheng"></use>
+                </svg>
+                <span class="flex-1-g text-clip-g">{{contName}}</span>
+            </p>
+            <p v-if="term" class="flex-start-g">
+                <svg class="icon" aria-hidden="true" style="width:18px;height:18px">
+                    <use xlink:href="#iconshanghumingcheng"></use>
+                </svg>
+                <span class="flex-1-g text-clip-g">{{term}}</span>
+            </p>
+        </footer>
+    </div>
+</template>
+<script>
+    // list结构说明:
+    // [
+    //     {
+    //         label:'',
+    //         value:'',
+    //         color:''  //标识状态颜色
+    //     }
+    // ]
+    export default {
+        name: 'v-wxScore-order-item',
+        props: {
+            time: {//时间
+                type:[String,Number],
+            },
+            userName: String,
+            user: String,
+            contName: String,
+            orderId: Number,
+            term:String,
+            guaranteedAmt: Number,
+            list: { //header数据展示
+                type: Array
+            }
+        },
+        created() {
+            console.log(this.list)
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+
+    .ch-status{
+        font-size: 13px!important;
+        width: 60px;
+        margin-left: 30px;
+    }
+
+    .order-item {
+        background-color: @c-bg-fff;
+        margin-bottom: 10px;
+        padding: 0 8px 10px;
+        border-radius: 3px;
+        .header {
+            height: 80px;
+        }
+        // .info{
+        //     height: 100%;
+        //     .flex(center,center,'',column);
+        // }
+
+        .title {
+            font-size: @font-18;
+            margin-bottom: 8px;
+        }
+
+        .label {
+            font-size: @font-12;
+            color: @c-text-999;
+        }
+
+        .footer {
+            height: 75px;
+            line-height: 25px;
+            background-color: #F7F7FA;
+            padding: 0 12px;
+            font-size: @font-12;
+            color: @c-text-666;
+
+            .icon {
+                width: 18px;
+                margin-right: 8px;
+            }
+        }
+
+        .success {
+            color: #19BE6B;
+        }
+
+        .error {
+            color: #ED4014;
+        }
+
+        .warning {
+            color: #FF9900;
+        }
+    }
+
+    .border-right {
+        position: relative;
+        &::after {
+            content: "";
+            display: block;
+            position: absolute;
+            right: 0;
+            top: 50%;
+            transform: translateY(-50%);
+            width: 1px;
+            height: 32px;
+            background: rgba(230, 230, 230, 1);
+
+        }
+    }
+</style>
diff --git a/src/components/index.js b/src/components/index.js
new file mode 100644
index 0000000..c0ad637
--- /dev/null
+++ b/src/components/index.js
@@ -0,0 +1,40 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-15 15:46:39
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-30 11:15:38
+ * @Description:
+ */
+import vNavBar from './common/v-navbar';
+import vCell from './common/v-cell';
+import vDatacard from './common/v-datacard';
+import vButtonCircle from './common/v-button-circle';
+import vOrderItem from './common/v-order-item';
+import newvOrderItem from './common/new-v-order-item';
+import vWxScoreOrderItem from './common/v-wxScore-order-item';
+import vGzzjOrderItem from './common/v-gzzj-order-item';
+import vScrollX from './common/v-scroll-x';
+import vFilter from './common/v-filter';
+import fButton from './old/FButton';
+
+let arr = [
+    vNavBar,
+    vCell,
+    vDatacard,
+    vButtonCircle,
+    vOrderItem,
+    newvOrderItem,
+    vWxScoreOrderItem,
+    vGzzjOrderItem,
+    vScrollX,
+    vFilter,
+    fButton
+];
+
+export default {
+    install(Vue,opt){
+        arr.forEach(item=>{
+            Vue.component(item.name,item)
+        })
+    }
+}
diff --git a/src/components/old/FBlock.vue b/src/components/old/FBlock.vue
new file mode 100644
index 0000000..1d8d437
--- /dev/null
+++ b/src/components/old/FBlock.vue
@@ -0,0 +1,41 @@
+<template>
+    <div class="f-block">
+        <p class="block-title vux-1px-b">{{ title }}</p>
+        <div class="block-content">
+            <slot></slot>
+        </div>
+    </div>
+</template>
+
+<script>
+    /**
+     * Created by TANGiMING
+     * 2018-8-7
+     * 一个功能块,可以设置标题,内容自定义
+     * @prop        title       定义功能块的标题
+     * @slot        定义功能块内容
+     */
+    export default {
+        name: 'f-block',
+        props: {
+            title: {
+                type: String,
+                required: true,
+                default: '功能块'
+            }
+        }
+    };
+</script>
+<style lang="less" scoped>
+    .f-block {
+        margin-top: 10px;
+        background-color: #fff;
+        .block-title {
+            height: 44px;
+            line-height: 44px;
+            font-size: 15px;
+            padding-left: 20px;
+            color: #3a3a3a;
+        }
+    }
+</style>
diff --git a/src/components/old/FButton.vue b/src/components/old/FButton.vue
new file mode 100644
index 0000000..aa6fe4e
--- /dev/null
+++ b/src/components/old/FButton.vue
@@ -0,0 +1,113 @@
+/*
+ * @Author: hzq
+ * @Date: 2018-08-13 10:22:41
+ * @Last Modified by: hzq
+ * @Last Modified time: 2018-08-23 09:52:02
+ * @文件说明:按钮组件,仅有2种颜色的按钮
+ * @使用方式: <f-button @on-click="freeze" type="normal" width="160px">冻结渠道</f-button>  金色按钮
+              <f-button @on-click="search">商户查询</f-button>  黑色按钮
+ */
+<template>
+    <div class="f-button-component">
+        <button @click="handleButtonClick"
+                class="f-button"
+                :class="buttonClass" :disabled="disabled" :style="{width:width}">
+            <slot>{{ text }}</slot>
+        </button>
+        <slot name="sbIphoneX"></slot>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'f-button',
+        computed: {
+            // button的class
+            buttonClass() {
+                return [
+                    {
+                        'f-btn-disabled': this.disabled,
+                        'f-btn-normal': this.type === 'normal',
+                        'f-btn-fixed': this.fixed
+                    }
+                ];
+            }
+        },
+        methods: {
+            // 处理非城市那妞的button的事件
+            handleButtonClick() {
+                if (this.disabled) {
+                    return false;
+                }
+                this.$emit('on-click');
+            }
+        },
+        props: {
+            // type的按钮类型,默认按钮:default(黑色)||normal(金色)
+            type: {
+                type: String,
+                default: 'default'
+            },
+            // 是否禁用
+            disabled: {
+                type: Boolean,
+                default: false
+            },
+            // 按钮的文字
+            text: {
+                type: String
+            },
+            // 是否固定在底部
+            fixed: {
+                type: Boolean,
+                default: false
+            },
+            // 按钮宽度,默认宽度为width: 85.3%,在css里面定义的
+            width: {
+                type: String,
+                default: ''
+            }
+        }
+    };
+</script>
+
+<style lang="less">
+    @media (device-width: 375px) and (device-height: 812px) and (-webkit-min-device-pixel-ratio: 3) {
+        //如果以后出现375*812,非ios机型,可以加上下面语句
+        .sbIphoneX {
+            height: 34px !important;
+            background-color: @color-white;
+        }
+    }
+    .f-button-component {
+        .f-button {
+            display: block;
+            width: 85.3%;
+            height: 44px;
+            margin: 32px auto 0;
+            line-height: @font-line-height-base;
+            font-size: @font-size-primary;
+            color: #fff;
+            text-align: center;
+            border: none;
+            background-color: @color-button-default;
+            outline: 0;
+            -webkit-appearance: none;
+        }
+
+        .f-btn-normal {
+            background-color: @color-button-normal;
+        }
+        .f-btn-disabled {
+            background: #a3a3a3;
+        }
+
+        .f-btn-fixed {
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            width: 100%;
+            margin: 0;
+        }
+    }
+</style>
diff --git a/src/components/old/FConfirm.vue b/src/components/old/FConfirm.vue
new file mode 100644
index 0000000..115f1d5
--- /dev/null
+++ b/src/components/old/FConfirm.vue
@@ -0,0 +1,132 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 10:21:30
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-06 16:06:16
+ * @Description: 
+ -->
+<template>
+    <div class="f-confirm">
+        <Confirm :title='title' :confirm-text='confirmText' @on-confirm='confirmFunc' @on-cancel='cancelFunc' :cancel-text='cancelText' :show-cancel-button='showCancelBtn' v-model="showModal">
+            <div class="icon-box" v-if="showIcon">
+                <i class="iconfont" :class="iconClass" :style="{color:iconColor}"></i>
+            </div>
+            <div class="content-box">
+                <slot></slot>
+            </div>
+        </Confirm>
+    </div>
+</template>
+<script>
+    import {Confirm} from 'vux';
+    export default {
+        name: 'f-confirm',
+        components: {
+            Confirm
+        },
+        props: {
+            /**是否显示图标 */
+            showIcon: {
+                type: Boolean,
+                default: false
+            },
+            /**图标类名 */
+            iconClass: {
+                tyoe: String,
+                default: 'scene_Staging-shenhezhong'
+            },
+            /**图标颜色 */
+            iconColor: {
+                type: String,
+                default: '#fff'
+            },
+            /**标题 */
+            title: {
+                type: String
+            },
+            /**是否显示取消按钮 */
+            showCancelBtn: {
+                type: Boolean,
+                default: true
+            },
+            /**确定按钮的文字 */
+            confirmText: {
+                type: String,
+                default: '确定'
+            },
+            /**取消按钮的文字 */
+            cancelText: {
+                type: String,
+                default: '取消'
+            },
+            value: {
+                type: Boolean,
+                default: false
+            }
+        },
+        watch: {
+            value(val) {
+                this.showModal = val;
+            }
+        },
+        methods: {
+            confirmFunc(val) {
+                this.$emit('on-confirm');
+                this.$emit('input', false);
+            },
+            cancelFunc() {
+                this.$emit('on-cancel');
+                this.$emit('input', false);
+            }
+        },
+        data() {
+            return {
+                showModal: false
+            };
+        },
+        created(){
+            this.showModal=this.value
+        }
+    };
+</script>
+<style lang="less" scoped>
+    @import '../../style/mixin.less';
+    
+    .f-confirm {
+        position: relative;
+        & /deep/ .weui-dialog {
+            overflow: inherit;
+            .weui-dialog__ft {
+                font-size: @font-size-primary;
+                .weui-dialog__btn_primary {
+                    color: @color-text-three;
+                }
+                .weui-dialog__btn_default {
+                    color: @color-text-second;
+                }
+            }
+        }
+        .content-box {
+            color: @color-text-second;
+            font-size: @font-size-medium;
+            margin-top: 12px;
+            .flexLayout(center,center,center);
+        }
+        .icon-box {
+            position: absolute;
+            top: -20%;
+            left: 50%;
+            width: 64px;
+            height: 64px;
+            line-height: 64px;
+            border-radius: 50%;
+            background-color: @color-text-three;
+            text-align: center;
+            transform: translateX(-50%);
+            i {
+                color: #fff;
+                font-size: 36px;
+            }
+        }
+    }
+</style>
diff --git a/src/components/old/FConfirmSimple.vue b/src/components/old/FConfirmSimple.vue
new file mode 100644
index 0000000..df2a7c6
--- /dev/null
+++ b/src/components/old/FConfirmSimple.vue
@@ -0,0 +1,139 @@
+<!--
+ * @Date: 2019-08-30 10:21:30
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 10:52:10
+ * @Description: 
+ -->
+<template>
+    <div class="f-sample-confirm">
+        <Confirm :title='title' :confirm-text='confirmText'
+                 :hide-on-blur="true"
+                 @on-hide="handleHide"
+                 @on-confirm='confirmFunc' @on-cancel='cancelFunc'
+                 :cancel-text='cancelText' :show-cancel-button='showCancelBtn' v-model="showModal">
+            <div class="icon-box" v-if="showIcon">
+                <i class="iconfont" :class="iconClass" :style="{color:iconColor}"></i>
+            </div>
+            <div class="content-box">
+                <slot></slot>
+            </div>
+        </Confirm>
+    </div>
+</template>
+<script>
+    import {Confirm} from 'vux';
+    export default {
+        name: 'f-confirm',
+        components: {
+            Confirm
+        },
+        data() {
+            return {
+                showModal: false
+            };
+        },
+        created(){
+            this.showModal = this.value
+        },
+        props: {
+            /**是否显示图标 */
+            showIcon: {
+                type: Boolean,
+                default: false
+            },
+            /**图标类名 */
+            iconClass: {
+                type: String,
+                default: 'scene_Staging-shenhezhong'
+            },
+            /**图标颜色 */
+            iconColor: {
+                type: String,
+                default: '#fff'
+            },
+            /**标题 */
+            title: {
+                type: String
+            },
+            /**是否显示取消按钮 */
+            showCancelBtn: {
+                type: Boolean,
+                default: true
+            },
+            /**确定按钮的文字 */
+            confirmText: {
+                type: String,
+                default: '确定'
+            },
+            /**取消按钮的文字 */
+            cancelText: {
+                type: String,
+                default: '取消'
+            },
+            value: {
+                type: Boolean,
+                default: false
+            }
+        },
+        watch: {
+            value(val) {
+                this.showModal = val;
+            }
+        },
+        methods: {
+            confirmFunc(val) {
+                this.$emit('on-confirm');
+                this.$emit('input', false);
+            },
+            cancelFunc() {
+                this.$emit('on-cancel');
+                this.$emit('input', false);
+            },
+            handleHide () {
+                this.$emit('on-hide');
+                this.$emit('input', false);
+            }
+        },
+       
+    };
+</script>
+<style lang="less" >
+    .f-sample-confirm {
+        position: relative;
+       .weui-dialog {
+            overflow: inherit;
+            .weui-dialog__ft {
+                display: none;
+                font-size: @font-size-primary;
+                .weui-dialog__btn_primary {
+                    color: @color-text-three;
+                }
+                .weui-dialog__btn_default {
+                    color: @color-text-second;
+                }
+            }
+        }
+        .content-box {
+            color: @color-text-second;
+            font-size: @font-size-medium;
+            line-height: 1.8;
+            text-align: left;
+        }
+        .icon-box {
+            position: absolute;
+            top: -16%;
+            left: 50%;
+            width: 64px;
+            height: 64px;
+            line-height: 64px;
+            border-radius: 50%;
+            background-color: @color-text-three;
+            text-align: center;
+            transform: translateX(-50%);
+            i {
+                color: #fff;
+                font-size: 32px;
+            }
+        }
+    }
+</style>
diff --git a/src/components/old/FFilter.vue b/src/components/old/FFilter.vue
new file mode 100644
index 0000000..b1818d2
--- /dev/null
+++ b/src/components/old/FFilter.vue
@@ -0,0 +1,464 @@
++/*
+ * @Author: hzq
+ * @Date: 2018-08-08 15:55:18
+ * @Last Modified by: hzq
+ * @Last Modified time: 2018-08-08 18:14:51
+ * @文件说明:筛选组件 回调函数:on-filter,返回:筛选结果
+ * @使用方式:<f-filter :show.sync="showFilter" @on-filter="onFilter"></f-filter>
+ */
+<template>
+    <div class="f-filter" v-if="show" @click.self="hideFilter">
+        <div class="filter-warp">
+            <div class="filter-title">筛选</div>
+            <div class="filter-content">
+                <div class="content-item" v-for="i in filterList" :key="i.searchKey">
+                    <!-- 其他正常筛选条件 -->
+                    <div class="content-title" @click="openLi(i)">
+                        <span class="title">{{i.title}}</span>
+                        <i class="iconfont scene_Staging-return" :class="i.open?'up':'down'"></i>
+                    </div>
+                    <ul class="content-list" v-show="i.open">
+                        <li class="list-item" :class="{liChoosed:j.choosed}" v-for="j in i.data" :key="j.code" @click="liClick(i,j)">{{j.name}}</li>
+                    </ul>
+                </div>
+                <!-- 日期筛选条件 -->
+                <div class="content-item" v-if="calendar">
+                    <group class="calandarStyle">
+                        <div class="content-title">
+                            <span class="title">交易日期</span>
+                        </div>
+                        <div class="calendarDiv">
+                            <calendar title="" v-model="startDay" disable-future @on-change="startDayChange" placeholder="请选择起始日期"></calendar>
+                            <span class="line">-</span>
+                            <calendar title="" v-model="endDay" disable-future @on-change="endDayChange" placeholder="请选择结束日期"></calendar>
+                        </div>
+                    </group>
+                </div>
+                <!-- 金额筛选条件 -->
+                <div class="content-item" v-if="amt">
+                    <group class="amtStyle">
+                        <div class="content-title">
+                            <span class="title">{{ prodTitle }}</span>
+                        </div>
+                        <div class="amtDiv">
+                            <x-input placeholder="请输入起始金额" type="tel" :max="6" v-model="startAmt" text-align="center" @on-blur="startAmtBlur"></x-input>
+                            <span class="line">-</span>
+                            <x-input placeholder="请输入结束金额" type="tel" :max="6" v-model="endAmt" text-align="center" @on-blur="endAmtBlur"></x-input>
+                        </div>
+                    </group>
+                </div>
+                <!-- 省市区筛选条件 -->
+                <div v-if="showArea">
+                    <div class="content-item" v-for="i in areaInfo" :key="i.searchKey">
+                        <div class="content-title" @click="openLi(i)">
+                            <span class="title">{{i.title}}</span>
+                            <i class="iconfont scene_Staging-return" :class="i.open?'up':'down'"></i>
+                        </div>
+                        <ul class="content-list" v-show="i.open">
+                            <li class="list-item" :class="{liChoosed:j.choosed}" v-for="j in i.data" :key="j.code" @click="liClick(i,j)">{{j.name}}</li>
+                        </ul>
+                    </div>
+                </div>
+
+            </div>
+            <div class="filter-footer">
+                <f-button type="normal" width="100%" @on-click="init('reset')">重置</f-button>
+                <f-button width="100%" @on-click="confirm">确定</f-button>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+    import { Calendar } from 'vux';
+    export default {
+        name: 'f-filter',
+        components: { Calendar },
+        props: {
+            show: {
+                // 是否显示该组件
+                type: Boolean,
+                default: false
+            },
+            list: {
+                // 筛选数据
+                type: Array,
+                default() {
+                    return [
+                        // {
+                        //     title: '所属渠道',
+                        //     type: [],
+                        //     searchKey: 'channel',
+                        //     data: [
+                        //         {
+                        //             name: '七六八八',
+                        //             code: '7688'
+                        //         }
+                        //     ]
+                        // },
+                        // {
+                        //     title: '分期期数',
+                        //     type: '',
+                        //     searchKey: 'qishu',
+                        //     data: [
+                        //         {
+                        //             name: '3期',
+                        //             code: '3'
+                        //         }
+                        //     ]
+                        // }
+                    ];
+                }
+            },
+            one: {
+                //是否为单选,默认true
+                type: Boolean,
+                default: true
+            },
+            calendar: {
+                //是否为开启日期选择,默认false
+                type: Boolean,
+                default: false
+            },
+            amt: {
+                //是否为开启金额选择,默认false
+                type: Boolean,
+                default: false
+            },
+            showArea: {
+                //是否为开启省市区联查,默认false
+                type: Boolean,
+                default: false
+            },
+            // 商品金额title
+            prodTitle: {
+                type: String,
+                default: '商品金额'
+            }
+        },
+        data() {
+            return {
+                // 筛选数据列表
+                filterList: null,
+                // 筛选结果
+                filterResult: {},
+                // 开始时间
+                startDay: '',
+                // 结束时间
+                endDay: '',
+                // 开始金额
+                startAmt: '',
+                // 结束金额
+                endAmt: '',
+                // 是否能点击确认
+                canClick: true,
+                // 省市区数据
+                areaInfo: [
+                    {
+                        title: '省份',
+                        open: false,
+                        data: [],
+                        searchKey: 'provCode'
+                    },
+                    {
+                        title: '城市',
+                        open: false,
+                        data: [],
+                        searchKey: 'cityCode'
+                    },
+                    {
+                        title: '区县',
+                        open: false,
+                        data: [],
+                        searchKey: 'areaCode'
+                    }
+                ]
+            };
+        },
+        methods: {
+            // 显示、隐藏
+            openLi(i) {
+                i.open = !i.open;
+            },
+            // 每一个筛选块的点击事件
+            liClick(i, j) {
+                if (this.one) {
+                    i.data.map(val => {
+                        if (val.code === j.code) {
+                            j.choosed = !j.choosed;
+                        } else {
+                            val.choosed = false;
+                        }
+                    });
+                    if (Array.isArray(this.filterResult[i.searchKey])) {
+                        this.filterResult[i.searchKey] = j.choosed ? [j.code] : [];
+                    } else {
+                        this.filterResult[i.searchKey] = j.choosed ? j.code : '';
+                    }
+                    if (this.showArea) {
+                        if (i.searchKey === 'provCode') {
+                            let childList = this.$copy(j.childList);
+                            childList.map(val => this.$set(val, 'choosed', false));
+                            this.areaInfo[1].data = j.choosed ? childList : [];
+                            this.areaInfo[2].data = [];
+                            this.filterResult.cityCode = '';
+                            this.filterResult.areaCode = '';
+                        } else if (i.searchKey === 'cityCode') {
+                            let childList = this.$copy(j.childList);
+                            childList.map(val => this.$set(val, 'choosed', false));
+                            this.areaInfo[2].data = j.choosed ? childList : [];
+                            this.filterResult.areaCode = '';
+                        }
+                    }
+                } else {
+                    j.choosed = !j.choosed;
+                    let index = this.filterResult[i.searchKey].findIndex(val => {
+                        return val === j.code;
+                    });
+                    if (index === -1) {
+                        this.filterResult[i.searchKey].push(j.code);
+                    } else {
+                        this.filterResult[i.searchKey].splice(index, 1);
+                    }
+                }
+            },
+            // 开始日期值改变时触发
+            startDayChange() {
+                this.filterResult.startDay = this.startDay;
+            },
+            // 结束日期值改变时触发
+            endDayChange() {
+                if (
+                    Number(new Date(this.endDay)) < Number(new Date(this.startDay))
+                ) {
+                    this.$tool.toast('交易日期错误');
+                    this.endDay = '';
+                    return;
+                }
+                this.filterResult.endDay = this.endDay;
+            },
+            // 开始金额失去焦点时触发
+            startAmtBlur() {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.startAmt)) {
+                    this.canClick = true;
+                    this.filterResult.startAmt = this.startAmt;
+                } else {
+                    this.startAmt = Number(this.startAmt);
+                    if (isNaN(this.startAmt)) {
+                        v.toast('请输入正确的数字');
+                        this.startAmt = '';
+                        this.canClick = false;
+                    } else {
+                        this.canClick = true;
+                        this.filterResult.startAmt = this.startAmt;
+                    }
+                }
+            },
+            // 结束金额失去焦点时触发
+            endAmtBlur() {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.endAmt)) {
+                    this.canClick = true;
+                    this.filterResult.endAmt = this.endAmt;
+                } else {
+                    this.endAmt = Number(this.endAmt);
+                    if (isNaN(this.endAmt)) {
+                        v.toast('请输入正确的数字');
+                        this.endAmt = '';
+                        this.canClick = false;
+                    } else {
+                        this.canClick = true;
+                        this.filterResult.endAmt = this.endAmt;
+                    }
+                }
+            },
+            // 底部【确定】按钮,回调函数,返回选中的筛选值
+            confirm() {
+                if (this.canClick) {
+                    if (Number(this.endAmt) < Number(this.startAmt)) {
+                        this.$tool.toast('交易金额错误');
+                        return;
+                    }
+                    let result = this.$copy(this.filterResult);
+                    for (let k in result) {
+                        if (this.$tool.checkValEmpty(result[k])) delete result[k];
+                    }
+                    this.hideFilter();
+                    this.$emit('on-filter', result);
+                } else this.canClick = true;
+            },
+            // 初始化筛选数据
+            init(flag) {
+                if (this.filterList.length) {
+                    this.filterList.map(val => {
+                        if (flag === 'init') this.$set(val, 'open', false);
+                        let value = this.one ? val.type : [];
+                        this.$set(this.filterResult, val.searchKey, value);
+                        val.data.map(_val => this.$set(_val, 'choosed', false));
+                    });
+                    this.startDay = '';
+                    this.endDay = '';
+                    this.startAmt = '';
+                    this.endAmt = '';
+                    if (this.calendar) {
+                        this.filterResult.startDay = '';
+                        this.filterResult.endDay = '';
+                    }
+                    if (this.amt) {
+                        this.filterResult.startAmt = '';
+                        this.filterResult.endAmt = '';
+                    }
+                }
+                if (flag === 'reset' && this.showArea) this.initArea('reset');
+            },
+            // 初始化省市区筛选数据
+            initArea(flag) {
+                this.areaInfo.map(val => {
+                    if (flag === 'init') this.$set(val, 'open', true);
+                    this.$set(this.filterResult, val.searchKey, '');
+                    val.data.map(_val => this.$set(_val, 'choosed', false));
+                });
+                this.areaInfo[1].data = [];
+                this.areaInfo[2].data = [];
+            },
+            // 隐藏筛选组件
+            hideFilter() {
+                this.$emit('hideFilter', false);
+                this.$emit('update:show', false);
+            }
+        },
+        watch: {
+            list(val) {
+                this.filterList = this.$copy(val);
+                this.init('init');
+            }
+        },
+        activated() {
+            this.filterList = this.$copy(this.list);
+            this.init('init');
+            if (this.showArea) {
+                this.$api.getOrgAreaInfo({ orgType: 2 }).then(res => {
+                    this.areaInfo[0].data = this.$copy(res.body);
+                    this.initArea('init');
+                });
+            }
+        }
+    };
+</script>
+
+<style lang='less' scoped>
+    .f-filter {
+        position: fixed;
+        top: 0;
+        left: 0;
+        z-index: 500;
+        width: 100%;
+        height: 100%;
+        background-color: rgba(0, 0, 0, 0.6);
+        .filter-warp {
+            height: 100%;
+            margin-left: 75px;
+            background-color: #fff;
+            .filter-title {
+                height: 44px;
+                line-height: 44px;
+                padding: 0 12px;
+                font-size: @font-size-medium;
+                color: @color-text-placeholder;
+                background-color: @backgroundColor;
+            }
+            .filter-content {
+                height: calc(~'100% - 88px');
+                overflow-y: auto;
+                padding: 0 12px;
+                .content-item {
+                    margin-bottom: 12px;
+                    .content-title {
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        height: 37px;
+                        .title {
+                            color: @color-text-main;
+                            font-size: @font-size-medium;
+                        }
+                        .iconfont {
+                            color: @color-text-placeholder;
+                            font-size: @font-size-medium;
+                        }
+                        .up {
+                            transform: rotate(-90deg);
+                        }
+                        .down {
+                            transform: rotate(90deg);
+                        }
+                    }
+                    .content-list {
+                        .list-item {
+                            display: inline-block;
+                            width: 32%;
+                            height: 44px;
+                            margin-bottom: 2%;
+                            margin-right: 2%;
+                            text-align: center;
+                            line-height: 44px;
+                            color: @color-text-main;
+                            font-size: @font-size-small;
+                            background-color: @backgroundColor;
+                            overflow: hidden;
+                            vertical-align: bottom;
+                            &:nth-child(3n) {
+                                margin-right: 0;
+                            }
+                        }
+                        .liChoosed {
+                            color: #fff;
+                            background-color: @color-button-normal;
+                        }
+                    }
+                    .calendarDiv {
+                        display: flex;
+                        align-items: center;
+                        .line {
+                            height: 44px;
+                            line-height: 44px;
+                        }
+                    }
+                    .amtStyle {
+                        & /deep/ .weui-cells {
+                            &::before,
+                            &::after {
+                                display: none;
+                            }
+                            .amtDiv {
+                                display: flex;
+                                align-items: center;
+                                .weui-cell {
+                                    flex: 1;
+                                    padding: 0;
+                                    &::before,
+                                    &::after {
+                                        display: none;
+                                    }
+                                    .weui-input::-webkit-input-placeholder {
+                                        font-size: @font-size-small;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            .filter-footer {
+                display: flex;
+                & /deep/ .f-button-component {
+                    flex: 1;
+                    .f-button {
+                        margin: 0;
+                    }
+                }
+            }
+        }
+    }
+</style>
diff --git a/src/components/old/FFooter.vue b/src/components/old/FFooter.vue
new file mode 100644
index 0000000..7debf18
--- /dev/null
+++ b/src/components/old/FFooter.vue
@@ -0,0 +1,57 @@
+/*
+ * @Author: hzq
+ * @Date: 2018-08-08 10:08:52
+ * @Last Modified by: hzq
+ * @Last Modified time: 2018-08-23 09:38:25
+ * @文件说明: 底部tabbar选项组件
+ * @使用方式:<f-footer index="2"></f-footer>
+ */
+<template>
+    <tabbar class="tabbar">
+        <tabbar-item v-for="(i,index) in footerMenu" :key="index" :selected="index===currIndex" @on-item-click="$router.push(i.router)">
+            <i slot="icon" class="iconfont" :class="i.icon"></i>
+            <span slot="label">{{i.label}}</span>
+        </tabbar-item>
+    </tabbar>
+</template>
+
+<script>
+    import {Tabbar, TabbarItem} from 'vux';
+
+    export default {
+        name: 'f-footer',
+        components: {Tabbar, TabbarItem},
+        data() {
+            return {
+                footerMenu: []
+            };
+        },
+        computed: {
+            currIndex() {
+                return this.footerMenu.findIndex(val => {
+                    return val.router === this.$route.path;
+                });
+            }
+        },
+        created() {
+            this.footerMenu = sessionStorage.getItem('footerMenu');
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .tabbar {
+        position: fixed;
+        height: 49px;
+        z-index: 499;
+        &::before {
+            border-top-color: @color-line !important;
+        }
+        & /deep/ .weui-tabbar__icon {
+            height: 24px;
+            .iconfont {
+                font-size: @font-size-primary;
+            }
+        }
+    }
+</style>
diff --git a/src/components/old/FLoad.vue b/src/components/old/FLoad.vue
new file mode 100644
index 0000000..20628a4
--- /dev/null
+++ b/src/components/old/FLoad.vue
@@ -0,0 +1,52 @@
+/*
+ * @Author: hzq
+ * @Date: 2018-08-07 09:23:43
+ * @Last Modified by: hzq
+ * @Last Modified time: 2018-08-13 16:10:18
+ * @文件说明:全局加载组件
+ * @使用方式:this.$loading({isLoading: false})
+ */
+<template>
+    <div class="f-load">
+        <loading :show="isLoading" text="加载中"></loading>
+    </div>
+</template>
+
+<script>
+    import {Loading, TransferDomDirective as TransferDom} from 'vux';
+    export default {
+        name: 'f-load',
+        directives: {TransferDom},
+        components: {Loading},
+        computed: {
+            isLoading() {
+                return this.$store.state.isLoading;
+            }
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .f-load {
+        & /deep/ .weui-toast {
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+            align-items: center;
+            width: 84px;
+            height: 84px;
+            min-height: 84px;
+            .weui-loading {
+                width: 28px;
+                height: 28px;
+                margin: 0;
+            }
+            .weui-toast__content {
+                position: relative;
+                top: 7px;
+                margin: 0;
+                font-size: @font-size-small;
+            }
+        }
+    }
+</style>
diff --git a/src/components/old/FNoData.vue b/src/components/old/FNoData.vue
new file mode 100644
index 0000000..72a70a1
--- /dev/null
+++ b/src/components/old/FNoData.vue
@@ -0,0 +1,35 @@
+/*
+ * @Author: hzq
+ * @Date: 2018-08-10 16:22:09
+ * @Last Modified by: hzq
+ * @Last Modified time: 2018-08-10 16:41:27
+ * @文件说明:没有数据组件
+ * @使用方式:<f-no-data></f-no-data>
+ */
+<template>
+    <div class="f-no-data">
+        <img class="img" src="../../assets/imgs/nodata.png" alt="nodata">
+        <p class="text">亲,还没相关数据哦</p>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'f-no-data'
+    };
+</script>
+
+<style lang='less' scoped>
+    .f-no-data {
+        margin-top: 80px;
+        text-align: center;
+        .img {
+            width: 91px;
+        }
+        .text {
+            margin-top: 15px;
+            font-size: @font-size-medium;
+            color: @color-text-placeholder;
+        }
+    }
+</style>
diff --git a/src/components/old/FPosition.vue b/src/components/old/FPosition.vue
new file mode 100644
index 0000000..fcbbe96
--- /dev/null
+++ b/src/components/old/FPosition.vue
@@ -0,0 +1,103 @@
+/*
+ * @Author: hzq
+ * @Date: 2018-08-08 11:05:56
+ * @Last Modified by: zxq
+ * @Last Modified time: 2018-08-18 14:00:10
+ * @文件说明:字母列表组件
+ * @使用方式:<f-position> <div>你的列表代码</div> </f-position>,可参考:views/agent/channelManagement.vue
+ */
+<template>
+    <div class="position-page">
+        <!--滚动区域-->
+        <div class="position-content" :style="{height: contentHeight}" ref="posContent">
+            <!--数据列表-->
+            <slot></slot>
+            <!--首字母列表-->
+            <ul class="letter_ul">
+                <li v-for="letter in letterList" :key="letter" v-html="letter" @click="clickLetter(letter)"></li>
+            </ul>
+        </div>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'f-position',
+        props: {
+            height: {
+                // 需要减去的高度
+                type: Number,
+                default: 96
+            },
+            letterList: {
+                // 字母列表数据
+                type: Array,
+                default() {
+                    return [
+                        'A',
+                        'B',
+                        'C',
+                        'D',
+                        'E',
+                        'F',
+                        'G',
+                        'H',
+                        'J',
+                        'K',
+                        'L',
+                        'M',
+                        'N',
+                        'P',
+                        'Q',
+                        'R',
+                        'S',
+                        'T',
+                        'W',
+                        'X',
+                        'Y',
+                        'Z'
+                    ];
+                }
+            }
+        },
+        computed: {
+            contentHeight() {
+                // 计算列表内容高度
+                return document.documentElement.clientHeight - this.height + 'px';
+            }
+        },
+        methods: {
+            // 点击一个字母事件
+            clickLetter(letter) {
+                let dom = document.getElementById('letter_' + letter);
+                if (dom) {
+                    this.$refs.posContent.scrollTop = dom.offsetTop - this.height;
+                } else {
+                    // this.$refs.posContent.scrollTop = 0;
+                }
+            }
+        }
+    };
+</script>
+
+
+<style lang="less" scoped>
+    .position-page {
+        .position-content {
+            overflow-y: auto;
+        }
+        .letter_ul {
+            position: fixed;
+            top: 50%;
+            right: 0px;
+            width: 30px;
+            text-align: center;
+            font-size: @font-size-small;
+            color: @color-text-three;
+            background-color: transparent;
+            transform: translate3d(0, -50%, 0);
+            z-index: 999;
+            line-height: 1.5;
+        }
+    }
+</style>
diff --git a/src/components/old/FSearch.vue b/src/components/old/FSearch.vue
new file mode 100644
index 0000000..a978bbb
--- /dev/null
+++ b/src/components/old/FSearch.vue
@@ -0,0 +1,80 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 10:21:30
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-06 16:06:52
+ * @Description: 
+ -->
+/*
+* @Author: hzq
+* @Date: 2018-08-08 15:12:59
+* @Last Modified by: hzq
+* @Last Modified time: 2018-08-10 16:13:12
+* @文件说明:圆角搜索输入框组件--实时搜索0.2s延迟 回调函数:on-value,返回输入框的值
+* @使用方式: <f-search placeholder="渠道名称/负责人姓名/负责人电话" @on-value="onValue"></f-search>,可参考:views/agent/channelManagement.vue
+*/
+<template>
+    <div class="f-search">
+        <group>
+            <x-input ref="inputDom" :placeholder="placeholder" v-model="queryStr" :debounce="200" @on-change="inputChange" :show-clear="true">
+                <i slot="label" class="iconfont scene_Staging-normal"></i>
+            </x-input>
+        </group>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'f-search',
+        props: {
+            placeholder: {
+                //暗提示文字
+                type: String,
+                default: '请输入'
+            },
+            queryStr: {
+                type: String
+            }
+        },
+        methods: {
+            inputChange(value) {
+                this.$emit('on-value', value.trim());
+            },
+        },
+        deactivated() {
+            this.$refs.inputDom.reset();
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .f-search {
+        & /deep/ .weui-cells {
+            height: 32px;
+            margin: 10px 12px;
+            border-radius: 50px;
+
+            &::after,
+            &::before {
+                display: none;
+            }
+
+            .weui-cell {
+                height: 32px;
+                padding: 5px 15px;
+
+                &::after {
+                    display: none;
+                }
+
+                .scene_Staging-normal {
+                    margin-right: 10px;
+                    color: @color-text-placeholder;
+                }
+            }
+
+        }
+    }
+
+</style>
diff --git a/src/components/old/FSpace.vue b/src/components/old/FSpace.vue
new file mode 100644
index 0000000..4a856e6
--- /dev/null
+++ b/src/components/old/FSpace.vue
@@ -0,0 +1,41 @@
+<template>
+    <div>
+        <div class="f-space-small" v-if="type === 'small'"></div>
+        <div class="f-space-large" v-if="type === 'large'"></div>
+    </div>
+</template>
+
+<script>
+    /**
+     * Created by c.y on 2018/3/16.
+     * 组件的命名 项目名(F---filean) + 组件的描述(区别与框架的组件)
+     * 全局板块的区分,以及footer的遮挡空白区域, small代表版块的区分,large代表footer的遮挡空白区域
+     */
+    export default {
+        name: 'fspace',
+        props: {
+            type: {
+                type: String,
+                default: 'small'
+            }
+        }
+    };
+</script>
+
+<style lang="less">
+    .f-space-small {
+        width: 100%;
+        height: 10px;
+        // background-color: @color-background-default;
+    }
+    .f-space-large {
+        width: 100%;
+        height: 59px;
+        background: transparent;
+    }
+    @media (device-width: 375px) and (device-height: 812px) and (-webkit-min-device-pixel-ratio: 3) {
+        .f-space-large {
+            height: 83px;
+        }
+    }
+</style>
diff --git a/src/components/old/FTips.vue b/src/components/old/FTips.vue
new file mode 100644
index 0000000..9e68d63
--- /dev/null
+++ b/src/components/old/FTips.vue
@@ -0,0 +1,28 @@
+/*
+ * @Author: hzq
+ * @Date: 2018-08-06 15:19:07
+ * @Last Modified by: hzq
+ * @Last Modified time: 2018-08-07 15:29:15
+ * @文件说明:页面提示文字
+ */
+<template>
+    <div class="f-tips">
+        <slot></slot>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'f-tips'
+    };
+</script>
+
+<style lang="less" scoped>
+    .f-tips {
+        padding: 10px 15px;
+        // height: 40px;
+        // line-height: 40px;
+        color: @color-text-three;
+        font-size: @font-size-small;
+    }
+</style>
diff --git a/src/components/old/FToast.vue b/src/components/old/FToast.vue
new file mode 100644
index 0000000..f8a0532
--- /dev/null
+++ b/src/components/old/FToast.vue
@@ -0,0 +1,83 @@
+/*
+ * @Author: hzq
+ * @Date: 2018-08-07 09:23:43
+ * @Last Modified by: hzq
+ * @Last Modified time: 2018-08-13 16:11:17
+ * @文件说明:非文字提示组件-成功、失败、网络异常
+ * @使用方式:this.$toast({
+                            type: 'success||fail||network',
+                            text: '冻结成功'
+                        });
+ */
+<template>
+    <div class="f-toast">
+        <div v-if="toastType">
+            <toast :value="true" position="middle" :is-show-mask="true" :time="1000" @on-hide="onHide">
+                <div slot="default" class="slot">
+                    <i class="iconfont" :class="iconClass"></i>
+                    <div>{{toastText}}</div>
+                </div>
+            </toast>
+        </div>
+    </div>
+</template>
+
+<script>
+    import {Toast} from 'vux';
+    export default {
+        name: 'f-toast',
+        components: {Toast},
+        computed: {
+            iconClass() {
+                // 计算iconfont
+                if (this.$store.state.toastType === 'success')
+                    return 'scene_Staging-chenggong';
+                else if (this.$store.state.toastType === 'fail')
+                    return 'scene_Staging-shibai';
+                else if (this.$store.state.toastType === 'network')
+                    return 'scene_Staging-wangluoyichang';
+            },
+            toastType() {
+                return this.$store.state.toastType;
+            },
+            toastText() {
+                return this.$store.state.toastText;
+            }
+        },
+        methods: {
+            onHide() {
+                this.$toast({type: '', tetx: ''});
+            }
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .f-toast {
+        & /deep/ .weui-toast {
+            width: 84px;
+            height: 84px;
+            min-height: 84px;
+            .weui-icon_toast {
+                display: none;
+            }
+            .weui-toast__content {
+                height: 84px;
+                min-height: 84px;
+                margin: 0;
+                font-size: @font-size-small;
+                .slot {
+                    display: flex;
+                    flex-direction: column;
+                    justify-content: center;
+                    align-items: center;
+                    height: 84px;
+                    min-height: 84px;
+                    .iconfont {
+                        font-size: 28px;
+                    }
+                }
+            }
+        }
+    }
+</style>
diff --git a/src/components/old/FUpLoad.vue b/src/components/old/FUpLoad.vue
new file mode 100644
index 0000000..986269b
--- /dev/null
+++ b/src/components/old/FUpLoad.vue
@@ -0,0 +1,155 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 10:21:30
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-30 10:21:30
+ * @Description: 
+ -->
+/*
+ * @Author: hzq
+ * @Date: 2018-07-24 15:22:44
+ * @Last Modified by: CL
+ * @Last Modified time: 2019-01-29 16:49:46
+ * @说明: 上拉加载、下拉刷新组件,现用于客户列表、订单列表、客户经理列表
+ * 参数说明 : defheight 默认高度,距离底部的高度
+ * @使用说明: 以下为使用方法
+ <f-upload :querys="querys" apiUrl="clientList" @returnData="returnData">
+    //以下代码为你的列表html
+   <ul>
+       <li>你的列表数据</li>
+   </ul>
+   //以上代码为你的列表html
+ </f-upload>
+ */
+
+<template>
+    <div class="f-upload">
+        <Scroller ref="scroller"
+                  lock-x
+                  :height="defHeight" use-pullup :pullup-config="pullUpConfig" @on-pullup-loading="upLoadData">
+            <div>
+                <slot></slot>
+            </div>
+            <divider v-if="showNone">我是有底线的</divider>
+        </Scroller>
+    </div>
+</template>
+
+<script>
+import { Scroller, Divider } from 'vux';
+export default {
+    name: 'f-upload',
+    components: { Scroller, Divider},
+    props: {
+        apiUrl: {
+            //数据请求接口地址,必填
+            type: String,
+            required: true
+        },
+        querys: {
+            //数据请求接口参数,选填
+            type: Object
+        },
+        pageSize: {
+            // 查询数量,选填
+            type: Number,
+            default: 10
+        },
+        lastId: {
+            // 列表最后一个数据的id,用于上拉加载查询,必填
+            required: true,
+            default: '001'
+        },
+        disablePullup: {
+            // 是否禁用上拉
+            default: 1
+        },
+        loadData: {
+            // 是否在加载数据
+            type: Boolean,
+            default: false
+        },
+        defHeight: {
+            // 是否在加载数据
+            type: String,
+            default: "-150"
+        },
+        showNone: {
+            type: Boolean,
+        }
+    },
+    data() {
+        return {
+            //上拉加载 组件参数
+            pullUpConfig: {
+                height: 50,
+                downContent: '释放加载',
+                upContent: '上拉加载',
+                loadingContent: '正在加载...'
+            },
+            //是否正在访问接口
+            isLoadData: false,
+        };
+    },
+    watch: {
+        disablePullup(val) {
+            if (val.length) {
+                if (val.length % this.pageSize) {
+                    this.$refs.scroller.disablePullup();
+                } else {
+                    this.$refs.scroller.enablePullup();
+                }
+            } else {
+                this.$refs.scroller.disablePullup();
+            }
+        },
+        loadData(val) {
+            if (val) {
+                this.$refs.scroller.reset({ top: 0 });
+            }
+        },
+    },
+
+    methods: {
+        //上拉加载数据
+        upLoadData() {
+            // 1.判断是否已经在加载数据了
+            if (this.isLoadData) return;
+            this.isLoadData = true;
+            // 2.收集【上拉刷新】操作所需的参数
+            let obj = {
+                ...this.querys,
+                orderId: this.lastId
+            };
+            // 3.访问接口
+            this.$api[this.apiUrl](obj).then(res => {
+                 if (res.body.length !== this.pageSize) {
+                     // 禁用上拉, 判断页面是否加载完成
+                     this.$refs.scroller.disablePullup();
+                 }
+                // 将列表数据返回给父组件
+                this.$emit('returnData', res.body);
+                setTimeout(() => {
+                    this.$nextTick(() => {
+                        this.isLoadData = false;
+                        // 下拉加载操作完成
+                        this.$refs.scroller.donePullup();
+                        // this.$refs.scroller.reset({top: 0});
+                    });
+                }, 200);
+            });
+        }
+    },
+    created() {
+        this.isLoadData = false;
+    }
+};
+</script>
+
+<style lang="less" scoped>
+    .f-upload {
+        & /deep/ .xs-plugin-pullup-container {
+            line-height: 50px;
+        }
+    }
+</style>
diff --git a/src/components/old/FVercode.vue b/src/components/old/FVercode.vue
new file mode 100644
index 0000000..5ef2ceb
--- /dev/null
+++ b/src/components/old/FVercode.vue
@@ -0,0 +1,118 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 10:21:30
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-06 16:06:30
+ * @Description: 
+ -->
+<template>
+    <div class="f-vercode" :style="{margin:margin?'10px 0':'0'}">
+        <group>
+            <x-input placeholder='请输入短信验证码' @on-change='changeVal' v-model="verCode" :max="4">
+                <div slot="right" class="getVerCode" :style="{color:abledClick?'#bfa073':'#a3a3a3'}" @click="getStatus">{{ verText }}</div>
+            </x-input>
+        </group>
+    </div>
+</template>
+<script>
+    export default {
+        name: 'f-vercode',
+        data() {
+            return {
+                verCode: '',
+                abledClick: true,
+                verText: '发送验证码',
+                timer: null
+            };
+        },
+        props: {
+            clear: {
+                type: Boolean,
+                default: false
+            },
+            value: {
+                type: String,
+                default: ''
+            },
+            passStatus: {
+                type: Boolean,
+                required: true,
+                default: false
+            },
+            api: {
+                type: String,
+                required: true,
+                default: ''
+            },
+            params: {
+                type: Object,
+                default: () => {
+                    return {};
+                }
+            },
+            margin: {
+                type: Boolean,
+                default: false
+            }
+        },
+        watch: {
+            passStatus(val) {
+                if (val) {
+                    this.sendCode();
+                }
+            },
+            clear(val) {
+                if (val) {
+                    this.abledClick = true;
+                    clearInterval(this.timer);
+                    this.verText = '发送验证码';
+                    this.$emit('update:passStatus', false);
+                }
+            }
+        },
+        methods: {
+            changeVal(val) {
+                this.$emit('input', val);
+            },
+            getStatus() {
+                this.$emit('sendCode');
+            },
+            sendCode() {
+                if (!this.abledClick) {
+                    return;
+                }
+                this.abledClick = false;
+                // 设置倒计时
+                let countDown = 60;
+                this.verText = countDown + 's后重发';
+                this.timer = setInterval(() => {
+                    countDown--;
+                    this.verText = countDown + 's后重发';
+                    if (countDown === 0) {
+                        clearInterval(this.timer);
+                        this.verText = '重新发送';
+                        this.$emit('update:passStatus', false);
+                        this.abledClick = true;
+                    }
+                }, 1000);
+                //开始拉取接口
+                this.$api[this.api](this.params).then(res => {
+                    this.$emit('end', res);
+                });
+            }
+        }
+    };
+</script>
+<style lang="less" scoped>
+.f-vercode {
+    .getVerCode {
+        width: 105px;
+        text-align: center;
+        box-sizing: border-box;
+        padding-left: 18px;
+        border-left: 1px solid #dddddd;
+        color: @color-text-three;
+        font-size: @font-size-medium;
+    }
+}
+</style>
diff --git a/src/components/old/upload/uploadImg.vue b/src/components/old/upload/uploadImg.vue
new file mode 100644
index 0000000..9368dd1
--- /dev/null
+++ b/src/components/old/upload/uploadImg.vue
@@ -0,0 +1,375 @@
+<!--
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-25 10:54:21
+ * @Description:
+ -->
+<template>
+  <div class="component-photo-upload">
+    <!--title 和上传按钮的图标-->
+    <div class="pic-title">
+      <h4>{{ title }}</h4>
+    </div>
+    <!--图片上传列表,删除即重新上传-->
+    <div class="photo-list">
+      <!--图片上传列表-->
+      <div
+        class="pic-item-box"
+        v-for="(item, index) in picList"
+        v-if="picList instanceof Array && picList.length"
+        :key="index"
+      >
+        <div class="close-div">
+          <div class="close-div-box">
+            <van-icon name="clear" v-if="picList.length > 1" @click="deletPhoto(item,index)" />
+          </div>
+        </div>
+        <img :src="item.fileUrl" @click="handleDeletePicture(index)" />
+      </div>
+      <!--上传按钮-->
+      <div class="pic-item-box" @click="handleUploadPicture" v-if="showUploadBtn">
+        <i class="iconfont scene_Staging-jiahao"></i>
+      </div>
+    </div>
+    <!-- 真正的上传按钮-->
+    <div>
+      <input
+        style="display: none"
+        type="file"
+        ref="androidInputFileImage"
+        @change="handlePhotoChange($event)"
+        accept="image/*"
+      />
+      <input
+        style="display: none"
+        type="file"
+        ref="androidInputFileCapture"
+        @change="handlePhotoChange($event)"
+        accept="image/*"
+        capture="camera"
+      />
+    </div>
+    <!--选择上传图片还是拍照-->
+
+    <van-action-sheet
+      v-model="selectModel"
+      :close-on-click-overlay="false"
+      cancel-text="取消"
+      :actions="nav"
+      @select="handleMenuSelect"
+    ></van-action-sheet>
+  </div>
+</template>
+
+<script>
+import { SET_APP_LOADING } from "@/store/mutations-types";
+import { mapMutations } from "vuex";
+import EXIF from "exif-js";
+
+import { _imgCompress, _fileToBase64 } from "@/utils/index";
+import Vue from "vue";
+import { Icon } from "vant";
+
+Vue.use(Icon);
+export default {
+  name: "sceneUploadFile",
+  data() {
+    return {
+      selectModel: false, // 模态窗选择拍照还是相册
+      deleteIndex: -1, // 删除图片的index
+      nav: [{ name: "拍照" }, { name: "从手机相册选择" }]
+    };
+  },
+  props: [
+    "title",
+    "fileType", // 文件类型
+    "picList",
+    "sourceType",
+    "typeId"
+  ],
+  computed: {
+    showUploadBtn() {
+      let num = Number(this.fileType),
+        isArray = Array.isArray(this.picList);
+
+      // 这里只能上传一张
+      if (
+        num === 0 ||
+        num === 2 ||
+        num === 3 ||
+        num === 8 ||
+        num === 9 ||
+        num === 11 ||
+        num === 14 ||
+        num === 25
+      ) {
+        return isArray && this.picList.length < 1;
+      } else if (num === 10 || num === 13) {
+        // 这个类型,只能上传两张
+        return isArray && this.picList.length < 2;
+      } else {
+        return isArray && this.picList.length < 3;
+      }
+    }
+  },
+  methods: {
+    ...mapMutations([SET_APP_LOADING]),
+    //删除照片
+    deletPhoto(item, i) {
+      //console.log(item);
+      this.picList.splice(i, 1);
+    },
+    // 处理图片上传的事件(deleteIndex---删除图片的索引)
+    handlePhotoChange: function(evt) {
+      let that = this;
+      that.SET_APP_LOADING(true);
+      // 图片是单选还是多选
+      const files = Array.prototype.slice.call(evt.target.files);
+      // 图片的处理
+      files.forEach(function(file, i) {
+        // 图片的拍摄方向
+        var orientation;
+        // 格式是否支持的判断
+        if (!/\/(?:jpg|jpeg|png)/i.test(file.type)) {
+          that.$vux.toast.text("仅支持jpg|png图片格式", "middle");
+          that.SET_APP_LOADING(false);
+          return;
+        }
+        // 读取图片的元信息
+        EXIF.getData(file, function() {
+          orientation = EXIF.getTag(this, "Orientation");
+        });
+        // 获取文件内容
+        let reader = new FileReader();
+        reader.onload = function() {
+          that.$refs.androidInputFileCapture.value = null;
+          that.$refs.androidInputFileImage.value = null;
+          // 使用exif,处理图片的旋转问题,然后执行回调函数
+          that.getImgData(this.result, orientation, function(data) {
+            // 这里可以使用校正后的图片data了
+            var img = new Image();
+            img.src = data;
+
+            // 图片加载完毕之后进行压缩,然后上传
+            if (img.complete) {
+              callback();
+            } else {
+              img.onload = callback;
+            }
+            // 图片的路径获取成功后
+            function callback() {
+             
+              // 压缩后的图片的base64字符串
+              let data = that.compress(img);
+              // 调取接口上传图片
+              that.submitUploadImg(that.fileType, data, that.deleteIndex);
+            }
+          });
+        };
+        reader.readAsDataURL(file);
+      });
+    },
+    // type文件上传的路径,data图片的base64字符串(删除图片即重新上传)
+    submitUploadImg: function(type, base64, deleteIndex) {
+      let that = this;
+      // 防止操作的模态窗
+      let submitInfo = {
+        base64Data: base64.split(",")[1], // 文件base64
+        fileType: type,
+        suffix: base64
+          .split(",")[0]
+          .split(";")
+          ["0"].split("/")[1]
+      };
+        this.$api
+          .merUploadPhoto({
+            ...submitInfo,
+            sourceType: that.sourceType
+          })
+          .then(
+            res => {
+              // 如果存在删除图片索引
+              if (deleteIndex >= 0) {
+                // 删除以前的那张照片,然后添加新上传的图片
+                this.picList.splice(deleteIndex, 1, {
+                  fileUrl: res.body.fileUrl,
+                  id: res.body.id
+                });
+                // 将删除索引重置为-1,即当前状态重置为新增,而非删除状态
+                this.deleteIndex = -1;
+              } else {
+                this.picList.unshift({
+                  fileUrl: res.body.fileUrl,
+                  id: res.body.id
+                });
+              }
+              // 如果是支付二维码的话,需要调取检查授权
+              if (Number(this.fileType) === 8) {
+                this.checkAuth(res.body.id);
+              }
+              that.SET_APP_LOADING(false);
+              // 提交整个图片列表
+              this.$emit("on-change-pic", this.picList);
+            },
+            error => {
+              this.SET_APP_LOADING(false);
+            }
+          );
+    },
+    // 图片旋转处理
+    getImgData: function(img, dir, next) {
+      // @param {string} img 图片的base64
+      // @param {int} dir exif获取的方向信息
+      // @param {function} next 回调方法,返回校正方向后的base64
+      var image = new Image();
+      let canvas = document.createElement("canvas");
+      let ctx = canvas.getContext("2d");
+      image.onload = function() {
+        let resultWidth = 0;
+        let resultHeight = 0;
+        let maxWidthOrHeight = 1024;
+        let drawWidth = this.naturalWidth;
+        let drawHeight = this.naturalHeight;
+
+        // 以下改变图片大小,控制最大宽度为1024
+        var maxSide = Math.max(drawWidth, drawHeight);
+        if (maxSide > maxWidthOrHeight) {
+          let minSide = Math.min(drawWidth, drawHeight);
+          minSide = (minSide / maxSide) * maxWidthOrHeight;
+          maxSide = maxWidthOrHeight;
+          if (drawWidth > drawHeight) {
+            resultWidth = maxSide;
+            resultHeight = minSide;
+          } else {
+            resultWidth = minSide;
+            resultHeight = maxSide;
+          }
+        } else {
+          resultWidth = drawWidth;
+          resultHeight = drawHeight;
+        }
+
+        if (dir === 3) {
+          canvas.width = resultWidth;
+          canvas.height = resultHeight;
+          ctx.translate(resultWidth, resultHeight);
+          ctx.rotate(Math.PI);
+        } else if (dir === 6) {
+          canvas.width = resultHeight;
+          canvas.height = resultWidth;
+          ctx.translate(resultHeight, 0);
+          ctx.rotate(Math.PI / 2);
+        } else if (dir === 8) {
+          canvas.width = resultHeight;
+          canvas.height = resultWidth;
+          ctx.translate(0, resultWidth);
+          ctx.rotate(-Math.PI / 2);
+        } else {
+          canvas.width = resultWidth;
+          canvas.height = resultHeight;
+        }
+        ctx.drawImage(this, 0, 0, resultWidth, resultHeight);
+        // 返回校正图片
+        next(canvas.toDataURL("image/jpeg", 0.8));
+      };
+      image.src = img;
+    },
+    compress(img) {
+      let quality = 0.92, //压缩比例
+        w = img.width,
+        h = img.height,
+        canvas = document.createElement("canvas"),
+        ctx = canvas.getContext("2d");
+      canvas.width = w;
+      canvas.height = h;
+      ctx.drawImage(img, 0, 0, w, h);
+     
+      return canvas.toDataURL("image/jpeg", quality);
+    },
+    checkAuth(id) {
+      // authStatus: 0 未授权  1授权---用户授权后才能执行下一步
+      this.$api
+        .checkAuth({
+          fileId: id
+        })
+        .then(res => {
+          if (res.body.authStatus === 1) {
+            this.$emit("on-check-auth", "下一步");
+          }
+        });
+    },
+    // 点击上传按钮
+    handleUploadPicture() {
+      this.selectModel = true;
+    },
+    // 选择拍照或者相册选项
+    handleMenuSelect(item, index) {
+      if (index === 0) {
+        this.$refs.androidInputFileCapture.click();
+      } else {
+        this.$refs.androidInputFileImage.click();
+      }
+      this.selectModel = false;
+    },
+    // 处理图片的删除
+    handleDeletePicture(index) {
+      this.deleteIndex = index;
+      this.selectModel = true;
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped >
+.component-photo-upload {
+  .pic-title {
+    h4 {
+      padding: 10px 0;
+      font-size: 15px;
+      line-height: 1;
+      color: #333;
+      font-weight: normal;
+    }
+  }
+
+  .photo-list {
+    display: flex;
+    padding-bottom: 20px;
+    flex-wrap: wrap;
+
+    .pic-item-box {
+      position: relative;
+      height: 100px;
+      width: 100px;
+      margin-right: 10px;
+      margin-bottom: 10px;
+      line-height: 100px;
+      text-align: center;
+      background-color: #fff;
+      border: 1px dashed #d9d9d9;
+      .close-div {
+        position: absolute;
+        top: -45px;
+        right: -10px;
+        //border: 1px red solid;
+        //border-radius:50% ;
+        height: 20px;
+        width: 20px;
+        .close-div-box {
+          //border: 1px red solid;
+          //border-radius:50% ;
+          height: 20px;
+          width: 20px;
+          i {
+            font-size: 20px;
+          }
+        }
+      }
+      img {
+        width: 100%;
+        height: 100%;
+      }
+    }
+  }
+}
+</style>
diff --git a/src/components/old/upload/uploadImgStore.vue b/src/components/old/upload/uploadImgStore.vue
new file mode 100644
index 0000000..855ae93
--- /dev/null
+++ b/src/components/old/upload/uploadImgStore.vue
@@ -0,0 +1,311 @@
+<!--
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:54:16
+ * @Description:
+ -->
+<template>
+    <div class="component-photo-upload" v-if="Number(this.bizLicenseType) === 2">
+        <!--title 和上传按钮的图标-->
+        <div class="pic-title">
+            <h4>{{ title }}</h4>
+        </div>
+        <!--图片上传列表,删除即重新上传-->
+        <div class="photo-list">
+            <!--图片上传列表-->
+            <div class="pic-item-box" v-for="(item, index) in picList"
+                v-if="picList instanceof Array && picList.length" :key="index">
+                <img :src="item.fileUrl" @click="handleDeletePicture(index)">
+            </div>
+            <!--上传按钮-->
+            <div class="pic-item-box" @click="handleUploadPicture" v-if="showUploadBtn">
+                <i class="iconfont scene_Staging-jiahao"></i>
+            </div>
+        </div>
+        <!-- 真正的上传按钮-->
+        <div>
+            <input style="display: none" type="file" ref="androidInputFileImage" @change="handlePhotoChange($event)"
+                accept="image/jpg, image/jpeg, image/png">
+            <input style="display: none" type="file" ref="androidInputFileCapture" @change="handlePhotoChange($event)"
+                accept="image/*" capture="camera">
+        </div>
+        <!--选择上传图片还是拍照-->
+
+        <van-action-sheet v-model="selectModel" :close-on-click-overlay="false"  cancel-text="取消" :actions="nav" @select="handleMenuSelect">
+        </van-action-sheet>
+
+    </div>
+</template>
+
+<script>
+    import {
+        SET_APP_LOADING
+    } from '@/store/mutations-types';
+    import {
+        mapMutations
+    } from 'vuex';
+    import EXIF from 'exif-js';
+
+    import {_imgCompress,_fileToBase64} from "@/utils/index";
+    export default {
+        name: 'sceneUploadFile',
+        data() {
+            return {
+                selectModel: false, // 模态窗选择拍照还是相册
+                deleteIndex: -1, // 删除图片的index
+                nav:[
+                    {name:'拍照'},
+                    {name:'从手机相册选择'},
+                ]
+            };
+        },
+        props: [
+            'title',
+            'fileType', // 文件类型
+            'picList',
+            'bizLicenseType',
+            'showNum'
+        ],
+         computed: {
+            showUploadBtn() {
+                let num = Number(this.fileType),
+                    isArray = Array.isArray(this.picList);
+
+                // 这里只能上传一张
+                if (num === 1 ) {
+                    return isArray && this.picList.length < 1;
+                } else if (num === 2) {
+                    // 这个类型,只能上传两张
+                    return isArray && this.picList.length < 2;
+                } else if (num === 3) {
+                    // 购机直降
+                    return isArray && this.picList.length < 3;
+                } else if (num === 4) {
+                    // 购机直降
+                    return isArray && this.picList.length < 4;
+                }
+            }
+        },
+        methods: {
+            ...mapMutations([SET_APP_LOADING]),
+            // 处理图片上传的事件(deleteIndex---删除图片的索引)
+            handlePhotoChange: function (evt) {
+                let that = this;
+                that.SET_APP_LOADING(true);
+                // 图片是单选还是多选
+                const files = Array.prototype.slice.call(evt.target.files);
+                // 图片的处理
+                files.forEach(function (file, i) {
+                    // 图片的拍摄方向
+                    var orientation;
+                    // 格式是否支持的判断
+                    if (!/\/(?:jpg|jpeg|png)/i.test(file.type)) {
+                        that.$vux.toast.text('仅支持jpg|png图片格式', 'middle');
+                        that.SET_APP_LOADING(false);
+                        return;
+                    }
+                    // 读取图片的元信息
+                    EXIF.getData(file, function () {
+                        orientation = EXIF.getTag(this, 'Orientation');
+                    });
+                    // 获取文件内容
+                    let reader = new FileReader();
+                    reader.onload = function () {
+                        that.$refs.androidInputFileCapture.value = null;
+                        that.$refs.androidInputFileImage.value = null;
+                        // 使用exif,处理图片的旋转问题,然后执行回调函数
+                        that.getImgData(this.result, orientation, function (data) {
+                            // 这里可以使用校正后的图片data了
+                            var img = new Image();
+                            img.src = data;
+
+                            // 图片加载完毕之后进行压缩,然后上传
+                            if (img.complete) {
+                                callback();
+                            } else {
+                                img.onload = callback;
+                            }
+                            // 图片的路径获取成功后
+                            function callback() {
+                                // 压缩后的图片的base64字符串
+                                let data = that.compress(img);
+                                // 调取接口上传图片
+                                that.submitUploadImg(that.fileType, data, that.deleteIndex);
+                            }
+                        });
+                    };
+                    reader.readAsDataURL(file);
+                });
+            },
+            // type文件上传的路径,data图片的base64字符串(删除图片即重新上传)
+            submitUploadImg: function (type, base64, deleteIndex) {
+                let that = this;
+                // 防止操作的模态窗
+                let submitInfo = {
+                    base64Data: base64.split(',')[1], // 文件base64
+                    suffix: base64.split(',')[0].split(';')['0'].split('/')[1],
+                };
+                this.$api.merUploadPhotoStore(submitInfo).then((res) => {
+                    // 如果存在删除图片索引
+                    if (deleteIndex >= 0) {
+                        // 删除以前的那张照片,然后添加新上传的图片
+                        this.picList.splice(deleteIndex, 1, {
+                            fileUrl: res.body.fileUrl,
+                            fileId: res.body.fileId
+                        });
+                        // 将删除索引重置为-1,即当前状态重置为新增,而非删除状态
+                        this.deleteIndex = -1;
+                    } else {
+                        console.log()
+                        this.picList.unshift({
+                            fileUrl: res.body.fileUrl,
+                            fileId: res.body.fileId
+                        });
+                    }
+                    that.SET_APP_LOADING(false);
+                    // 提交整个图片列表
+                    this.$emit('on-change-pic', this.picList);
+                }, (error) => {
+                    this.SET_APP_LOADING(false);
+                });
+            },
+            // 图片旋转处理
+            getImgData: function (img, dir, next) {
+                // @param {string} img 图片的base64
+                // @param {int} dir exif获取的方向信息
+                // @param {function} next 回调方法,返回校正方向后的base64
+                var image = new Image();
+                let canvas = document.createElement('canvas');
+                let ctx = canvas.getContext('2d');
+                image.onload = function () {
+                    let resultWidth = 0;
+                    let resultHeight = 0;
+                    let maxWidthOrHeight = 1024;
+                    let drawWidth = this.naturalWidth;
+                    let drawHeight = this.naturalHeight;
+
+                    // 以下改变图片大小,控制最大宽度为1024
+                    var maxSide = Math.max(drawWidth, drawHeight);
+                    if (maxSide > maxWidthOrHeight) {
+                        let minSide = Math.min(drawWidth, drawHeight);
+                        minSide = minSide / maxSide * maxWidthOrHeight;
+                        maxSide = maxWidthOrHeight;
+                        if (drawWidth > drawHeight) {
+                            resultWidth = maxSide;
+                            resultHeight = minSide;
+                        } else {
+                            resultWidth = minSide;
+                            resultHeight = maxSide;
+                        }
+                    } else {
+                        resultWidth = drawWidth;
+                        resultHeight = drawHeight;
+                    }
+
+                    if (dir === 3) {
+                        canvas.width = resultWidth;
+                        canvas.height = resultHeight;
+                        ctx.translate(resultWidth, resultHeight);
+                        ctx.rotate(Math.PI);
+                    } else if (dir === 6) {
+                        canvas.width = resultHeight;
+                        canvas.height = resultWidth;
+                        ctx.translate(resultHeight, 0);
+                        ctx.rotate(Math.PI / 2);
+                    } else if (dir === 8) {
+                        canvas.width = resultHeight;
+                        canvas.height = resultWidth;
+                        ctx.translate(0, resultWidth);
+                        ctx.rotate(-Math.PI / 2);
+                    } else {
+                        canvas.width = resultWidth;
+                        canvas.height = resultHeight;
+                    }
+                    ctx.drawImage(this, 0, 0, resultWidth, resultHeight);
+                    // 返回校正图片
+                    next(canvas.toDataURL('image/jpeg', 0.8));
+                };
+                image.src = img;
+            },
+            compress(img) {
+                let quality = 0.92, //压缩比例
+                    w = img.width,
+                    h = img.height,
+                    canvas = document.createElement('canvas'),
+                    ctx = canvas.getContext('2d');
+                canvas.width = w;
+                canvas.height = h;
+                ctx.drawImage(img, 0, 0, w, h);
+                return canvas.toDataURL('image/jpeg', quality);
+            },
+            checkAuth(id) {
+                // authStatus: 0 未授权  1授权---用户授权后才能执行下一步
+                this.$api.checkAuth({
+                    fileId: id
+                }).then((res) => {
+                    if (res.body.authStatus === 1) {
+                        this.$emit('on-check-auth', '下一步');
+                    }
+                });
+            },
+            // 点击上传按钮
+            handleUploadPicture() {
+                this.selectModel = true;
+            },
+            // 选择拍照或者相册选项
+            handleMenuSelect(item, index) {
+                if (index===0) {
+                    this.$refs.androidInputFileCapture.click();
+                } else {
+                    this.$refs.androidInputFileImage.click();
+                }
+                this.selectModel = false;
+            },
+            // 处理图片的删除
+            handleDeletePicture(index) {
+                this.deleteIndex = index;
+                this.selectModel = true;
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped >
+    .component-photo-upload {
+        .pic-title {
+            h4 {
+                padding: 10px 0;
+                font-size: 15px;
+                line-height: 1;
+                color: #333;
+                font-weight: normal;
+            }
+
+        }
+
+        .photo-list {
+            display: flex;
+            padding-bottom: 20px;
+            flex-wrap: wrap;
+
+            .pic-item-box {
+                position: relative;
+                height: 100px;
+                width: 100px;
+                margin-right: 10px;
+                margin-bottom: 10px;
+                line-height: 100px;
+                text-align: center;
+                background-color: #FDFCFF;
+                border: 1px dashed #d9d9d9;
+
+                img {
+                    width: 100%;
+                    height: 100%;
+                }
+            }
+        }
+    }
+
+</style>
diff --git a/src/components/old/upload/uploadImgTl.vue b/src/components/old/upload/uploadImgTl.vue
new file mode 100644
index 0000000..fab7dca
--- /dev/null
+++ b/src/components/old/upload/uploadImgTl.vue
@@ -0,0 +1,458 @@
+<!--
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-25 11:16:31
+ * @Description:
+ -->
+<template>
+  <div class="component-photo-upload">
+    <!--title 和上传按钮的图标-->
+    <div class="pic-title">
+      <p>{{ title }}
+        <span style="font-size:12px;color:rgba(255,102,102,1);">{{tips}}</span>
+      </p>
+
+    </div>
+    <!--图片上传列表,删除即重新上传-->
+    <div class="photo-list">
+      <!--图片上传列表-->
+      <div
+        class="pic-item-box"
+        v-for="(item, index) in picList"
+        v-if="picList instanceof Array && picList.length"
+        :key="index"
+      >
+        <div class="close-div">
+          <div class="close-div-box">
+            <van-icon name="clear" color="#FC8349" v-if="picList.length > 1" @click="deletPhoto(item,index)" />
+          </div>
+        </div>
+        <img :src="item.fileUrl" @click="handleDeletePicture(index)" />
+      </div>
+      <!--上传按钮-->
+      <div class="pic-item-box" @click="handleUploadPicture" v-if="showUploadBtn">
+        <!-- <i class="iconfont iconzhaoxiang" style="color:#FC8349"></i> -->
+        <img v-if="isCard == 1 " src="../../../assets/img/idcardz.png">
+        <img v-if="isCard == 2 " src="../../../assets/img/idcardf.png">
+        <img v-if="isCard == 0 " src="../../../assets/img/img_upload.png">
+      </div>
+    </div>
+    <!-- 真正的上传按钮-->
+    <div>
+      <input
+        style="display: none"
+        type="file"
+        ref="androidInputFileImage"
+        @change="handlePhotoChange($event)"
+        accept="image/*"
+      />
+      <input
+        style="display: none"
+        type="file"
+        ref="androidInputFileCapture"
+        @change="handlePhotoChange($event)"
+        accept="image/*"
+        capture="camera"
+      />
+    </div>
+    <!--选择上传图片还是拍照-->
+
+    <van-action-sheet
+      v-model="selectModel"
+      :close-on-click-overlay="false"
+      cancel-text="取消"
+      :actions="nav"
+      @select="handleMenuSelect"
+    ></van-action-sheet>
+  </div>
+</template>
+
+<script>
+import { SET_APP_LOADING } from "@/store/mutations-types";
+import { mapMutations } from "vuex";
+import EXIF from "exif-js";
+
+import { _imgCompress, _fileToBase64 } from "@/utils/index";
+import Vue from "vue";
+import { Icon } from "vant";
+
+Vue.use(Icon);
+export default {
+  name: "sceneUploadFile",
+  data() {
+    return {
+      selectModel: false, // 模态窗选择拍照还是相册
+      deleteIndex: -1, // 删除图片的index
+      nav: [{ name: "拍照" }, { name: "从手机相册选择" }]
+    };
+  },
+  props: [
+    "title",
+    "fileType", // 文件类型
+    "picList",
+    "sourceType",
+    "typeId",
+    "tips",
+    "isCard",//确定是否为身份证0-其他 1-正面 2-反面
+  ],
+  computed: {
+    showUploadBtn() {
+      let num = Number(this.fileType),
+        isArray = Array.isArray(this.picList);
+
+      // 这里只能上传一张
+      if (
+        num === 0 ||
+        num === 2 ||
+        num === 3 ||
+        num === 8 ||
+        num === 9 ||
+        num === 11 ||
+        num === 14 ||
+        num === 21 || 
+        num === 22 ||
+        num === 25
+      ) {
+        return isArray && this.picList.length < 1;
+      } else if (num === 10 || num === 13) {
+        // 这个类型,只能上传两张
+        return isArray && this.picList.length < 2;
+      } else {
+        return isArray && this.picList.length < 3;
+      }
+    }
+  },
+  methods: {
+    ...mapMutations([SET_APP_LOADING]),
+    //删除照片
+    deletPhoto(item, i) {
+      //console.log(item);
+      this.picList.splice(i, 1);
+    },
+    // 处理图片上传的事件(deleteIndex---删除图片的索引)
+    handlePhotoChange: function(evt) {
+      let that = this;
+      that.SET_APP_LOADING(true);
+      // 图片是单选还是多选
+      const files = Array.prototype.slice.call(evt.target.files);
+      // 图片的处理
+      files.forEach(function(file, i) {
+        // 图片的拍摄方向
+        var orientation;
+        // 格式是否支持的判断
+        if (!/\/(?:jpg|jpeg|png)/i.test(file.type)) {
+          that.$vux.toast.text("仅支持jpg|png图片格式", "middle");
+          that.SET_APP_LOADING(false);
+          return;
+        }
+        if(file.size > 1024*1024*10){
+          that.$tool.toast("上传图片不可大于10M,请重新选择图片");
+          that.SET_APP_LOADING(false);
+          return 
+        }
+        // 读取图片的元信息
+        EXIF.getData(file, function() {
+          orientation = EXIF.getTag(this, "Orientation");
+        });
+        // 获取文件内容
+        let reader = new FileReader();
+        reader.onload = function() {
+          that.$refs.androidInputFileCapture.value = null;
+          that.$refs.androidInputFileImage.value = null;
+          // 使用exif,处理图片的旋转问题,然后执行回调函数
+          that.getImgData(this.result, orientation, function(data) {
+            // 这里可以使用校正后的图片data了
+            
+            var img = new Image();
+            img.src = data;
+
+            // 图片加载完毕之后进行压缩,然后上传
+            if (img.complete) {
+              callback();
+            } else {
+              img.onload = callback;
+            }
+            // 图片的路径获取成功后
+            function callback() {
+              console.log(img.width,img.height)
+              // 压缩后的图片的base64字符串
+              let data = that.compress(img);
+              console.log(that.getFile(data))
+              
+              // 调取接口上传图片
+              that.submitUploadImg(that.fileType, data, that.deleteIndex);
+            }
+          });
+        };
+        reader.readAsDataURL(file);
+      });
+    },
+    // base64转file对象判断压缩后大小
+    getFile(data,filename){
+      var arr = data.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});
+    },
+    // type文件上传的路径,data图片的base64字符串(删除图片即重新上传)
+    submitUploadImg: function(type, base64, deleteIndex) {
+      let that = this;
+      var str = base64.replace('data:image/png;base64,', '');//这里根据自己上传图片的格式进行相应修改
+      var strLength = str.length;
+      var fileLength = parseInt(strLength - (strLength / 8) * 2);
+      // 由字节转换为MB
+      var size = "";
+      size = (fileLength / 1024 / 1024).toFixed(2);
+      
+      if(parseInt(size)>2){
+          that.$tool.toast("图片过大,请重新上传");
+          that.SET_APP_LOADING(false);
+          return
+      }
+
+      // 防止操作的模态窗
+      let submitInfo = {
+        base64Data: base64.split(",")[1], // 文件base64
+        fileType: type,
+        suffix: base64
+          .split(",")[0]
+          .split(";")
+          ["0"].split("/")[1]
+      };
+      if (that.typeId == "200011") {
+        this.$api.uploadXygPhoto(submitInfo).then(
+          res => {
+            // 如果存在删除图片索引
+            if (deleteIndex >= 0) {
+              // 删除以前的那张照片,然后添加新上传的图片
+              this.picList.splice(deleteIndex, 1, {
+                fileUrl: res.body.fileUrl,
+                id: res.body.id
+              });
+              // 将删除索引重置为-1,即当前状态重置为新增,而非删除状态
+              this.deleteIndex = -1;
+            } else {
+              this.picList.unshift({
+                fileUrl: res.body.fileUrl,
+                id: res.body.id
+              });
+            }
+            // 如果是支付二维码的话,需要调取检查授权
+            if (Number(this.fileType) === 8) {
+              this.checkAuth(res.body.id);
+            }
+            that.SET_APP_LOADING(false);
+            // 提交整个图片列表
+            this.$emit("on-change-pic", this.picList);
+          },
+          error => {
+            this.SET_APP_LOADING(false);
+          }
+        );
+      } else {
+        this.$api
+          .merUploadPhoto({
+            ...submitInfo,
+            sourceType: that.sourceType
+          })
+          .then(
+            res => {
+              // 如果存在删除图片索引
+              if (deleteIndex >= 0) {
+                // 删除以前的那张照片,然后添加新上传的图片
+                this.picList.splice(deleteIndex, 1, {
+                  fileUrl: res.body.fileUrl,
+                  id: res.body.id
+                });
+                // 将删除索引重置为-1,即当前状态重置为新增,而非删除状态
+                this.deleteIndex = -1;
+              } else {
+                this.picList.unshift({
+                  fileUrl: res.body.fileUrl,
+                  id: res.body.id
+                });
+              }
+              // 如果是支付二维码的话,需要调取检查授权
+              if (Number(this.fileType) === 8) {
+                this.checkAuth(res.body.id);
+              }
+              that.SET_APP_LOADING(false);
+              // 提交整个图片列表
+              this.$emit("on-change-pic", this.picList);
+            },
+            error => {
+              this.SET_APP_LOADING(false);
+            }
+          );
+      }
+    },
+    // 图片旋转处理
+    getImgData: function(img, dir, next) {
+      // @param {string} img 图片的base64
+      // @param {int} dir exif获取的方向信息
+      // @param {function} next 回调方法,返回校正方向后的base64
+      var image = new Image();
+      let canvas = document.createElement("canvas");
+      let ctx = canvas.getContext("2d");
+      image.onload = function() {
+        let resultWidth = 0;
+        let resultHeight = 0;
+        let maxWidthOrHeight = 1024;
+        let drawWidth = this.naturalWidth;
+        let drawHeight = this.naturalHeight;
+        console.log(drawWidth,drawHeight)
+        // 以下改变图片大小,控制最大宽度为1024
+        var maxSide = Math.max(drawWidth, drawHeight);
+        if (maxSide > maxWidthOrHeight) {
+         
+          let minSide = Math.min(drawWidth, drawHeight);
+          minSide = (minSide / maxSide) * maxWidthOrHeight;
+          maxSide = maxWidthOrHeight;
+          if (drawWidth > drawHeight) {
+            resultWidth = maxSide;
+            resultHeight = minSide;
+          } else {
+            resultWidth = minSide;
+            resultHeight = maxSide;
+          }
+        } else {
+          resultWidth = drawWidth;
+          resultHeight = drawHeight;
+        }
+
+        if (dir === 3) {
+          canvas.width = resultWidth;
+          canvas.height = resultHeight;
+          ctx.translate(resultWidth, resultHeight);
+          ctx.rotate(Math.PI);
+        } else if (dir === 6) {
+          canvas.width = resultHeight;
+          canvas.height = resultWidth;
+          ctx.translate(resultHeight, 0);
+          ctx.rotate(Math.PI / 2);
+        } else if (dir === 8) {
+          canvas.width = resultHeight;
+          canvas.height = resultWidth;
+          ctx.translate(0, resultWidth);
+          ctx.rotate(-Math.PI / 2);
+        } else {
+          canvas.width = resultWidth;
+          canvas.height = resultHeight;
+        }
+        ctx.drawImage(this, 0, 0, resultWidth, resultHeight);
+        // 返回校正图片
+        next(canvas.toDataURL("image/jpg", 0.8));
+        
+        console.log(image.width,image.height)
+      };
+      image.src = img;
+      
+    },
+    compress(img) {
+      let quality = 0.92, //压缩比例
+        w = img.width,
+        h = img.height,
+        canvas = document.createElement("canvas"),
+        ctx = canvas.getContext("2d");
+      canvas.width = w;
+      canvas.height = h;
+      ctx.drawImage(img, 0, 0, w, h);
+      return canvas.toDataURL("image/jpg", quality);
+    },
+    checkAuth(id) {
+      // authStatus: 0 未授权  1授权---用户授权后才能执行下一步
+      this.$api
+        .checkAuth({
+          fileId: id
+        })
+        .then(res => {
+          if (res.body.authStatus === 1) {
+            this.$emit("on-check-auth", "下一步");
+          }
+        });
+    },
+    // 点击上传按钮
+    handleUploadPicture() {
+      this.selectModel = true;
+    },
+    // 选择拍照或者相册选项
+    handleMenuSelect(item, index) {
+      if (index === 0) {
+        this.$refs.androidInputFileCapture.click();
+      } else {
+        this.$refs.androidInputFileImage.click();
+      }
+      this.selectModel = false;
+    },
+    // 处理图片的删除
+    handleDeletePicture(index) {
+      this.deleteIndex = index;
+      this.selectModel = true;
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped >
+.component-photo-upload {
+  .pic-title {
+    margin-bottom: 10px;
+    h4 {
+      padding: 10px 0;
+      font-size: 15px;
+      line-height: 1;
+      color: #333;
+      font-weight: normal;
+    }
+  }
+
+  .photo-list {
+    display: flex;
+    padding-bottom: 20px;
+    flex-wrap: wrap;
+
+    .pic-item-box {
+      position: relative;
+      height: 100px;
+      width: 100px;
+      margin-right: 10px;
+      margin-bottom: 10px;
+      line-height: 100px;
+      text-align: center;
+      background-color: #fff;
+      //border: 1px dashed #d9d9d9;
+      img{
+        width: 100%;
+        height: 100%;
+      }
+      .close-div {
+        position: absolute;
+        top: -45px;
+        right: -10px;
+        //border: 1px red solid;
+        //border-radius:50% ;
+        height: 20px;
+        width: 20px;
+        .close-div-box {
+          //border: 1px red solid;
+          //border-radius:50% ;
+          height: 20px;
+          width: 20px;
+          i {
+            font-size: 20px;
+          }
+        }
+      }
+      img {
+        width: 100%;
+        height: 100%;
+      }
+    }
+  }
+}
+</style>
diff --git a/src/components/vant_register.js b/src/components/vant_register.js
new file mode 100644
index 0000000..44083cc
--- /dev/null
+++ b/src/components/vant_register.js
@@ -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
+} 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
+]
+
+// 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'
+            })
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/components/vux_register.js b/src/components/vux_register.js
new file mode 100644
index 0000000..7d32406
--- /dev/null
+++ b/src/components/vux_register.js
@@ -0,0 +1,345 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-15 10:40:29
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-30 14:35:12
+ * @Description: 注册want组件
+ */
+
+import {
+    Notify,
+} from 'vant';
+import IDValidator from '@/utils/IDValidator';
+
+
+import {
+    Selector,XHeader,Group,XInput,XButton
+} from 'vux';
+
+import FSpace from '@/components/old/FSpace';
+import FButton from '@/components/old/FButton';
+import FTips from '@/components/old/FTips';
+import FFooter from '@/components/old/FFooter';
+import FSearch from '@/components/old/FSearch';
+import FConfirm from '@/components/old/FConfirm';
+import FNoData from '@/components/old/FNoData';
+
+// import
+
+
+let arr = [
+    Selector,XHeader,Group,XInput,XButton
+]
+
+
+
+export default {
+    install(Vue, opt) {
+        Vue.component('selector', Selector);
+        Vue.component('f-space', FSpace);
+        Vue.component('f-button', FButton);
+        Vue.component('f-tips', FTips);
+        Vue.component('f-footer', FFooter);
+        Vue.component('f-search', FSearch);
+        Vue.component('f-confirm', FConfirm);
+        Vue.component('f-no-data', FNoData);
+
+        arr.forEach(item => {
+            // console.log(item);
+            // Vue.use(item)
+            Vue.component(item.name,item)
+        })
+
+
+
+        // 老项目的 函数
+        Vue.prototype.$tool = {
+            toast(text) {
+                Notify({
+                    message: text,
+                    background: '#1989fa'
+                })
+            },
+            // 金额格式化
+            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([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/;
+                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;
+            },
+            date(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;
+                }
+            },
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        }
+    }
+}
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 0000000..c24937b
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,67 @@
+/*
+ * @Descripttion: 修改配置
+ * @Author: TM丶
+ * @Date: 2019-08-14 14:05:51
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-09-03 10:44:01
+ */
+
+
+import Vue from 'vue';
+import customerComponents from '@/components/index'; //自定义组件
+// 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 vuxRegister from '@/components/vux_register'; //vant组件
+import Validator from '@/utils/formValidator'; //vant组件
+import log from '@/utils/console';
+
+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 androidBack from './utils/pageBackByAndroid';
+Vue.config.productionTip = false; // 关闭生产的提示
+
+
+import "@/style/normalize.less";
+import "@/style/common.less";
+import "@/style/vant_reset.less";
+
+
+Vue.use(api)
+Vue.use(filters)
+Vue.use(Validator)
+Vue.use(vuxRegister)
+Vue.use(vantRegister)
+Vue.use(customerComponents)
+Vue.use(Select)
+Vue.use(log);
+
+
+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();
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 0000000..9d64d00
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,128 @@
+/*
+ * @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) => {
+
+    // 解决叮咚助学自动登录主题色设置问题
+    if(to.query.platNo == 'ddxt'){
+        console.log(111)
+        window.sessionStorage.setItem("isddxt",1)
+        Store.dispatch('setColor',{
+            backColor:'#ff8e01',
+            backJbColorF:'#ff7b00',
+            backJbColorB:'#ff8e01',
+            defaultBgColor:'linear-gradient(90deg, #ff7b00, #ff8e01)',
+            lastColor:'#ff8e01'
+        })
+    }
+    if(to.query.wxScore == '1'){
+        window.sessionStorage.setItem("wxScore",1)
+    }
+    window.sessionStorage.setItem("gotoPagetemp", to.path);
+    // if(to.name == 'login-by-wx'){
+    //     localStorage.user_pwd = 'undefined'
+    // }
+    if(to.meta && typeof to.meta.isLogin !=='undefined' ){
+        //判断地址是否带有token参数有就截取存储
+        if(location.href.split('?')[1]){
+            if(location.href.split('?')[1].split('token=')[1]){
+                console.log('qqq:',location.href.split('?')[1])
+                let str = location.href.split('?')[1].split('token=')[1]
+                localStorage.hjToken = str
+            }
+            if(location.href.split('?')[1].split('appToken=')[1]){
+                let str = location.href.split('?')[1].split('appToken=')[1]
+                if(str.indexOf('&') != -1){
+                    var backUrl = str.split('&')[1].split('backUrl=')[1]
+                    var appToken = str.split('&')[0]
+                }else{
+                    var appToken = str
+                }
+
+            }
+        }
+        console.log('token:',localStorage.hjToken)
+        let user_pwd = localStorage.user_pwd;
+        let hjToken = localStorage.hjToken;
+        // let appToken = sessionStorage.appToken;
+        // 红茄登录
+        if(typeof hjToken !='undefined' && hjToken){
+            Store.dispatch('loginByToken',{
+                vm:Vue.prototype,
+                hjToken,
+                next
+            })
+            return
+        }
+        // app跳转登录
+        if(typeof appToken !='undefined' && appToken){
+            document.title = ''
+            Store.dispatch('loginByAppToken',{
+                vm:Vue.prototype,
+                appToken,
+                backUrl,
+                next
+            })
+            return
+        }
+        // 自动登录
+        if(typeof user_pwd !=='undefined'){
+            let userNo = localStorage.user_account,
+                password = user_pwd;
+            Store.dispatch('login',{
+                vm:Vue.prototype,
+                userNo,
+                password,
+                sib_mer_sysPlat: localStorage.sib_mer_sysPlat,
+                next
+            })
+            return
+        }
+        if(typeof hjToken =='undefined' && !hjToken){
+            next()
+        }
+    }else{
+        // 需要登录的页面
+        if(Store.state.sessionId || to.name == 'login-by-wx' || to.name == 'supplement'){
+            next()
+        }else{
+            // if(sessionStorage.isLoginByOpenId == 1){
+            //     next()
+            // }else{
+                next('/')
+            // }
+
+        }
+    }
+})
+
+
+//全局后置守卫:页面跳转后执行
+router.afterEach((to, from) => {
+
+})
+
+export default router;
diff --git a/src/router/routes.js b/src/router/routes.js
new file mode 100644
index 0000000..4868113
--- /dev/null
+++ b/src/router/routes.js
@@ -0,0 +1,1155 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-13 18:10:18
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-05 14:58:59
+ * @Description:
+ */
+const oldRouter = [
+    {
+        path: '/credit-installment',
+        name: 'credit-installment',
+        component:()=>import("@/views/old/store/credit-installment.vue")
+    },
+    {
+        path: '/getQRCode',
+        name: 'getQRCode',
+        component:()=>import("@/views/old/store/getQRCode.vue")
+
+    },
+    //商户贴息
+    {
+        path: '/hb-merchant-installment',
+        name: 'hb-merchant-installment',
+        component:()=>import("@/views/old/store/hb-merchant-installment.vue")
+    },
+    {
+        path: '/hb-credit-installment',
+        name: 'hb-credit-installment',
+        component:()=>import("@/views/old/store/hb-credit-installment.vue")
+    },
+    {
+        path: '/hb-contract',
+        name: 'hb-contract',
+        component:()=>import("@/views/old/store/hb-contract.vue")
+    },
+
+    {
+        path: '/hb-getHBQRCode',
+        name: 'hb-getHBQRCode',
+        component:()=>import("@/views/old/store/getHBQRCode.vue")
+
+    },
+    {
+        path: '/pay-result',
+        name: 'pay-result',
+        component:()=>import("@/views/old/store/pay-result.vue")
+
+    },
+    {
+        path: '/xyg-getXygHbQRCode',
+        name: 'hb-getHBQRCode',
+        component:()=>import("@/views/old/store/getXygHbQRCode.vue")
+
+    },
+    {
+        path: '/product/shtx-detail',
+        name: 'shtx-detail',
+        component:()=>import("@/views/product/shtx-detail.vue")
+    },
+    {
+        path: '/shtx/staging',
+        name: 'shtx-staging',
+        component:()=>import("@/views/old/merchant/shtx/staging.vue")
+    },
+    {
+        path: '/shtx-getShtxQRCode',
+        name: 'shtx-getShtxQRCode',
+        component:()=>import("@/views/old/store/getShtxQRCode.vue")
+    },
+    {
+        path: '/order/shtx',
+        name: 'order-shtx',
+        component:()=>import("@/views/order/shtx.vue")
+    },
+    {
+        path: '/mobile-installment',
+        name: 'mobile-installment',
+        component:()=>import("@/views/old/store/mobile/mobileInstallment.vue")
+    },
+    {
+        path: '/mobile-submit-result',
+        name: 'mobile-submit-result',
+        component:()=>import("@/views/old/store/mobile/submitResult.vue")
+    },
+
+
+    {
+        path: '/contract-installment',
+        name: 'contract-installment',
+        component:()=>import("@/views/old/store/contract/contractInstallment.vue")
+    },
+    // 生成二维码
+    {
+        path: '/contract-qrcode',
+        name: 'contract-qrcode',
+        component:()=>import("@/views/old/store/contract/contractQrcode.vue")
+    },
+    {
+        path: '/lthyj-qrcode',
+        name: 'lthyj-qrcode',
+        component:()=>import("@/views/old/store/lthyjQrcode.vue")
+    },
+    {
+        path: '/contract-order-upload/:orderId',
+        name: 'contract-order-upload',
+        props:true,
+        component:()=>import("@/views/old/store/contract/upload.vue")
+    },
+
+
+    {
+        path: '/hrydset',
+        name: 'hryd_set',
+        component:()=>import("@/views/old/store/zxh/set.vue")
+    },
+    {
+        path: '/hryd/upload/:orderId', //上传合约资料
+        name: 'hryd_upload',
+        props: true,
+        component:()=>import("@/views/old/store/zxh/upload.vue")
+    },
+    {
+        path: '/hryd/createcode', //生成二维码
+        name: 'hryd_createcode',
+        props: true,
+        component:()=>import("@/views/old/store/zxh/createcode.vue")
+    },
+
+    {
+        path: '/xygset',
+        name: 'xyg_set',
+        component:()=>import("@/views/old/store/xyg/set.vue")
+    },
+    {
+        path: '/xyg/upload/:orderId', //上传合约资料
+        name: 'xyg_upload',
+        props: true,
+        component:()=>import("@/views/old/store/xyg/upload.vue")
+    },
+    // {
+    //     path: '/xyg/upload/', //上传合约资料
+    //     name: 'xyg_upload',
+    //     props: true,
+    //     component:()=>import("@/views/old/store/xyg/upload.vue")
+    // },
+    {
+        path: '/xyg/mation', //花呗,储蓄卡信用购选择表页面
+        name: 'xyg_mation',
+        props: true,
+        component:()=>import("@/views/old/store/xyg/xyg-mation.vue")
+    },
+    {
+        path: '/xyg/xygHb', //信用购花呗办单页面
+        name: 'xygHb',
+        props: true,
+        component:()=>import("@/views/old/store/xyg/xygHb.vue")
+    },
+    {
+        path: '/xyg/list', //信用购列表页面
+        name: 'xyg_list',
+        props: true,
+        component:()=>import("@/views/old/store/xyg/xygList.vue")
+    },
+    {
+        path: '/xyg/createcode', //生成二维码
+        name: 'xyg_createcode',
+        props: true,
+        component:()=>import("@/views/old/store/xyg/createcode.vue")
+    },
+    {
+        path: '/gzzjset',
+        name: 'gzzj_set',
+        component:()=>import("@/views/old/store/gzzj/set.vue")
+    },
+    {
+        path: '/gzzj/upload/:orderId', //上传合约资料
+        name: 'gzzj_upload',
+        props: true,
+        component:()=>import("@/views/old/store/gzzj/upload.vue")
+    },
+    {
+        path: '/gzzj/createcode', //生成二维码
+        name: 'gzzj_createcode',
+        props: true,
+        component:()=>import("@/views/old/store/gzzj/createcode.vue")
+    },
+    {
+        path:"/gzzj/gzzjQrCode",
+        name:'gzzj_qrCode',
+        component:()=>import("@/views/old/store/gzzj/gzzjQrCode.vue")
+    },
+    {
+        path: '/main/productManagement', // 商户-产品管理
+        name: 'productManagement',
+        component: function(resolve) {
+            require(['../views/old/merchant/productManagement'], resolve);
+        }
+    },
+    {
+        path: '/main/hb-product', // 花呗通道内产品管理
+        name: 'hb-product',
+        component: function(resolve) {
+            require(['../views/old/merchant/hb-product'], resolve);
+        }
+    },
+
+    //选择通道
+    {
+        path:'/channel-selection',
+        name:'channel-selection',
+        component(resolve) {
+            require(['@/views/old/store/channel-selection.vue'], resolve);
+        }
+    },
+
+    {
+        path:'/facepay/calcmoney',
+        name:'facepay_calcmoney',
+        component(resolve) {
+            require(['@/views/old/facepay/calcmoney.vue'], resolve);
+        }
+    },
+    {
+        path:'/facepay/details',
+        name:'facepay_details',
+        component(resolve) {
+            require(['@/views/old/facepay/orderDetails.vue'], resolve);
+        }
+    },
+    {
+        path:'/facepay/list',
+        name:'facepay_list',
+        component(resolve) {
+            require(['@/views/old/facepay/orderList.vue'], resolve);
+        }
+    },
+    {
+        path:'/facepay/code',
+        name:'facepay_code',
+        component(resolve) {
+            require(['@/views/old/facepay/code.vue'], resolve);
+        }
+    },
+
+
+]
+
+
+const old_merRouter = [
+    {
+        path: '/ljcreditStaging', // 商户-信用卡分期
+        name: 'ljcreditStaging',
+        component: function(resolve) {
+            require(['../views/old/merchant/lj/ljcreditStaging'], resolve);
+        }
+    },
+
+    {
+        path: '/creditStaging', // 商户-信用卡分期
+        name: 'creditStaging',
+        component: function(resolve) {
+            require(['../views/old/merchant/creditStaging'], resolve);
+        }
+    },
+
+    {
+        path: '/tonglian/startOpen', // 开通通联通道页面
+        name: 'tonglianStartOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/tonglian/startOpen'], resolve);
+        }
+    },
+    {
+        path: '/tonglian/store-pictures', // 开通通联通道上传图片页面
+        name: 'tonglianStorePictures',
+        component: function(resolve) {
+            require(['../views/old/merchant/tonglian/storePictures'], resolve);
+        }
+    },
+    {
+        path: '/tonglian/open', // 确认开通通联通道页面
+        name: 'tonglianOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/tonglian/open'], resolve);
+        }
+    },
+    {
+        path: '/tonglian/open-result', // 开通通联通道开通结果页面
+        name: 'tonglianOpenResult',
+        component: function(resolve) {
+            require(['../views/old/merchant/tonglian/openResult'], resolve);
+        }
+    },
+    {
+        path: '/tonglian/verification', //
+        name: 'verification',
+        component: function(resolve) {
+            require(['../views/old/merchant/tonglian/verification'], resolve);
+        }
+    },
+    {
+        path: '/tonglian/staging', // 开通通联通道开通信息页面
+        name: 'tonglianStaging',
+        component: function(resolve) {
+            require(['../views/old/merchant/tonglian/staging'], resolve);
+        }
+    },
+    {
+        path: '/tonglian/withdrawal', // 通联通道提现
+        name: 'tonglianWithdrawal',
+        component: function(resolve) {
+            require(['../views/old/merchant/tonglian/withdrawal'], resolve);
+        }
+    },
+    {
+        path: '/tonglian/withdrawal-history', // 通联通道提现纪录
+        name: 'tonglianWithdrawalHistory',
+        component: function(resolve) {
+            require(['../views/old/merchant/tonglian/withdrawal-history'], resolve);
+        }
+    },
+    {
+        path: '/tonglian/Withdrawal-result', // 通联通道提现结果
+        name: 'tonglianWithdrawalResult',
+        component: function(resolve) {
+            require(['../views/old/merchant/tonglian/withdrawal-result'], resolve);
+        }
+    },
+    {
+        path: '/huabei/open', // 开通花呗页面
+        name: 'huaBeiOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/huabei/open'], resolve);
+        }
+    },
+    {
+        path: '/huabei/alipay', // 开通花呗--选择支付宝账号页面
+        name: 'huaBeiAlipay',
+        component: function(resolve) {
+            require(['../views/old/merchant/huabei/alipay'], resolve);
+        }
+    },
+    {
+        path: '/huabei/store-pictures', // 开通花呗--门店相关照片上传
+        name: 'huaBeiStorePictures',
+        component: function(resolve) {
+            require(['../views/old/merchant/huabei/storePictures'], resolve);
+        }
+    },
+    {
+        path: '/huabei/open-result', // 开通花呗--审核结果
+        name: 'huaBeiOpenResult',
+        component: function(resolve) {
+            require(['../views/old/merchant/huabei/openResult'], resolve);
+        }
+    },
+    {
+        path: '/huabei/staging', // 花呗开通成功后-使用花呗分期时,填写详情页面
+        name: 'huaBeiStaging',
+        component: function(resolve) {
+            require(['../views/old/merchant/huabei/staging'], resolve);
+        }
+    },
+    {
+        path: '/huabei/staging_hbjl', // 花呗开通成功后-使用花呗分期时,填写详情页面
+        name: 'huaBeiStaging_hbjl',
+        component: function(resolve) {
+            require(['../views/old/merchant/huabei/staging_hbjl'], resolve);
+        }
+    },
+    {
+        path: '/huabei/staging_dmf', // 花呗开通成功后-使用花呗分期时,填写详情页面
+        name: 'huaBeiStaging_dmf',
+        component: function(resolve) {
+            require(['../views/old/merchant/huabei/staging_dmf'], resolve);
+        }
+    },
+
+    {
+        path: '/gjzj/open', // 开通购机直降
+        name: 'gjzjOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/gjzj/open'], resolve);
+        }
+    },
+    {
+        path: '/gjzj/open-result', // 购机直降--审核结果
+        name: 'gjzjOpenResult',
+        component: function(resolve) {
+            require(['../views/old/merchant/gjzj/openResult'], resolve);
+        }
+    },
+    {
+        path: '/heyd/merOpen', // 开通海尔云贷
+        name: 'heydMerOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/heyd/merOpen'], resolve);
+        }
+    },
+    {
+        path: '/heyd/storeOpen', // 开通海尔云贷
+        name: 'heydStoreOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/heyd/storeOpen'], resolve);
+        }
+    },
+    {
+        path: '/heyd/mgrOpen', // 开通海尔云贷
+        name: 'heydMgrOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/heyd/mgrOpen'], resolve);
+        }
+    },
+    {
+        path: '/heyd/open-result', // 海尔云贷--审核结果
+        name: 'heydOpenResult',
+        component: function(resolve) {
+            require(['../views/old/merchant/heyd/openResult'], resolve);
+        }
+    },
+    {
+        path: '/xyg/merOpen', // 开通海尔云贷
+        name: 'xygMerOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/xyg/merOpen'], resolve);
+        }
+    },
+    {
+        path: '/xyg/storeOpen', // 开通海尔云贷
+        name: 'xygStoreOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/xyg/storeOpen'], resolve);
+        }
+    },
+    {
+        path: '/xyg/mgrOpen', // 开通海尔云贷
+        name: 'xygMgrOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/xyg/mgrOpen'], resolve);
+        }
+    },
+    {
+        path: '/xyg/open-result', // 海尔云贷--审核结果
+        name: 'xygOpenResult',
+        component: function(resolve) {
+            require(['../views/old/merchant/xyg/openResult'], resolve);
+        }
+    },
+    {
+        path: '/gzzj/merOpen', // 开通海尔云贷
+        name: 'gzzjMerOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/gzzj/merOpen'], resolve);
+        }
+    },
+    {
+        path: '/gzzj/storeOpen', // 开通海尔云贷
+        name: 'gzzjStoreOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/gzzj/storeOpen'], resolve);
+        }
+    },
+    {
+        path: '/gzzj/mgrOpen', // 开通海尔云贷
+        name: 'gzzjMgrOpen',
+        component: function(resolve) {
+            require(['../views/old/merchant/gzzj/mgrOpen'], resolve);
+        }
+    },
+    {
+        path: '/gzzj/open-result', // 海尔云贷--审核结果
+        name: 'gzzjOpenResult',
+        component: function(resolve) {
+            require(['../views/old/merchant/gzzj/openResult'], resolve);
+        }
+    },
+]
+
+const APPRouter = [
+    {
+        path: '/app/login', // app联登主页
+        name: 'AppHome',
+        component: function(resolve) {
+            require(['../views/appLiandeng/login.vue'], resolve);
+        },
+        meta:{
+            isLogin:false
+        }
+    },
+    {
+        path: '/app/home', // app联登主页
+        name: 'AppHome',
+        component: function(resolve) {
+            require(['../views/appLiandeng/home.vue'], resolve);
+        }
+    },
+    {
+        path: '/app/changeMer',
+        name: 'AppchangeMer',
+        component: function(resolve) {
+            require(['../views/appLiandeng/changeMer.vue'], resolve);
+        }
+    },
+    {
+        path: '/app/choseVersion',
+        name: 'AppchoseVersion',
+        component: function(resolve) {
+            require(['../views/appLiandeng/choseVersion.vue'], resolve);
+        }
+    },
+    {
+        path: '/app/shskVersionDetail',
+        name: 'AppshskVersionDetail',
+        component: function(resolve) {
+            require(['../views/appLiandeng/shskVersionDetail.vue'], resolve);
+        }
+    },
+    {
+        path: '/app/zfbVersionDetail',
+        name: 'AppzfbVersionDetail',
+        component: function(resolve) {
+            require(['../views/appLiandeng/zfbVersionDetail.vue'], resolve);
+        }
+    },
+    {
+        path: '/app/opening/startOpen',
+        name: 'AppopeningstartOpen',
+        component: function(resolve) {
+            require(['../views/appLiandeng/opening/startOpen.vue'], resolve);
+        }
+    },
+    {
+        path: '/app/opening/fillingInfo',
+        name: 'AppopeningfillingInfo',
+        component: function(resolve) {
+            require(['../views/appLiandeng/opening/fillingInfo.vue'], resolve);
+        }
+    },
+    {
+        path: '/app/opening/pictureUpload',
+        name: 'AppopeningpictureUpload',
+        component: function(resolve) {
+            require(['../views/appLiandeng/opening/pictureUpload.vue'], resolve);
+        }
+    },
+    {
+        path: '/app/opening/openResult',
+        name: 'AppopeningopenResult',
+        component: function(resolve) {
+            require(['../views/appLiandeng/opening/openResult.vue'], resolve);
+        }
+    },
+]
+export default [
+    ...old_merRouter,
+    ...oldRouter,
+    ...APPRouter,
+    //      用户中心
+    {
+        path:"/",
+        name:'login',
+        component:()=>import("@/views/user/login.vue"),
+        meta:{
+            isLogin:false
+        }
+    },
+    {
+        path:"/user/reset-pwd",
+        name:'reset-pwd',
+        component:()=>import("@/views/user/reset-pwd.vue")
+    },
+    {
+        path:"/user/register",  //商户注册
+        name:'register',
+        component:()=>import("@/views/user/register.vue")
+    },
+    {
+        path:"/user/register-home",  //登录页里面的 注册
+        name:'register-home',
+        component:()=>import("@/views/user/register-home.vue"),
+        meta:{
+            isLogin:false
+        }
+    },
+    {
+        path:"/user/forgetpassword",  //忘记密码
+        name:'forgetpassword',
+        component:()=>import("@/views/user/forgetpassword.vue"),
+        meta:{
+            isLogin:false
+        }
+    },
+    {
+        path:"/message",
+        name:'message',
+        component:()=>import("@/views/old/store/zxh/message.vue"),
+    },
+
+
+
+
+
+
+
+
+
+
+    {
+        path:"/main",
+        component:()=>import("@/views/main/index.vue"),
+        children:[
+            {
+                path:"home",
+                name:'home',
+                component:()=>import("@/views/main/home.vue"),
+                meta:{
+                    powerId: 100001,
+                }
+            },
+            {
+                path:"message",
+                name:'message',
+                component:()=>import("@/views/main/message.vue"),
+                meta:{
+                    powerId: 300000,
+                }
+            },
+            {
+                path:"mine",
+                name:'mine',
+                component:()=>import("@/views/main/mine.vue"),
+                meta:{
+                    powerId: 200000,
+                }
+            },
+            {
+                path:"approve",
+                name:'approve',
+                component:()=>import("@/views/main/approve.vue"),
+                meta:{
+                    powerId: 100003
+                }
+            },
+            {
+                path:"product",
+                name:'product',
+                component:()=>import("@/views/old/store/business-center.vue"),
+                meta:{
+                    powerId: 100006,
+                }
+            },
+            // {
+            //     path: 'productManagement', // 商户-产品管理
+            //     name: 'productManagement',
+            //     component: function(resolve) {
+            //         require(['../views/old/merchant/productManagement'], resolve);
+            //     },
+            //     meta:{
+            //         powerId: 100004,
+            //     }
+            // },//hb-product
+            // {
+            //     path: 'hb-product', // 花呗通道内产品管理
+            //     name: 'hb-product',
+            //     component: function(resolve) {
+            //         require(['../views/old/merchant/hb-product'], resolve);
+            //     },
+            //     // meta:{
+            //     //     powerId: 100004,
+            //     // }
+            // },
+        ]
+    },
+    {
+        path:"/mine/channel",
+        name:'channel',
+        component:()=>import("@/views/mine/channel/channel.vue")
+    },
+    {
+        path:"/mine/channel-detail",
+        name:'channel-detail',
+        component:()=>import("@/views/mine/channel/channel-detail.vue")
+    },
+    {
+        path:"/mine/channel-add",
+        name:'channel-add',
+        component:()=>import("@/views/mine/channel/channel-add.vue")
+    },
+    {
+        path:"/mine/toggle-identity",
+        name:'toggle-identity',
+        component:()=>import("@/views/mine/toggle-identity.vue")
+    },
+
+
+
+
+    //      设置中心 - 路由
+    {
+        path:"/mine/setting",
+        name:'setting',
+        component:()=>import("@/views/mine/setting/setting.vue")
+    },  //
+    {
+        path:"/mine/setting/merchants-approval",        //商户审批
+        name:'merchants-approval',
+        component:()=>import("@/views/mine/setting/merchants-approval.vue")
+    },
+    {
+        path:"/mine/red-envelopes",
+        name:'red-envelopes',
+        component:()=>import("@/views/mine/redEnvelopes/red-envelopes.vue")
+    },//红包账户
+    {
+        path:"/mine/withdrawals",
+        name:'withdrawals',
+        component:()=>import("@/views/mine/redEnvelopes/withdrawals.vue")
+    },//红包提现
+
+
+
+
+    //      产品管理 - 路由
+    {
+        path:"/product/credit-detail",
+        name:'credit-detail',
+        component:()=>import("@/views/product/credit-detail.vue")
+    },
+    {
+        path:"/product/dmf-detail",
+        name:'dmf-detail',
+        component:()=>import("@/views/product/dmf-detail.vue")
+    },
+    {
+        path:"/product/hbjl-detail",
+        name:'hbjl-detail',
+        component:()=>import("@/views/product/hbjl-detail.vue")
+    },
+    {
+        path:"/product/hb-detail",
+        name:'hb-detail',
+        component:()=>import("@/views/product/hb-detail.vue")
+    },
+    {
+        path:"/product/xyg-hb-detail",
+        name:'xyg-hb-detail',
+        component:()=>import("@/views/product/xyg-hb-detail.vue")
+    },
+    {
+        path:"/product/gjzj-detail",
+        name:'gjzj-detail',
+        component:()=>import("@/views/product/gjzj-detail.vue")
+    },
+    {
+        path:"/product/zxh-detail",
+        name:'zxh-detail',
+        component:()=>import("@/views/product/zxh-detail.vue")
+    },
+    {
+        path:"/product/xyg-detail",
+        name:'xyg-detail',
+        component:()=>import("@/views/product/xyg-detail.vue")
+    },
+    {
+        path:"/product/gzzj-detail",
+        name:'gzzj-detail',
+        component:()=>import("@/views/product/gzzj-detail.vue")
+    },
+    {
+        path:"/product/gzzj_order_detail_pics",
+        name:'gzzj_order_detail_pics',
+        component:()=>import("@/views/product/gzzj_order_detail_pics.vue")
+    },
+    {
+        path:"/product/productMent",
+        name:'mer-productMent',
+        component:()=>import("@/views/mdyh/product/productMent.vue")
+    },
+    {
+        path:"/product/lthyj-detail",
+        name:'lthyj-detail',
+        component:()=>import("@/views/product/lthyj-detail.vue")
+    },
+    {
+        path:"/product/wxScore-detail",
+        name:'wxScore-detail',
+        component:()=>import("@/views/product/wxScore-detail.vue")
+    },
+    //花呗合约套餐页面
+    {
+        path:"/hbhy-installment",
+        name:'hbhy-installment',
+        component:()=>import("@/views/old/store/hbhy-installment.vue")
+    },
+    //花呗合约机办理页面
+    {
+        path:"/hbhy-detail",
+        name:'hbhy-detail',
+        component:()=>import("@/views/product/hbhy-detail.vue")
+    },
+    {
+        path:"/product/facepay",
+        name:'facepay',
+        component:()=>import("@/views/product/facepay/facepay.vue")
+    },
+    {
+      path:"/product/orderlist",
+      name:'orderlist',
+      component:()=>import("@/views/product/facepay/orderlist.vue")
+    },
+    {
+        path:"/product/facepay-qrcode",
+        name:'facepay-qrcode',
+        component:()=>import("@/views/product/facepay/facepay-qrcode.vue")
+    },
+    //支付宝拉新
+    {
+        path:"/product/zfblx",
+        name:'zfblx',
+        component:()=>import("@/views/zfblx/lxLogin.vue"),
+        // children:[
+        //     {
+        //         path: "lxexplain",
+        //         name: "lxexplain",
+        //         component:()=>import("@/views/zfblx/lxExplain.vue"),
+        //     },
+        //     {
+        //         path: "lxcode",
+        //         name: "lxcode",
+        //         component:()=>import("@/views/zfblx/lxCode.vue"),
+        //     },
+        // ]
+    },
+    {
+        path:"/product/zfblx/lxexplain",
+        name:'lxexplain',
+        component:()=>import("@/views/zfblx/lxExplain.vue")
+    },
+    {
+        path:"/product/zfblx/lxcode",
+        name:'lxcode',
+        component:()=>import("@/views/zfblx/lxCode.vue")
+    },
+    //支付宝拉新订单
+    {
+        path:"/order/lxOredr",
+        name:'lxOredr',
+        component:()=>import("@/views/zfblx/lxOrder.vue")
+    },
+    //支付宝拉新订单详情
+    {
+        path:"/order/lxOredrDetail",
+        name:'lxOredrDetail',
+        component:()=>import("@/views/zfblx/lxOrderDetail.vue")
+    },
+
+
+
+
+
+    //      商户管理
+    {
+        path:"/mine/mer-manager",
+        name:'mer-manager',
+        component:()=>import("@/views/mine/mer/mer-manager.vue")
+    },
+    {
+        path:"/mine/mer-info",
+        name:'mer-info',
+        component:()=>import("@/views/mine/mer/mer-info.vue")
+    },
+    {
+        path:"/mine/mer-photo-chose",
+        name:'mer-info',
+        component:()=>import("@/views/mine/mer/mer-photo-chose.vue")
+    },
+
+
+
+
+    //      门店管理-路由
+    {
+        path:"/mine/stores",
+        name:'stores',
+        component:()=>import("@/views/mine/stores/stores.vue")
+    },
+    {
+        path:"/mine/stores-add",
+        name:'stores-add',
+        component:()=>import("@/views/mine/stores/stores-add.vue")
+    },
+    {
+      path:"/mine/stores-detail",
+      name:'stores-detail',
+      component:()=>import("@/views/mine/stores/stores-detail.vue")
+    },
+
+
+
+
+    // 订单相关
+    {
+        path:"/order/credit",
+        name:'order-credit',
+        component:()=>import("@/views/order/credit.vue")
+    },
+    {
+        path:"/order/hb",
+        name:'order-hb',
+        component:()=>import("@/views/order/hb.vue")
+    },
+    {
+        path:"/order/wxScore",
+        name:'order-wxScore',
+        component:()=>import("@/views/order/wxScore.vue")
+    },
+    {
+        path:"/order/gzzj",
+        name:'order-wxScore',
+        component:()=>import("@/views/order/gzzj.vue")
+    },
+    {
+        path:"/order/dmf",
+        name:'order-dmf',
+        component:()=>import("@/views/order/dmf.vue")
+    },
+    {
+        path:"/order/hbjl",
+        name:'order-hbjl',
+        component:()=>import("@/views/order/hbjl.vue")
+    },
+    {
+        path:"/order/gjzj",
+        name:'order-gjzj',
+        component:()=>import("@/views/order/gjzj.vue")
+    },
+    {
+        path:"/order/phone",
+        name:'order-phone',
+        component:()=>import("@/views/order/phone.vue")
+    },
+    {
+        path:"/order/zxh",
+        name:'order-zxh',
+        component:()=>import("@/views/order/zxh.vue")
+    },
+
+    {
+        path:"/order/xyg",
+        name:'order-xyg',
+        component:()=>import("@/views/order/xyg.vue")
+    },
+    {
+        path:"/order/xyg-hb",
+        name:'order-xyg-hb',
+        component:()=>import("@/views/order/xyg-hb.vue")
+    },
+    {
+        path:"/order/xyg-cx",
+        name:'order-xyg-cx',
+        component:()=>import("@/views/order/xyg-cx.vue")
+    },
+    {
+        path:"/order/order-lthyj",
+        name:'order-lthyj',
+        component:()=>import("@/views/order/order-lthyj.vue")
+    },
+    //和微分
+    {
+        path:"/wx-pay-score",
+        name:'store-wxPayScore',
+        component:()=>import("@/views/old/store/wx-pay-score.vue")
+    },
+    {
+        path:"/wx-getWxQRCode",
+        name:'wx-getWxQRCode',
+        component:()=>import("@/views/old/store/getWxQRCode.vue")
+    },
+    {
+        path:"/wx-scoreResult",
+        name:'wx-scoreResult',
+        component:()=>import("@/views/old/store/wx-score-result.vue")
+    },
+    {
+        path:"/order/order-lthyj",
+        name:'order-lthyj',
+        component:()=>import("@/views/order/order-lthyj.vue")
+    },
+
+    //      账号管理 - 路由
+    {
+        path:"/mine/account",
+        name:'account',
+        component:()=>import("@/views/mine/account/account.vue")
+    },
+    {
+        path:"/mine/account-add",
+        name:'account-add',
+        component:()=>import("@/views/mine/account/account-add.vue")
+    },
+
+
+
+
+
+
+    {
+        path:"/relatedpictures",
+        name:'relatedpictures',
+        component:()=>import("@/views/relatedPictures.vue")
+    },
+
+
+    {
+        path:"/template/list",
+        name:'template_list',
+        component:()=>import("@/views/template/list.vue")
+    },
+    // 门店产品管理
+    {
+        path:"/store/productManage",
+        name:'store_productManage',
+        component:()=>import("@/views/old/store/productManagement.vue")
+    },
+    {
+        path:"/template/detail",
+        name:'template_detail',
+        component:()=>import("@/views/template/detail.vue")
+    },
+    {
+        path:"/template/distribute",
+        name:'template_distribute',
+        component:()=>import("@/views/template/distribute.vue")
+    },
+
+
+    //banner主要内容
+        {
+            path:"/bannerContent",
+            name:'bannerContent',
+            component:()=>import("@/views/old/store/bannerContent/bannerContent.vue")
+        },
+
+    //逾期
+    {
+        path:"/overdue",
+        name:'overdue',
+        component:()=>import("@/views/mdyh/overdue/overdue.vue"),
+    },
+    {
+        path:"/ovderdueDetail",
+        name:'ovderdueDetail',
+        component:()=>import("@/views/mdyh/overdue/ovderdueDetail.vue"),
+    },
+    //办单教程
+    {
+        path:"/bdCourse",
+        name:'bdCourse',
+        component:()=>import("@/views/mdyh/bdjc/bdCourse.vue")
+    },
+    //商户贴息
+    {
+        path:"/shtx",
+        name:'shtx',
+        component:()=>import("@/views/mdyh/shtx/shtx.vue")
+    },
+    //商户资料
+    {
+        path:"/setting/mer-date",
+        name:'mer-date',
+        component:()=>import("@/views/mdyh/shtx/mer-date.vue")
+    },
+
+    // 花呗间联
+    {
+        path:"/creat-hbjl",
+        name:'creat-hbjl',
+        component:()=>import("@/views/old/store/hbjl/creat-hbjl.vue")
+    },
+    {
+        path:"/hbjl-qr",
+        name:'hbjl-qr',
+        component:()=>import("@/views/old/store/hbjl/hbjl-qr.vue")
+    },
+
+    {
+        path:"/hbcp",
+        name:'hbcp',
+        component:()=>import("@/views/old/store/hbcp.vue")
+    },
+    // 云南联通合约机
+    {
+        path:"/lthyj",
+        name:'lthyj',
+        component:()=>import("@/views/old/store/lthyj.vue")
+    },
+    {
+        path:"/hbcp_sh",
+        name:'hbcp_sh',
+        component:()=>import("@/views/old/store/hbcp_sh.vue")
+    },
+    {
+        path:'/channel-selection_sh',
+        name:'channel-selection_sh',
+        component(resolve) {
+            require(['@/views/old/store/channel-selection_sh.vue'], resolve);
+        }
+    },
+    {
+        path:'/choose-payment-method',
+        name:'choose-payment-method',
+        component(resolve) {
+            require(['@/views/old/store/choose-payment-method.vue'], resolve);
+        }
+    },
+    {
+        path:'/store-shsk',
+        name:'store-shsk',
+        component(resolve) {
+            require(['@/views/old/store/shsk/shsk.vue'], resolve);
+        }
+    },
+    {
+        path:'/getShskQRCode',
+        name:'getShskQRCode',
+        component(resolve) {
+            require(['@/views/old/store/getShskQRCode.vue'], resolve);
+        }
+    },
+    {
+        path:'/shsk-payResult',
+        name:'shsk-payResult',
+        component(resolve) {
+            require(['@/views/old/store/shsk/payResult.vue'], resolve);
+        }
+    },
+    {
+        path:'/loginByWx',
+        name:'login-by-wx',
+        component:()=>import("@/views/user/loginByWx.vue"),
+        // meta:{
+        //     isLogin:false,
+        //     isOpenId:true
+        // }
+    },
+    {
+        path:'/supplement',
+        name:'supplement',
+        component:()=>import("@/views/user/supplement.vue"),
+        // meta:{
+        //     isLogin:false,
+        //     isOpenId:true
+        // }
+    },
+]
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000..8a462f1
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,409 @@
+/*
+ * @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_PAGE,
+    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';
+
+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:'#896EDB',//主题色
+        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: {
+        loginByAppToken({ commit, dispatch }, { vm, appToken, backUrl, next }){
+            sessionStorage.appToken = appToken;
+            sessionStorage.backUrl = backUrl;
+            let p = new Promise(function(resolve,reject){
+                Vue.prototype.$api.loginByMerToken({
+                    token:appToken
+                }).then(res=>{
+                    sessionStorage.jumpUrl = res.body.clientAccessDomain;
+                    let lastLoginMgrId = res.body.lastLoginMgrId
+                    let sessionId = res.body.sessionId
+                    commit(SET_SESSION_ID, sessionId);
+                    if(lastLoginMgrId){
+                        resolve(lastLoginMgrId)
+                    }else{
+                        next('/app/changeMer')
+                    }
+                })
+            })
+            p.then(lastLoginMgrId=>{
+                sessionStorage.sid = lastLoginMgrId;
+                Vue.prototype.$api.getPowerInfo(lastLoginMgrId).then(res=>{
+                    commit(SET_USER_INFO,res.body)
+                    next('/app/home')
+                })
+            })
+        },
+
+        loginByToken({ commit, dispatch }, { vm, hjToken, next }) {
+            localStorage.hjToken = hjToken
+            Vue.prototype.$api.loginByToken({
+                token: hjToken
+            }).then(res => {
+
+                sessionStorage.jumpUrl = res.body.clientAccessDomain;
+
+                let lastLoginMgrId = res.body.lastLoginMgrId
+                let sessionId = res.body.sessionId
+                commit(SET_SESSION_ID, sessionId);
+
+
+                if (lastLoginMgrId) {
+                    dispatch('setUserMenu', { vm, lastLoginMgrId, next })
+                } else {
+                    if (next) {
+                        next('/mine/toggle-identity');
+                    } else {
+                        vm.$router.push('/mine/toggle-identity');
+                    }
+                }
+            })
+        },
+        loginByOpenId({ commit, dispatch },{ vm, loginType, verCode, mblNo,merId,wechatOpenId,userId, next}){
+            Vue.prototype.$api.loginByOpenId({
+                loginType:loginType,
+                verCode:verCode,
+                mblNo:mblNo,
+                merId:merId,
+                wechatOpenId:wechatOpenId,
+                userId:userId
+              }).then(res=>{
+                if(mblNo){
+                  localStorage.sib_wx_mblNo = mblNo
+                }
+                sessionStorage.isLoginByOpenId = 1
+                localStorage.sib_wx_openId = wechatOpenId
+                localStorage.storeList = JSON.stringify(res.body.storeList)
+                // localStorage.sib_wx_mblNo = res.body.mblNo
+                // localStorage.sib_wx_userId = res.body.userId
+                commit(SET_SESSION_ID, res.body.sessionId);
+                if(res.body.isRegister == 1){
+                    vm.$router.push({
+                        path:'/supplement',
+                        query:{
+                            storeList:JSON.stringify(res.body.storeList)
+                        }
+                    })
+                }else{
+                    if(res.body.storeList.length == 1){
+                        let lastLoginMgrId = res.body.storeList[0].id
+                        dispatch('setUserMenu', { vm, lastLoginMgrId, next })
+                    }
+                    if(res.body.storeList.length > 1){
+                        vm.$router.push({
+                            path:'/mine/toggle-identity',
+                            query:{
+                                title:'选择门店',
+                                storeList:JSON.stringify(res.body.storeList)
+                            }
+                        })
+                    }
+
+                }
+                // if(res.body.storeList.length == 1){
+                //     vm.$router.push({
+                //         path:'/main/mine',
+                //         query:{
+                //             isLoginByOpenId:1
+                //         }
+                //     })
+                // }
+                // if(res.body.storeList.length > 1){
+                //     vm.$router.push({
+                //         path:'/mine/toggle-identity',
+                //         query:{
+                //             title:'选择门店',
+                //             storeList:res.body.storeList
+                //         }
+                //     })
+                // }
+              })
+        },
+        login({ commit, dispatch }, { vm, userNo, password, sib_mer_sysPlat, next }) {
+            window.localStorage.clear()
+            if(sessionStorage.isddxt == 1){
+                window.document.title = '叮咚学堂'
+            }
+            let tmpPassword = md5(userNo + password);
+            let passwordLogin = {
+                userNo: userNo,
+                password: tmpPassword
+            };
+            Vue.prototype.$api.login(passwordLogin).then(res => {
+                sessionStorage.jumpUrl = res.body.clientAccessDomain;
+                let {
+                    lastLoginMgrId,
+                    sessionId
+                } = res.body;
+                commit(SET_SESSION_ID, sessionId);
+                // window.sessionStorage.setItem(
+                //     'jumpUrl',
+                //     res.body.clientAccessDomain
+                // );
+                // // 存储起来自动登录
+                localStorage.user_account = userNo;
+                localStorage.user_pwd = password;
+                localStorage.sib_mer_sysPlat = sib_mer_sysPlat; // 1 微信 2支付宝
+                if (lastLoginMgrId) {
+                    // setUserMenu(vm, lastLoginMgrId, next);
+                    dispatch('setUserMenu', { vm, lastLoginMgrId, next })
+                } else {
+                    if (next) {
+                        next('/mine/toggle-identity');
+                    } else {
+                        vm.$router.push('/mine/toggle-identity');
+                    }
+                }
+            });
+        },
+        // 根据不同的权限设置用户拥有的菜单
+        setUserMenu({ commit }, { vm, lastLoginMgrId, next }) {
+
+            vm.$api.getPowerInfo(lastLoginMgrId).then(data => {
+                let {
+                    powerInfoVos,
+                    orgType
+                } = data.body;
+                let inviteCode = data.body.inviteCode;
+                commit(SET_INVITE_CODE, inviteCode);
+
+                let footerMenu = [
+                    {
+                        powerId: 100001,
+                        icon: 'iconshuju_h',
+                        Aicon: 'iconshuju',
+                        label: '数据',
+                        path: '/main/home'
+                    },
+                    {
+                        powerId: 100003,
+                        icon: 'iconshenpi_h',
+                        Aicon: 'iconshenpi',
+                        label: '审批',
+                        path: '/main/approve'
+                    },
+
+                    {
+                        powerId: 100006,
+                        icon: 'icondingdan',
+                        Aicon: 'icondingdan1',
+                        label: '办单',
+                        path: '/main/product'
+                    },
+
+                ]
+                let userMenu = [
+                        {
+                            powerId: 100004,
+                            icon: 'iconshanghuguanli',
+                            label: '门店管理',
+                            path: '/mine/stores'
+                        },
+                        {
+                            powerId: 100002,
+                            icon: 'iconqudaoguanli',
+                            label: '渠道管理',
+                            path: '/mine/channel'
+                        }
+                    ]
+                    if(!window.localStorage.hjToken && sessionStorage.isLoginByOpenId != 1){
+                        userMenu.push({
+                            powerId: 100005,
+                            icon: 'iconzhanghaoguanli',
+                            label: '账号管理',
+                            path: '/mine/account'
+                        })
+                    }
+
+                    let footernav = []
+                    let userPage = []
+                    let path = ''
+
+                powerInfoVos.map(item => {
+                    footerMenu.map(child => {
+                        if (item.powerId === child.powerId) {
+                            if (child.powerId === 100001 || child.powerId === 100006) {
+                                footernav.unshift(child);
+                            } else {
+                                footernav.push(child);
+                            }
+                        }
+                    });
+                    userMenu.map(child => {
+                        if (item.powerId === child.powerId) {
+                            userPage.push(child);
+                        }
+                    });
+                });
+
+                console.log(userPage)
+
+                //增加消息tabbar
+                if (orgType != 1 && orgType != 2)
+                    footernav.push({
+                        powerId: 300000,
+                        icon: 'iconxiaoxi_h',
+                        Aicon: 'iconxiaoxi',
+                        label: '消息',
+                        path: '/main/message'
+                    })
+                if (orgType == 1 || orgType == 3 || orgType == 2) {
+                    footernav.unshift({
+                        powerId: 100006,
+                        icon: 'iconchanpin_h',
+                        Aicon: 'iconchanpin',
+                        label: '首页',
+                        path: '/main/product'
+                    })
+                }
+                footernav.push({
+                    powerId: 200000,
+                    icon: 'iconguanli_h',
+                    Aicon: 'iconguanli',
+                    label: '我的',
+                    path: '/main/mine'
+                })
+
+
+
+
+
+                // 代理角色一定有商户管理、商户注册的菜单
+                if (orgType === 1 || orgType === 2) {
+
+                    userPage.push({
+                        icon: 'iconshanghuguanli',
+                        label: '商户管理',
+                        path: '/mine/mer-manager'
+                    });
+                    userPage.push({
+                        icon: 'iconshanghuzhuce',
+                        label: '商户注册',
+                        path: '/user/register'
+                    });
+                }
+
+
+
+
+
+                commit(SET_FOOTER_NAV, footernav);
+                commit(SET_USER_PAGE, userPage);
+                commit(SET_USER_INFO, data.body);
+                sessionStorage.sid = lastLoginMgrId;
+                // vm.$setItem('sid', mgrId);
+                if (orgType === 4) {
+                    if(sessionStorage.isLoginByOpenId == 1){
+                        path = '/main/mine';
+                    }
+                    else{
+                        path = '/main/product';
+                    }
+
+                } else {
+                    path = '/main/mine';
+                }
+                if (next) {
+                    next(path)
+                } else {
+                    vm.$router.push(path)
+                }
+            });
+        },
+        // 获取地区列表
+        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) => {
+
+            });
+        },
+        //消息count
+        getCount({ commit }) {
+            Vue.prototype.$api.indexInit().then(res => {
+                // let sum = res.body.noticeInfos.some(item => {
+                //      return item.needRead === 1
+                // })
+                let notice = {};
+                notice.sum = res.body.hasNotice
+                notice.swiperList = res.body.bannerInfoVos
+                notice.messageList = res.body.noticeInfos.noticeInfos
+                commit(SET_MESSAGE_CONUT, notice)
+            })
+        },
+        // 设置主题色
+        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
+    }
+})
+
diff --git a/src/store/module/test.js b/src/store/module/test.js
new file mode 100644
index 0000000..87bdc57
--- /dev/null
+++ b/src/store/module/test.js
@@ -0,0 +1,11 @@
+export default {
+    namespaced:true,
+    state:{
+        text:"1232"
+    },
+    mutations:{
+        add(state,{value}){
+            state.text = value;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/store/mutations-types.js b/src/store/mutations-types.js
new file mode 100644
index 0000000..bc393a3
--- /dev/null
+++ b/src/store/mutations-types.js
@@ -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";
\ No newline at end of file
diff --git a/src/store/mutations.js b/src/store/mutations.js
new file mode 100644
index 0000000..eff7d55
--- /dev/null
+++ b/src/store/mutations.js
@@ -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;
+    // },
+}
\ No newline at end of file
diff --git a/src/style/common.less b/src/style/common.less
new file mode 100644
index 0000000..da3063a
--- /dev/null
+++ b/src/style/common.less
@@ -0,0 +1,191 @@
+/*
+ * @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;
+}
diff --git a/src/style/mixin.less b/src/style/mixin.less
new file mode 100644
index 0000000..b5eb120
--- /dev/null
+++ b/src/style/mixin.less
@@ -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;
+}
diff --git a/src/style/mixins.less b/src/style/mixins.less
new file mode 100644
index 0000000..6d04221
--- /dev/null
+++ b/src/style/mixins.less
@@ -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;
+
+
diff --git a/src/style/myVant.less b/src/style/myVant.less
new file mode 100644
index 0000000..8936816
--- /dev/null
+++ b/src/style/myVant.less
@@ -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;
+      }
+    }
+  }
\ No newline at end of file
diff --git a/src/style/myVideo.less b/src/style/myVideo.less
new file mode 100644
index 0000000..26cb77e
--- /dev/null
+++ b/src/style/myVideo.less
@@ -0,0 +1,8 @@
+/*
+*只用于video组件的样式调整
+*/
+.vjs-big-play-button{
+    // position: absolute;
+    top: 35% !important;
+    left: 35% !important;
+}
\ No newline at end of file
diff --git a/src/style/normalize.less b/src/style/normalize.less
new file mode 100644
index 0000000..b7fefd2
--- /dev/null
+++ b/src/style/normalize.less
@@ -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;
+}
\ No newline at end of file
diff --git a/src/style/themes.less b/src/style/themes.less
new file mode 100644
index 0000000..476716e
--- /dev/null
+++ b/src/style/themes.less
@@ -0,0 +1,51 @@
+/*
+ * @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;
+
+/* 边框 颜色*/
+// @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);
+
diff --git a/src/style/vant_reset.less b/src/style/vant_reset.less
new file mode 100644
index 0000000..503bc98
--- /dev/null
+++ b/src/style/vant_reset.less
@@ -0,0 +1,199 @@
+/*
+vant 的样式重置文件
+*/
+.van-cell-group{
+    border-radius: 3px;
+}
+.van-cell{
+    padding: 11px 0.32rem;
+    .van-cell__title{
+        font-size: @font-16;
+    }
+    &: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;
+}
diff --git a/src/text.vue b/src/text.vue
new file mode 100644
index 0000000..59880c5
--- /dev/null
+++ b/src/text.vue
@@ -0,0 +1,27 @@
+<template>
+  <div>
+    <van-popup v-model="ShowAgreen">
+      <div class="agreenBox">
+        <div class="agreen-html">
+          
+        </div>
+        <div class="close-agreen" @click="ShowAgreen = false">
+          <van-icon name="close" />
+        </div>
+      </div>
+    </van-popup>
+  </div>
+</template>
+<script>
+    export default {
+        data () {
+            return {
+                ShowAgreen:true
+            }
+        }
+    }
+    
+</script>
+<style lang="less" scoped>
+ 
+</style>
\ No newline at end of file
diff --git a/src/utils/IDValidator.js b/src/utils/IDValidator.js
new file mode 100644
index 0000000..8dd1881
--- /dev/null
+++ b/src/utils/IDValidator.js
@@ -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();
diff --git a/src/utils/agreement1.js b/src/utils/agreement1.js
new file mode 100644
index 0000000..35b3cc1
--- /dev/null
+++ b/src/utils/agreement1.js
@@ -0,0 +1,3 @@
+const agreement1='<div><p style="line-height:19pt; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:DengXian; font-size:20pt">智享收银台</span><span style="font-family:DengXian; font-size:20pt">用户服务协议</span></p><p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0"><span style="font-family:DengXian; font-size:13pt">为使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应当阅读并遵守《</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">服务协议》</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">以下简称</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">本协议</span><span style=" font-size:13pt">”)</span><span style="font-family:DengXian; font-size:13pt">。请您务必审慎阅读、充分理解各条款内容</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">特别是免除或者限制责任的条款、管辖与法律适用条款</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以及开通或使用某项服务的单独协议。限制、免责条款可能以黑体加粗或加下划线的形式提示您重点注意。除非您已阅读并接受本协议所有条款</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">否则您无权使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">提供的服务。您使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的服务即视为您已阅读并同意上述协议的约束。如果您未满</span><span style=" font-size:13pt">18</span><span style="font-family:DengXian; font-size:13pt">周岁</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">请在法定监护人的陪同下阅读本协议</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">并特别注意未成年人使用条款。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">一、</span><span style="font-family:DengXian; font-size:13pt">【</span><span style="font-family:DengXian; font-size:13pt">协议的范围】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1.1</span><span style="font-family:DengXian; font-size:13pt">本协议是您与</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">之间关于用户使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">相关服务所订立的协议。</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style=" font-size:13pt">”</span><span style="font-family:DengXian; font-size:13pt">是指</span><span style="font-family:DengXian; font-size:13pt">唯知科技</span><span style="font-family:DengXian; font-size:13pt">公司的产品。</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">用户</span><span style=" font-size:13pt">”</span><span style="font-family:DengXian; font-size:13pt">是指使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">相关服务的使用人</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">在本协议中更多地称为</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">您</span><span style=" font-size:13pt">”</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1.2</span><span style="font-family:DengXian; font-size:13pt">本协议项下的服务是指</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">向用户提供的包括但不限于</span><span style="font-family:DengXian; font-size:13pt">零售金融服务、</span><span style="font-family:DengXian; font-size:13pt">移动服务</span><span style="font-family:DengXian; font-size:13pt">、</span><span style="font-family:DengXian; font-size:13pt">电子商务和广告等产品及服务</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">以下简称</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">本服务</span><span style=" font-size:13pt">”</span><span style=" font-size:13pt">)</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">二、</span><span style="font-family:DengXian; font-size:13pt">【帐号与密码安全</span><span style="font-family:DengXian; font-size:13pt">】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">2.1</span><span style="font-family:DengXian; font-size:13pt">您在使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的服务时需要注册一个帐号。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">2.2</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">特别提醒您应妥善保管您的帐号和密码。当您使用完毕后</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">应安全退出。因您保管不善可能导致遭受盗号或密码失窃</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">责任由您自行承担。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">三、【用户</span><span style="font-family:DengXian; font-size:13pt">信息保护】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.1</span><span style="font-family:DengXian; font-size:13pt">保护用户</span><span style="font-family:DengXian; font-size:13pt">信息是</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的一项基本原则</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">将按照本协议的规定收集、使用、储存和分享您的</span><span style="font-family:DengXian; font-size:13pt">信息</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.2</span><span style="font-family:DengXian; font-size:13pt">您在注册帐号或使用本服务的过程中</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">可能需要填写一些必要的信息。若国家法律法规有特殊规定的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您需要填写真实的身份信息。若您填写的信息不完整</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">无法使用本服务或在使用过程中受到限制。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.3</span><span style="font-family:DengXian; font-size:13pt">一般情况下</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您可随时浏览、修改自己提交的信息</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">但出于安全性和身份识别的考虑</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您可能无法修改注册时提供的初始注册信息及其他验证信息。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.4</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">将运用各种安全</span><span style="font-family:DengXian; font-size:13pt">技术和程序建立完善的管理制度来保护您的</span><span style="font-family:DengXian; font-size:13pt">信息</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以免遭受未经授权的访问、使用或披露</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.</span><span style=" font-size:13pt">5</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">不会将您的</span><span style="font-family:DengXian; font-size:13pt">信息转移或披露给任何非关联的第三方</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">除非</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">相关法律法规或法院、政府机关要求</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">为完成合并、分立、收购或资产转让而转移</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(3)</span><span style="font-family:DengXian; font-size:13pt">为提供您要求的服务所必需。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.</span><span style=" font-size:13pt">6</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">非常重视对未成年人</span><span style="font-family:DengXian; font-size:13pt">信息的保护。若您是</span><span style=" font-size:13pt">18</span><span style="font-family:DengXian; font-size:13pt">周岁以下的未</span><span style="font-family:DengXian; font-size:13pt">成年人</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">在使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的服务前</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">应事先取得您家长或法定监护人</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">以下简称</span><span style=" font-size:13pt">"</span><span style="font-family:DengXian; font-size:13pt">监护人</span><span style=" font-size:13pt">")</span><span style="font-family:DengXian; font-size:13pt">的书面同意。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">四、【使用本服务的方式】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">4.1</span><span style="font-family:DengXian; font-size:13pt">除非您与</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">另有约定</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您同意本服务为商业性质的使用。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">4.2</span><span style="font-family:DengXian; font-size:13pt">您应当通过</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">提供或认可的方式使用本服务。您依本协议条款所取得的权利不可转让。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">4.3</span><span style="font-family:DengXian; font-size:13pt">您不得使用未经</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">授权的插件、外挂或第三方工具对本协议项下的服务进行干扰、破坏、修改或施加其他影响。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">五、【按现状提供服务】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的服务是按照现有技术和条件所能达到的现状提供的。</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">会尽最大努力向您提供服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">确保服务的连贯性和安全性</span><span style=" font-size:13pt">;</span><span style="font-family:DengXian; font-size:13pt">但</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">不能随时预见和防范法律、技术以及其他风险</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">包括但不限于不可抗力、病毒、木马、黑客攻击、系统不稳定、第三方服务瑕疵、政府行为等原因可能导致的服务中断、数据丢失以及其他的损失和风险。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">六、【自备设备】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">6.</span><span style=" font-size:13pt">1</span><span style="font-family:DengXian; font-size:13pt">您应当理解</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的服务需自行准备与相关服务有关的终端设备</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">如手机</span><span style=" font-size:13pt">),</span><span style="font-family:DengXian; font-size:13pt">并承担所需的费用</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">如电话费、上网费等费用</span><span style=" font-size:13pt">)</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">6.2</span><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您使用本服务时会耗用您的终端设备和带宽等资源。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">七、【广告】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">7.1</span><span style="font-family:DengXian; font-size:13pt">您同意</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">可以在提供服务的过程中自行或由第三方广告商向您发送广告、推广或宣传信息</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">包括商业与非商业信息</span><span style=" font-size:13pt">),</span><span style="font-family:DengXian; font-size:13pt">其方式和范围可不经向您特别通知而变更</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">7.</span><span style=" font-size:13pt">2</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">可能为您提供选择关闭广告信息的功能</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">但任何时候您都不得以本协议未明确约定或</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">未书面许可的方式屏蔽、过滤广告信息</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">7.3</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">依照法律的规定对广告商履行相关义务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应当自行判断广告信息的真实性并为自己的判断行为负责</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">除法律明确规定外</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您因依该广告信息进行的交易或前述广告商提供的内容而遭受的损失或损害</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">不承担责任</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">7.4</span><span style="font-family:DengXian; font-size:13pt">您同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">对</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">服务中出现的广告信息</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应审慎判断其真实性和可靠性</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">除法律明确规定外</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应对依该广告信息进行的交易负责。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">八、【收费服务】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">8.1</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的部分服务是以收费方式提供的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">如您使用收费服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">请遵守相关的协议</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">8.2</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">可能根据实际需要对收费服务的收费标准、方式进行修改</span><span style="font-family:DengXian; font-size:13pt">和变更</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">也可能会对部分免费服务开始收费。前述修改、变更或开始收费前</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">将在相应服务页面进行通知或公告。如果您不同意上述修改、变更或付费内容</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">则应停止使用该服务</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">九、【第三方提供的产品或服务】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">您在</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">平台上使用第三方提供的产品或服务时</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">除遵守本协议约定外</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">还应遵守第三方的用户协议。</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">和第三方对可能岀现的纠纷在法律规定和约定的范围内各自承担责任。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十、【基于软件提供服务】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">若</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">依托</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">软件</span><span style=" font-size:13pt">”</span><span style="font-family:DengXian; font-size:13pt">向您提供服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您还应遵守以</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">下约定</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">0.1</span><span style="font-family:DengXian; font-size:13pt">您在使用本服务的过程中可能需要下载软件</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">对于这些软件</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">给予您一项个人</span><span style="font-family:DengXian; font-size:13pt">或工商主体</span><span style="font-family:DengXian; font-size:13pt">的、不可转让及非排他性的许可。您仅可为访问或使用本服务的目的而使用这些软件</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">0.2</span><span style="font-family:DengXian; font-size:13pt">为了改善用户体验、保证服务的安全性及产品功能的一致性</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">可能会对软件进行更新。您应该将相关软件更新到最新版本</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">否则</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">并不保证其能正常使用。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">0.3</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">可能为不同的终端设备开发不同的软件版本</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应当根据实际情况选择下载合适的版本进行安装。您可以直接从</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的网站上获取软件</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">也可以从得到</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">授权的第三方获取。如果您从未经</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">授权的第三方获取软件或与软件名称相同的安装程序</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">无法保证该软件能够正常使用</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">并对因此给您造成的损失不予负责。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">0.4</span><span style="font-family:DengXian; font-size:13pt">除非</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">书面许可</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您不得从事下列任一行为</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">删除软件及其副本上关于著作权的信息</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">2)</span><span style="font-family:DengXian; font-size:13pt">对软件进行反向工程、反向汇编、反向编译</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">或者以其他方式尝试发现软件的源代码</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">3</span><span style=" font-size:13pt">)</span><span style="font-family:DengXian; font-size:13pt">对</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">拥有知识产权的内容进行使用、出租、岀借、复制、修改、链接、转载、汇编、发表、出版、建立镜像站点等</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(4)</span><span style="font-family:DengXian; font-size:13pt">对软件或者软件运行过程中释放到任何终端内存中的数据、软件运行过程中客户端与服务器端的交互数据</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以及软件运行所必需的系统数据</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">进行复制、修改、增加、删除、挂接运行或创作任何衍生作品</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">形式包括但不限于使用插件、外挂或非经</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">授权的第三方工具</span><span style=" font-size:13pt">/</span><span style="font-family:DengXian; font-size:13pt">服务接入软件和相关系统</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(5)</span><span style="font-family:DengXian; font-size:13pt">通过修改或伪造软件运行中的指令、数据</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">增加、删减、变动软件的功能或运行效果</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">或者将用于上述用途的软件、方法进行运营或向公众传播</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">无论这些行为是否为商业目的</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(6)</span><span style="font-family:DengXian; font-size:13pt">通过非</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">开发、授权的第三方软件、插件、外挂、系统</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">登录或使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">软件及服务或制作、发布、传播非掌上客如去开发、授权的第三方软件、插件、外挂、系统</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十一、【知识产权声明】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">12.1</span><span style="font-family:DengXian; font-size:13pt">您在使用本服务时须遵守法律法规</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">不得利用本服务从事违法违规行为</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">包括但不限于</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">发布、传送、传播、储存危害国家安全统一、破坏社会稳定、违反公序良俗、侮辱、诽谤、淫秽、暴力以及任何违反国家法律法规的内容</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">发布、传送、传播、储存侵害他人知识产权、商业秘密等合法权利的内容</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(3)</span><span style="font-family:DengXian; font-size:13pt">恶意虚构事实、隐瞒真相以误导、欺骗他人</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(4)</span><span style="font-family:DengXian; font-size:13pt">发布、传送、传播广告信息及垃圾信息</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">5)</span><span style="font-family:DengXian; font-size:13pt">其他法律法规禁止的行为。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">12.2</span><span style="font-family:DengXian; font-size:13pt">如果您违反了本条约定</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">相关国家机关或机构可能会对您提起诉讼、罚款或采取其他制裁措施</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">并要求</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">给予协助。造成损害的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应依法予以赔偿</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">不承担任何责任</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">12.3</span><span style="font-family:DengXian; font-size:13pt">如果</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">发现或收到他人举报您发布的信息违反本条约定</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有权进行独立判断并采取技术手段予以删除、屏蔽或断开链接。同时</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有权视用户的行为性质</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">采取包括但不限于暂停或终止服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">限制、冻结或终止用户账号的使用</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">追究法律责任等措施。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">12.4</span><span style="font-family:DengXian; font-size:13pt">您违反本条约定</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">导致任何第三方损害的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应当独立承担责任</span><span style=" font-size:13pt">;</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">因此遭受损失的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您也应当并赔偿。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十三、【遵守当地法律监管】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">13.1</span><span style="font-family:DengXian; font-size:13pt">您在使用本服务过程中应当遵守当地相关的法律法规</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">并尊重当地的道德和风俗习惯。如果您的行为违反了当地法律法规或道德风俗</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应当为此独立承担责任</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">13.</span><span style=" font-size:13pt">2</span><span style="font-family:DengXian; font-size:13pt">您应避免因使用本服务而使</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">卷入政治和公共事件</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">否则</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有权暂停或终止对您的服务</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十四、【用户发送、传播的內容与第三方投诉处理】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">14.</span><span style=" font-size:13pt">1</span><span style="font-family:DengXian; font-size:13pt">您通过本服务发送或传播的内容</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">包括但不限于网页、文字、图片、音频、视频、图表等</span><span style=" font-size:13pt">)</span><span style="font-family:DengXian; font-size:13pt">均由您自行承担责任。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">4.2</span><span style="font-family:DengXian; font-size:13pt">您发送或传播的内容应有合法来源</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">相关内容为您所有或您已获得权利人的授权。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">14.3</span><span style="font-family:DengXian; font-size:13pt">您同意</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">可为履行本协议或提供本服务的目的而使用您发送或传播的内容。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">14.4</span><span style="font-family:DengXian; font-size:13pt">如果</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">收到权利人通知</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">主张您发送或传播的内容侵犯其相</span><span style="font-family:DengXian; font-size:13pt">关权利的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您同意</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有权进行独立判断并采取删除、屏蔽或断开链接等措施</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">14.</span><span style=" font-size:13pt">5</span><span style="font-family:DengXian; font-size:13pt">您使用本服务时不得违反国家法律法规、侵害他人合法权益。您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">如您被他人投诉侵权或您投诉他人侵权</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有权将争议中相关方的主体联系方式、投诉相关内容等必要信息提供给其他争议方或相关部门</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以便及时解决投诉纠纷</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">保护他人合法权</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十五、【不可抗力及其他免责事由】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.1</span><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">在使用本服务的过程中</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">可能会遇到不可抗力等风险因素</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">使本服务发生中断。不可抗力是指不能预见、不能克服并不能避免且对一方或双方造成重大影响的客观事件</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">包括但不限于自然灾害如洪水、地震、瘟疫流行和风暴等以及社会事件如战争、动乱、政府行为等。岀现上述情况时</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">将努力在第一时间与相关单位配合</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">及时进行修复</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">但是由此给您造成的损失</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">在法律允许的范围内免责</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.2</span><span style="font-family:DengXian; font-size:13pt">在法律允许的范围内</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">对以下情形导致的服务中断或受阻不承担责任</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">1)</span><span style="font-family:DengXian; font-size:13pt">受到手机病毒、木马或其他恶意程序、黑客攻击的破坏</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">用户或</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的电脑软件、系统、硬件和通信线路出现故障</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(3)</span><span style="font-family:DengXian; font-size:13pt">用户操作不当</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">4)</span><span style="font-family:DengXian; font-size:13pt">用户通过非</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">授权的方式使用本服务</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(5)</span><span style="font-family:DengXian; font-size:13pt">其他</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">无法控制或合理预见的情形</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.3</span><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">在使用本服务的过程中</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">可能会遇到网络信息或其他用户行为带来的风险</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">不对任何信息的真实性、适用性、合法性承担责任</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">也不对因侵权行为给您造成的损害负责。这些风险包括但不限于</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">来自他人匿名或冒名的含有威胁、诽谤、令人反感或非法内容的信息</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">因使用本协议项下的服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">遭受他人误导、欺骗或其他导致或可能导致的任何心理、生理上的伤害以及经济上的损失</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">3)</span><span style="font-family:DengXian; font-size:13pt">其他因网络信息或用户行为引起的风险</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.4</span><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">本服务并非为某些特定目的而设计</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">包括但不限于核设施、军事用途、医疗设施、交通通讯等重要领域。如果因为软件或服务的原因导致上述操作失败而带来的人员伤亡、财产损失和环境破坏等</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">不承担法律责任。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.5</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">依据本协议约定获得处理违法违规内容的权利</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">该权利不构成</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的义务或承诺</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">不能保证及时发现违法行为或进行相应处理。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.6</span><span style="font-family:DengXian; font-size:13pt">在任何情况下</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您不应轻信借款、索要密码或其他涉及财产的网络信</span><span style="font-family:DengXian; font-size:13pt">息。涉及财产操作的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">请一定先核实对方身份</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">并请经常留意</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有关防范诈骗犯罪的提示。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十六、【协议的生效与变更】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">16.1</span><span style="font-family:DengXian; font-size:13pt">您使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">的服务即视为您已阅读本协议并接受本协议的约束</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">16.2</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有权在必要时修改本协议条款。您可以在相关服务页面查阅最新版本的协议条款</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">16.3</span><span style="font-family:DengXian; font-size:13pt">本协议条款变更后</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">如果您继续使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">提供的软件或服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">即视为您已接受修改后的协议。如果您不接受修改后的协议</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">应当停止使用</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">提供的软件或服务</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十七、【服务的变更、中断、终止</span><span style="font-family:DengXian; font-size:13pt">】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">17.1</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">可能会对服务内容进行变更</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">也可能会中断、中止或终止服务。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">17.</span><span style=" font-size:13pt">2</span><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有权自主决定经营策略。在</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">发生合并、分立、收购、资产转让时</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">可向第三方转让本服务下相关资产</span><span style=" font-size:13pt">;</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">也可在单方通知您后</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">将本协议下部分或全部服务转交由第三方运营或履行。具体受让主体以</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">通知的为准</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">17.</span><span style=" font-size:13pt">3</span><span style="font-family:DengXian; font-size:13pt">如发生下列任何一种情形</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有权不经通知而中断或终止向您提供的服务</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">根据法律规定您应提交真实信息</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">而您提供的个人资料不真实、或与注册时信息不一致又未能提供合理证明</span><span style="font-family:DengXian; font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">您违反相关法律法规或本协议的约定</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(3)</span><span style="font-family:DengXian; font-size:13pt">按照法律规定或主管部门的要求</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(4)</span><span style="font-family:DengXian; font-size:13pt">出于安全的原因或其他必要的情形。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">17.</span><span style=" font-size:13pt">4</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有权按本协议</span><span style=" font-size:13pt">8.2</span><span style="font-family:DengXian; font-size:13pt">条的约定进行收费。若您未按时足额付费</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">有权中断、中止或终止提供服务。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">17.5</span><span style="font-family:DengXian; font-size:13pt">您有责任自行备份存储在本服务中的数据。如果您的服务被终止</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">可以从服务器上永久地删除您的数据</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">但法律法规另有规定的除外。服务终止后</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">没有义务向您返还数据。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十八、【管辖与法律适用】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">18.1</span><span style="font-family:DengXian; font-size:13pt">本协议的成立、生效、履行、解释及纠纷解决</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">适用中华人民共和国大陆地区法律</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">不包括冲突法</span><span style=" font-size:13pt">)</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">18.</span><span style=" font-size:13pt">2</span><span style="font-family:DengXian; font-size:13pt">本协议签订地为中华人民共和国四川省成都市。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">18.3</span><span style="font-family:DengXian; font-size:13pt">若您和</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">之间发生任何纠纷或争议</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">首先应友好协商解决</span><span style=" font-size:13pt">;</span><span style="font-family:DengXian; font-size:13pt">协商不成的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您同意将纠纷或争议提交本协议签订地有管辖权的人民法院管辖。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">18.</span><span style=" font-size:13pt">4</span><span style="font-family:DengXian; font-size:13pt">本协议所有条款的标题仅为阅读方便</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">本身并无实际涵义</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">不能作为本协议涵义解释的依据。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">18.5</span><span style="font-family:DengXian; font-size:13pt">本协议条款无论因何种原因部分无效或不可执行</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">其余条款仍有效</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">对双方具有约束力。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十九、【未成年人使用条款</span><span style="font-family:DengXian; font-size:13pt">】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">19.1</span><span style="font-family:DengXian; font-size:13pt">若用户未满</span><span style=" font-size:13pt">18</span><span style="font-family:DengXian; font-size:13pt">周岁</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">则为未成年人</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">应在监护人监护、指导下阅读本协议和使用本服务</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">19.2</span><span style="font-family:DengXian; font-size:13pt">未成年人用户涉世未深</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">容易被网络虚象迷惑</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">且好奇心强</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">遇事缺乏随机应变的处理能力</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">很容易被别有用心的人利用而又缺乏自我保护能力。因此</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">未成年人用户在使用本服务时应注意以下事项</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">提高安全意识</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">加强自我保护</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">认清网络世界与现实世界的区别</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">避免沉迷于网络</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">影响日常的学习生活</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">填写个人资料时</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">加强个人保护意识</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以免不良分子对个人生活造成骚扰</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(3)</span><span style="font-family:DengXian; font-size:13pt">在监护人或老师的指导下</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">学习正确使用网络</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(4)</span><span style="font-family:DengXian; font-size:13pt">避免陌生网友随意会面或参与联谊活动</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以免不法分子有机可乘</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">危及自身安全。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">9.3</span><span style="font-family:DengXian; font-size:13pt">监护人、学校均应对未成年人使用本服务时多做引导。特别是家长应关心子女的成长</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">注意与子女的沟通</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">指导子女上网应该注意的安全问题</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">防患于未然。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">二十、【其他】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">如果您对本协议或本服务有意见或建议</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">可与</span><span style="font-family:DengXian; font-size:13pt">智享收银台</span><span style="font-family:DengXian; font-size:13pt">客户服务部门联系</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">我们会给予您必要的帮助。</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">正文完</span><span style=" font-size:13pt">)</span></p></div>'
+
+// export default agreement;
diff --git a/src/utils/agreement2.js b/src/utils/agreement2.js
new file mode 100644
index 0000000..2506e90
--- /dev/null
+++ b/src/utils/agreement2.js
@@ -0,0 +1 @@
+const agreement2='<div><p style="font-size:16pt; line-height:150%; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:仿宋; font-size:16pt; font-weight:bold">智分期业务合作协议(普通商户版)</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:125%; margin:0pt 0pt 0pt 271.45pt; orphans:0; padding-left:61.3pt; text-align:right; text-indent:-61.3pt; widows:0"><span style="font-family:仿宋; font-size:12pt"> </span><span style="font-family:仿宋; font-size:12pt">协议</span><span style="font-family:仿宋; font-size:12pt">编号:</span><span style="font-family:仿宋; font-size:12pt">ZFQ-SY-QC</span><span style="font-family:仿宋; font-size:12pt">-</span><span style="font-family:仿宋; font-size:12pt">2018-</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">0001</span><span style="font-family:仿宋; font-size:12pt">                                         </span><span style="font-family:仿宋; font-size:12pt">                   </span><span style="font-family:仿宋; font-size:12pt">                      </span></p><p style="font-size:12pt; line-height:125%; margin:0pt 0pt 0pt 271.45pt; orphans:0; padding-left:61.3pt; text-align:right; text-indent:-61.3pt; widows:0"><span style="font-family:仿宋; font-size:12pt">协议</span><span style="font-family:仿宋; font-size:12pt">签订地:</span><span style="font-family:仿宋; font-size:12pt">成都市高新区</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 63pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 0.5pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">甲    方:</span><span style="font-family:仿宋; font-size:12pt">深圳前海彩蜂商业保理有限公司</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">统一社会信用代码为:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">91440300MA5F1HWU0L</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">业务联系人:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">余梦颖</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">联系</span><span style="font-family:仿宋; font-size:12pt">方式:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">18828020724</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 0.5pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">乙    方:</span><span style="font-family:仿宋; font-size:12pt">本次注册商户</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">统一社会信用代码为:</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时填写的营业执照号</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">业务联系人:</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时填写的负责人姓名</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">联系</span><span style="font-family:仿宋; font-size:12pt">方式:</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时填写的负责人手机号</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 63pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">丙    方</span><span style="font-family:仿宋; font-size:12pt">:</span><span style="font-family:仿宋; font-size:12pt">成都唯知信息科技有限公司</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">统一社会信用代码为:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">91510100MA6C9H4L1L</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">业务联系人:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">易轩弘</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">联系</span><span style="font-family:仿宋; font-size:12pt">方式:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">18108214026</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">鉴于</span><span style="font-family:仿宋; font-size:12pt">:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">甲方是一家依法设立并有效存续的商业保理公司。主要受让乙方拥有或控制的基于消费场景下产生的应收账款,为乙方用户提供分期付款服务(即“智分期”服务),进而提升乙方平台交易量。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 0pt 0pt 0.85pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">乙方是一家依法成立并有效存续的独立公司法人企业,主营</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">汽车</span><span style="font-family:仿宋; font-size:12pt">类</span><span style="font-family:仿宋; font-size:12pt">相关产品</span><span style="font-family:仿宋; font-size:12pt">(</span><span style="font-family:仿宋; font-size:12pt">商品或服务</span><span style="font-family:仿宋; font-size:12pt">)的销售</span><span style="font-family:仿宋; font-size:12pt">并</span><span style="font-family:仿宋; font-size:12pt">提供相关服务</span><span style="font-family:仿宋; font-size:12pt">。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">丙方是一家专业的</span><span style="font-family:仿宋; font-size:12pt">系统开发服务商</span><span style="font-family:仿宋; font-size:12pt">,受甲方委托提供消费分期技术服务,致力于为商户及消费者提供基于互联网的更加便捷、安全、高效的一体化解决方案(分期服务),专注于消费品交易为主的在线分期购物商城及消费金融服务平台,是国内领先的消费品分期服务公司。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">为合理利用甲乙丙三方的有利资源,实现互利共赢,三方将合作运营并推广智分期业务,共同促进在消费业务领域的深度合作,在自愿、平等、诚信的基础上,交易各方经友好协商就智分期服务合作相关事宜达成共识,并就已经</span><span style="font-family:仿宋; font-size:12pt">确定</span><span style="font-family:仿宋; font-size:12pt">智分期交易规则、各方权利义务等内容达成如下协议,以资共同遵守。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第一条  定义</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">本协议中,除非文义另有所指,下列名词具有如下特定含义:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、用户:指基于甲方提供的智分期服务基础上在乙方处进行消费的个人。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、商户:指为用户提供商品或服务(本协议统称“产品”)的供应商,即本协议中的乙方。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、交易规则:指标示在乙方店面或网站之上的,与用户使用乙方所提供的平台服务有关的任何规范性文件,包括但不限于购物流程、售后政策、退款说明等,同时包括智分期服务交易规则,以下统称</span><span style="font-family:仿宋; font-size:12pt">“</span><span style="font-family:仿宋; font-size:12pt">交易规则</span><span style="font-family:仿宋; font-size:12pt">”</span><span style="font-family:仿宋; font-size:12pt">。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、智分期服务:指甲方作为商业保理公司,受让乙方平台拥有或者控制的基于消费场景产生的应收账款,并通过乙方向用户提供的一种先消费后付款的购物体验的信用</span><span style="font-family:仿宋; font-size:12pt">分期</span><span style="font-family:仿宋; font-size:12pt">付款</span><span style="font-family:仿宋; font-size:12pt">服务</span><span style="font-family:仿宋; font-size:12pt">(以下</span><span style="font-family:仿宋; font-size:12pt">简称“</span><span style="font-family:仿宋; font-size:12pt">智分期</span><span style="font-family:仿宋; font-size:12pt">”</span><span style="font-family:仿宋; font-size:12pt">服务)</span><span style="font-family:仿宋; font-size:12pt">。</span><span style="font-family:仿宋; font-size:12pt">甲方可根据法律、法规和规范性文件的规定和营销推广的实际情况对相关技术服务的名称进行调整。甲方委托丙方为“智分期”服务提供技术支持,“智分期”服务包括但不限于以下特点:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(1)用户可延期支付或者分期支付;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(2)以用户的真实交易为背景;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(3)依赖丙方优质的信用分期付款技术服务;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(4)浮动费率。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">、信用分期服务:指商户基于智分期服务为符合条件的用户提供 “先购物、后付款”的信用赊购方式付款的平台服务。“赊购方式付款”指用户在乙方消费时,可依据乙方交易规则及相应申请流程,享受由甲方在商业保理业务基础上提供的相应的延后付款或分期付款的付款方式。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6、</span><span style="font-family:仿宋; font-size:12pt">商业保理:是指销售商(债权人)将其与买方(债务人)订立的货物销售(服务)协议所产生的应收账款转让给商业保理公司,由商业保理公司为其提供贸易融资、应收账款管理与催收等综合性商贸服务。在本协议项下,由甲方受让乙方基于消费场景产生的应收账款,提供商业保理服务。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">7、资金服务机构:指为智分期中受让合作商户信用分期应收账款的资金机构和个人,包括且不限于银行、商业保理、融资租赁、消费金融公司、小贷公司、信托、私募基金等机构。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">8、分期服务费:指用户使用甲方提供的智分期服务需承担的服务费用,具体标准以甲方及乙方页面显示为准。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">9</span><span style="font-family:仿宋; font-size:12pt">、</span><span style="font-family:仿宋; font-size:12pt">保理</span><span style="font-family:仿宋; font-size:12pt">服务费:</span><span style="font-family:仿宋; font-size:12pt">指用户</span><span style="font-family:仿宋; font-size:12pt">使用“</span><span style="font-family:仿宋; font-size:12pt">智</span><span style="font-family:仿宋; font-size:12pt">分期</span><span style="font-family:仿宋; font-size:12pt">”</span><span style="font-family:仿宋; font-size:12pt">服务</span><span style="font-family:仿宋; font-size:12pt">时,</span><span style="font-family:仿宋; font-size:12pt">乙方</span><span style="font-family:仿宋; font-size:12pt">按照交易账款的</span><span style="font-family:仿宋; font-size:12pt">约</span><span style="font-family:仿宋; font-size:12pt">定比例</span><span style="font-family:仿宋; font-size:12pt">向甲</span><span style="font-family:仿宋; font-size:12pt">方支付的服务费用</span><span style="font-family:仿宋; font-size:12pt">即甲方在受让乙方拥有或控制的应收账款时,乙方应向甲方支付的费用,本协议项下保理服务费费率详见附表一(甲方有权根据业务发展情况调整该项费率,经相关各方书面确认后生效)。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">10</span><span style="font-family:仿宋; font-size:12pt">、交易</span><span style="font-family:仿宋; font-size:12pt">账款</span><span style="font-family:仿宋; font-size:12pt">:指用户在乙方使用“智分期</span><span style="font-family:仿宋; font-size:12pt">”</span><span style="font-family:仿宋; font-size:12pt">服务的</span><span style="font-family:仿宋; font-size:12pt">消费</span><span style="font-family:仿宋; font-size:12pt">订单(根据</span><span style="font-family:仿宋; font-size:12pt">甲方后台确认</span><span style="font-family:仿宋; font-size:12pt">的订单确定</span><span style="font-family:仿宋; font-size:12pt">)</span><span style="font-family:仿宋; font-size:12pt">对应价款的金额(即乙方与用户基于商品销售及服务并符合《合同法》相关政策法规的基础交易约定,由乙方向用户提供服务或货物产生的应收账款金额),其中不包括用户已经另行向乙方支付的款项。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">11</span><span style="font-family:仿宋; font-size:12pt">、</span><span style="font-family:仿宋; font-size:12pt">应收账款</span><span style="font-family:仿宋; font-size:12pt">受让款</span><span style="font-family:仿宋; font-size:12pt">:</span><span style="font-family:仿宋; font-size:12pt">指甲方在受让乙方拥有或控制的应收账款后,在</span><span style="font-family:仿宋; font-size:12pt">交易账款中</span><span style="font-family:仿宋; font-size:12pt">扣除保理</span><span style="font-family:仿宋; font-size:12pt">服务费</span><span style="font-family:仿宋; font-size:12pt">后应向乙方支付</span><span style="font-family:仿宋; font-size:12pt">的账款余额</span><span style="font-family:仿宋; font-size:12pt">。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">12</span><span style="font-family:仿宋; font-size:12pt">、清算服务机构:指甲乙丙三方基于智分期相关协议约定基础上,甲方或丙方委托其负责交易账款及相关业务中交易结算资金清分服务的机构。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">13</span><span style="font-family:仿宋; font-size:12pt">、用户个人信息:指用户依据智分期服务相关各方要求所提供的个人身份信息及历史消费情况,包括但不限于姓名、证件号、联系地址、手机号码等。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">14</span><span style="font-family:仿宋; font-size:12pt">、关联公司:本协议所称“关联公司”是指由一方直接控制或间接控制;或直接或间接控制一方;或与一方共同控制同一家公司或能对其施加重大影响;或与一方受同一家公司直接或间接控制的公司。包括但不限于一方的母公司、子公司;与一方受同一母公司控制的子公司;一方的合营企业、联营企业等。这里的“公司”指任何一人公司、有限责任公司或股份有限公司;“控制”是指直接或间接地拥有影响所提及公司管理的能力,无论是通过所有权、有投票权的股份、协议或其他被人民法院认定的方式。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">本协议未作定义或约定的词语,按相关法律、法规及行业惯例解释。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第二条  分期业务合作约定与业务流程</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">、甲方为乙方用户提供“智分期”服务。乙方向用户提供所需要的产品或服务后,甲方受让基于前述消费场景产生的应收账款。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、丙方接受甲乙二方的委托,为“智分期”服务提供技术服务。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3</span><span style="font-family:仿宋; font-size:12pt">、乙方放置“智分期”业务的链接、端口或分期二维码,引导用户使用“智分期”服务完成订单支付,并协助用户在申请“智分期”服务过程中完成授权及其他资料的提供。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4</span><span style="font-family:仿宋; font-size:12pt">、甲方对用户进行实名认证,用户资质审核通过后,同意用户使用智分期信用分期付款,乙方认可用户通过“智分期”业务支付的订单,乙方应根据订单向用户提供相应商品交付或服务。订单交易完成确认后,甲方受让该等应收账款并向乙方支付应收账款转让对价款项。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5、</span><span style="font-family:仿宋; font-size:12pt">乙方基于“</span><span style="font-family:仿宋; font-size:12pt">智</span><span style="font-family:仿宋; font-size:12pt">分期”服务形成的对用户的分期应收账款债权及其附属权益,包括但不限于对该等分期应收账款等款项以及请求、起诉、收回、接受与该等分期应收账款相关的全部应偿付款项的权利、与该等分期应收账款相关的承诺的利益、强制执行该等分期应收账款的全部权利和申请法律救济的权利。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6、乙方在此不可撤销地确认, 将以其自身名义向用户告知应收账款转让事宜,乙方应在签署</span><span style="font-family:仿宋; font-size:12pt">本</span><span style="font-family:仿宋; font-size:12pt">协议的同时一并签署《分期应收账款转让通知书》交甲方保存,在债务人(即用户)违约或出现本协议约定的风险事件情形下,乙方授权甲方向债务人发送其已签署的《分期应收账款转让通知书》,以行使该资产转让后在甲方和用户之间的相关权利。同时甲方如需在中国人民银行的债权转让相关登记或公示系统进行转让登记的,乙方应积极配合协助,根据甲方要求及时提供必要的转让登记资料,不得以任何理由拒绝。</span><br /><span style="font-family:仿宋; font-size:12pt">    7</span><span style="font-family:仿宋; font-size:12pt">、甲乙丙</span><span style="font-family:仿宋; font-size:12pt">三</span><span style="font-family:仿宋; font-size:12pt">方共同约定,自甲方支付应收账款受让款之日起,该等应收账款即转让给甲方,该应收账款包括但不限于截止转让日债务人尚未支付的全部款项(无论是否已满足支付条件)及其自转让日起产生的全部逾期利息、违约金、赔偿金、补偿金及任何其他应付款项等。同时,乙方基于前述债权享有的任何从权利包括但不限于抵押权、质押权、保证金等担保权利以及为实现债权而享有的任何实体性权利及程序性权利等也于转让日一并转让给甲方。</span><br /><span style="font-family:仿宋; font-size:12pt">    </span><span style="font-family:仿宋; font-size:12pt">8、自甲方支付应收账款受让款之日起,该应收账款回收款由用户直接支付至甲方指定的账户,若用户未按约定进行还款,甲方有权对用户进行催收,并对该应收账款债权资产处置。</span><br /><span style="font-family:仿宋; font-size:12pt">    9</span><span style="font-family:仿宋; font-size:12pt">、根据本协议执行情况及乙方所属行业,甲、乙双方后续可根据业务开展情况通过签署书面补充协议的形式调整具体的业务规则及业务流程等产品信息。在任何</span><span style="font-family:仿宋; font-size:12pt">情形下</span><span style="font-family:仿宋; font-size:12pt">,如本协议项下智分期业务终止,协议各方</span><span style="font-family:仿宋; font-size:12pt">仍应按照</span><span style="font-family:仿宋; font-size:12pt">本</span><span style="font-family:仿宋; font-size:12pt">协议约定</span><span style="font-family:仿宋; font-size:12pt">,承担其在业务开展期间所产生的上述风险及法律责任。</span><br /><span style="font-family:仿宋; font-size:12pt">    </span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第三条  商品服务承诺</span><br /><span style="font-family:仿宋; font-size:12pt; font-weight:bold">    </span><span style="font-family:仿宋; font-size:12pt">1、乙方应保证所销售的商品或服务与其对外承诺保持一致且符合国家、地区及行业标准;乙方应按照法律、法规和规范性文件的规定对其出售给用户的商品或服务承担产品质量责任,并按照法律规定向用户履行“三包”义务。</span><br /><span style="font-family:仿宋; font-size:12pt">    </span><span style="font-family:仿宋; font-size:12pt">2、</span><a name="OLE_LINK2"><span style="font-family:仿宋; font-size:12pt">乙方应保证乙方具备所销售商品和服务的经营资质,并确认其拥有开具对应发票的资格</span></a><span style="font-family:仿宋; font-size:12pt">。</span><br /><span style="font-family:仿宋; font-size:12pt">    </span><span style="font-family:仿宋; font-size:12pt">3、甲方、丙方无须因乙方产品及服务问题承担任何责任。如因应归责于乙方原因(如产品质量有瑕疵、未实现服务承诺等)而产生的纠纷或争议,从而导致用户逾期付款或拒绝履行付款义务的,甲方有权就其所遭受的一切损失及不利后果向乙方进行追偿。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 0pt 0pt 24pt; orphans:0; padding-left:12pt; text-align:justify; text-indent:-12pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第四条  甲方权利与义务</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">、乙方基于向用户提供产品或服务形成对用户(或者基础债务人)的分期应收账款债权及其附属权益,甲方按照本协议从乙方处受让全部分期应收账款债权及其附属权益, 包括但不限于对该等分期应收账款等款项以及请求、起诉、收回、接受与该等分期应收账款相关的全部应偿付款项的权利、与该等分期应收账款相关的承诺的利益、强制执行该等分期应收账款的全部权利和申请法律救济的权利。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、自甲方支付乙方分期应收账款受让款之日起,对应的智分期交易应收账款即转让给甲方,该应收账款包括但不限于截止甲方付款日用户尚未支付的全部款项(无论是否已满足支付条件)及其自甲方付款日起产生的全部逾期利息、违约金、赔偿金、补偿金及任何其他应付款项等。同时,乙方基于前述债权享有的任何权利包括但不限于抵押权、质押权、保证金等担保权利以及为实现债权而享有的任何实体性权利及程序性权利等也于转让日一并转让给甲方。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、甲方应按照本协议第7.1款将相应分期应收账款受让款按时支付至乙方指定账户。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4</span><span style="font-family:仿宋; font-size:12pt">、本协议项下的分期应收账款转让后,相关分期应收账款回收款由用户支付至甲方指定账户,若甲方在用户还款期未能按期足额收到应收账款回收款时,由甲方根据风险控制措施处理,与乙方无关。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">、当发生下列情形之一时,甲方在书面通知后即可暂停、终止、中止向乙方提供服务而无需承担任何违约责任:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1)乙方提供的资料不真实、且未能提供合理说明及证明;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2)乙方违反法律、法规、规章及政府规范性文件或本协议约定;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3)中国人民银行、公安机关、政府机关或司法机关等国家机关向甲方发出要求的。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6</span><span style="font-family:仿宋; font-size:12pt">、如乙方发生退货次数超过成功交易次数的</span><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">%,甲方有权向乙方提出警示或终止合作。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 0pt 0pt 24pt; orphans:0; padding-left:12pt; text-align:justify; text-indent:-12pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第五条  乙方权利与义务</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">、乙方应向甲方提供的基本信息、营业执照复印件、税务登记证复印件和法定代表人或负责人身份证复印件等均真实、合法、有效。乙方应在安全的场所提供符合国家法律法规或相关质量标准或管理标准规定的商品和服务,乙方的经营应符合国家法律法规对其经营的要求。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、乙方承诺其拥有合法有效的经营资质在其乙方经营场所向用户销售相关产品或服务。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3</span><span style="font-family:仿宋; font-size:12pt">、由于乙方原因造成乙方所提供的服务引起的一切客户投诉、质疑、纠纷或引起的法律上的责任,由乙方负责;如因前述情况导致甲方被裁定承担法律责任的,乙方应依法赔偿甲方损失。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4</span><span style="font-family:仿宋; font-size:12pt">、乙方在使用“智分期”业务过程中,有义务遵守包括国家法律、金融政策、中国银联规章制度在内的所有政策法规。乙方违法违规所造成的全部法律责任由乙方承担,造成甲方损失或承担责任的,甲方可随时向乙方追偿,并有权立即解除协议。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">、乙方应及时有效地处理用户、客户或合作伙伴的各种投诉以及由乙方提供的产品和服务引发的质量、价格、售后服务等纠纷。由于乙方原因造成其客户投诉或引起其他法律纠纷和责任的,均与甲方无关,由此造成甲方损失的,应由乙方承担赔偿责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6</span><span style="font-family:仿宋; font-size:12pt">、当用户至乙方使用“智分期”服务过程中,若用户采取银行信用卡作为风险信用担保的,乙方务必保证用户所用信用卡持卡人信息真实有效,并和分期交易确认单上所填信息一致,否则由此造成的损失由乙方自行承担。同时乙方有义务确保分期交易的真实性及有效性,乙方有义务向甲方提供真实有效的用户订单信息和配送物流信息,乙方如发现用户有欺诈、非法套现、提供虚假资料、恶意刷单等情况,应及时采取包括且不限于通知甲方、协助甲方进行调查、处理,暂停对该用户提供服务等措施。如给甲方造成任何损失的,乙方还应该负责赔偿。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">7</span><span style="font-family:仿宋; font-size:12pt">、乙方应该在分期交易后及时通知用户应收账款转让事宜,并协助甲方对用户进行还款提醒,若用户未能在还款日还款,乙方应协助甲方开展催收工作及惩罚。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">8</span><span style="font-family:仿宋; font-size:12pt">、乙方保证其有权获得通过乙方使用智分期的用户的充分授权,可以合理使用并授权丙方使用用户的相关信息,包括但不限于用户在乙方平台的注册信息、交易关系、浏览行为记录、相关消费记录和支付结算结果等。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">9</span><span style="font-family:仿宋; font-size:12pt">、乙方有权设定智分期的使用范围,但该设定范围应取得甲方的同意且不得歧视智分期的用户。但依据商品的属性(如话费充值卡、游戏点卡、游戏币等虚拟商品和黄金、珠宝、钻石等投资性贵金属等)不宜采用“智分期”服务的,乙方不得支持用户使用。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">10</span><span style="font-family:仿宋; font-size:12pt">、乙方保证具备开具所销售商品发票的资格且应按乙方与用户约定的价格向用户开具相应法定足额发票。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">11</span><span style="font-family:仿宋; font-size:12pt">、如甲方通过技术手段判定或有证据证明乙方联合用户进行套利套现交易,甲方有权要求乙方对甲方造成的损失进行全额赔偿。如套利套现情况严重的,甲方有权立即停止与乙方的合作及结算,并保留追究乙方违约责任的权利。如出现乙方用户进行套利套现交易,乙方承担同样的连带赔偿责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">六</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">条  丙方权利与义务</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">、丙方有义务向甲方提供智分期业务运营所需的技术支持,维护智分期正常运行,并努力提升和改进技术能力,但不对因通信故障等非甲方原因引起的用户与甲方的交易中断、交易错误等承担责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、丙方受甲方的委托,有权要求乙方提供使用智分期服务付款的用户在其交易平台上的相关消费记录和支付结算结果,丙方有权依据本协议从甲方及</span><span style="font-family:仿宋; font-size:12pt">/或乙方处获得并合理使用本协议</span><span style="font-family:仿宋; font-size:12pt">约定的用户相关信息,乙方应负责取得对于上述事项的合法授权。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3</span><span style="font-family:仿宋; font-size:12pt">、丙方有义务按照本协议约定就</span><span style="font-family:仿宋; font-size:12pt">本协议约定的服务流程</span><span style="font-family:仿宋; font-size:12pt">提供技术服务支持</span><span style="font-family:仿宋; font-size:12pt">并保证系统安全稳定</span><span style="font-family:仿宋; font-size:12pt">。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第七条  费用结算及支付</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">甲乙丙三方同意并确认,本协议项下涉及的付款、还款、退款等操作处理均以以下方式处理:</span><br /><span style="font-family:仿宋; font-size:12pt">    1</span><span style="font-family:仿宋; font-size:12pt">、账款结算约定,用户通过</span><span style="font-family:仿宋; font-size:12pt">“</span><span style="font-family:仿宋; font-size:12pt">智分期</span><span style="font-family:仿宋; font-size:12pt">”</span><span style="font-family:仿宋; font-size:12pt">服务</span><span style="font-family:仿宋; font-size:12pt">支付成功</span><span style="font-family:仿宋; font-size:12pt">时,甲方</span><span style="font-family:仿宋; font-size:12pt">于交易成功后</span><span style="font-family:仿宋; font-size:12pt">T+</span><span style="font-family:仿宋; font-size:12pt">0</span><span style="font-family:仿宋; font-size:12pt">个工作日内由清算服务机构在扣除依照附表一约定的费率扣除保理服务费后,将应收账款受让款结算至乙方指定账户。</span><br /><span style="font-family:仿宋; font-size:12pt">    2</span><span style="font-family:仿宋; font-size:12pt">、在甲方开展营销活动时,涉及的促销费率双方另行以补充协议形式约定。</span><br /><span style="font-family:仿宋; font-size:12pt">    3</span><span style="font-family:仿宋; font-size:12pt">、技术服务费约定,甲方基于丙方提供的技术服务一次性向丙方支付技术服务费人民币</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">  零  </span><span style="font-family:仿宋; font-size:12pt">元。</span><br /><span style="font-family:仿宋; font-size:12pt">    </span><span style="font-family:仿宋; font-size:12pt">4</span><span style="font-family:仿宋; font-size:12pt">、本协议项下,</span><span style="font-family:仿宋; font-size:12pt">双</span><span style="font-family:仿宋; font-size:12pt">方指定收款账户信息</span><span style="font-family:仿宋; font-size:12pt">:</span></p><table cellspacing="0" cellpadding="0" style="border-collapse:collapse; margin-left:26.55pt; width:498.45pt"><tr style="height:16.95pt"><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">账户信息</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:230.2pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:仿宋; font-size:12pt">甲方</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:top; width:180.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:仿宋; font-size:12pt">乙方</span></p></td></tr><tr style="height:13.6pt"><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">账户名称</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:230.2pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:top; width:180.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户名称或法人姓名</span></p></td></tr><tr style="height:27.4pt"><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">账    号</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:230.2pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:top; width:180.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; widows:0"><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时填写的银行卡号</span></p></td></tr><tr style="height:15.9pt"><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">开 户 行</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:230.2pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:top; width:180.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时选择的银行</span></p></td></tr></table><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">任何一方如需改变账户信息,应提前</span><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">个工作日书面通知另一方,否则协议其他方仍然有权视原账户为有效账户,因变更方未及时通知账户变更信息导致协议其他方将支付款项汇入变更方原账户的,视为变更方已经足额收到协议其他方应付的款项,因此产生的一切费用由变更方承担。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">、在甲乙丙三方协商一致的情况下,可在协议期内根据合作的业务量、交易成功率等因素,对相关费用标准进行调整。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6</span><span style="font-family:仿宋; font-size:12pt">、除甲方依照本协议约定收取的保理服务费及分期服务费外,用户、乙方及/或资金服务机构之间的任何资金款项往来涉及的相关责任均由该等主体之间通过资金提供协议或其他协议自行约定承担方式,该等主体之间的资金款项往来是否按时足额支付给相关方、是否发生逾期或资金提供协议或其他协议项下的违约等与甲方无关。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">7、甲乙双方在前期非系统(单指结算系统)状态下,按照以下流程进行应收账款受让款结算。乙方按照附件四</span><span style="font-family:仿宋; font-size:12pt">—</span><span style="font-family:仿宋; font-size:12pt">商户交易确认单填写订单信息,填写完成,经过核对,待确认无误后,连同用户办理“智分期”业务所填写贷记卡原件,用户确认办理“智分期”业务的确认短信三者一起拍照留存,将所拍照片发送到甲方指定邮箱。甲方按照收到照片所呈现的信息进行核对付款。信息核对无误按照7.1执行。如存在信息差异的,由甲乙双方协商处理,甲乙双方协商后无法达成一致意见的,以甲方所持有信息</span><span style="font-family:仿宋; font-size:12pt">为准。</span><span style="font-family:仿宋; font-size:12pt">乙方应保证所提供资料信息的正确性。甲乙双方在系统状态下,按照系统定义结算流程结算。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第八条  退货退款的处理</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、如用户提出退货申请且乙方已受理的,同时甲方针对该笔订单对应应收账款已向乙方完成受让支付的,乙方应在退货申请受理后的第二个工作日将甲方支付的应收</span><span style="font-family:仿宋; font-size:12pt">账款</span><span style="font-family:仿宋; font-size:12pt">及应收账款的退还至甲方指定收款账户。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、当乙方为用户办理退货时,应按照以下规定和退货流程办理:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(1)用户不得直接向甲方申请退款,只得向乙方发出申请。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(2)乙方同意用户退货退款申请后,需通过“智分期”后台提交退款申请,同时将已清算应收账款退回至甲方指定账户。上述应收账款确认退回后,甲方将用户已发生分期金额原路径返还并对剩余期数平账。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(3)自交易日起30日内用户可向乙方申请退款,该笔交易所产生的保理服务费由甲方部分承担,超过上述期限甲方不再受理退款申请。其中0.2%的支付通道费用由乙方承担。甲方承担其余保理服务费用。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(4)乙方</span><span style="font-family:仿宋; font-size:12pt">若</span><span style="font-family:仿宋; font-size:12pt">以现金方式退款给用户</span><span style="font-family:仿宋; font-size:12pt">,</span><span style="font-family:仿宋; font-size:12pt">因此产生的一切法律及经济责任由乙方承担。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第九条  违约事件与违约责任</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、甲乙丙三方应当严格遵守本合作协议之规定,保障合作顺利进行。协议的任何一方违反其于本协议项下的陈述、承诺、保证或义务,则视为违约。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、出现下列情况之一的,视为已发生违约事件:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(</span><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">)</span><span style="font-family:仿宋; font-size:12pt">任何一方提供的资料不真实或隐瞒重大事项、且未能提供合理说明及证明;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(2)</span><span style="font-family:仿宋; font-size:12pt">任何一方违反法律、法规、规章及政府规范性文件或本协议约定</span><span style="font-family:仿宋; font-size:12pt">或侵害第三人包括知识产权在内的一切权利的</span><span style="font-family:仿宋; font-size:12pt">;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(3)乙方</span><span style="font-family:仿宋; font-size:12pt">或其员工,故意构造虚假订单或虚假资料</span><span style="font-family:仿宋; font-size:12pt">或冒充</span><span style="font-family:仿宋; font-size:12pt">他人或联合他人不以真实消费为目的的申请</span><span style="font-family:仿宋; font-size:12pt">“智分期”服务;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(4)用户提交分期申请后,乙方无法向用户提供相应产品或服务;或因</span><span style="font-family:仿宋; font-size:12pt">乙方商品、发布的信息或提供的售后服务问题引发</span><span style="font-family:仿宋; font-size:12pt">用户大量投诉并影响三方合作的;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(5)乙方故意销售假冒伪劣、有毒有害商品或构造虚假订单或虚假资料或冒充他人或联合他人不以真实消费为目的申请“智分期”服务或利用甲方提供的服务进行不正当交易的。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、违约方发生违约事项时,守约方有权视具体情况分别或同时采取以下措施:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(1)要求违约方在一定时限内停止违约行为,消除相关影响。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(2)要求违约方就违约事项的背景、原因、过程进行详细说明,并对后续按约定履行义务进行承诺和保证。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(3)要求违约方就违约行为所导致的守约方实际经济损失、产生的额外费用进行赔偿。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(4)要求违约方妥善解决其违约行为而给守约方带来的诉讼、纠纷、索赔、处罚或其他不利影响。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(5)守约方认为有必要的其他合理措施。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">任何一方发生前述违约事件或因中国人民银行、公安机关、政府机关或司法机关等国家机关向守约方发出要求的,守约方有权要求违约方限期整改其违约行为,给守约方造成损失的,有权要求违约方承担赔偿责任,同时守约方有权采取暂停、中止或终止合作或其他违约救济措施而无需承担任何违约责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、除非发生不可抗力之情形,否则违约方须在违约事项发生后承担违约责任。违约方经催告后拒不纠正违约行为或拒绝承担违约责任的,守约方有权中止或终止协议。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">、任何一方未行使其权利或未就违约方的违约行为采取任何行动,不应被视为对权利的放弃或对追究违约责任或义务的放弃。任何一方放弃针对违约方的任何权利或放弃追究违约方的任何责任,不应被视为放弃对违约方的任何其他权利或任何其他任何责任的追究,所有放弃均应以书面形式做出。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第十</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">条 </span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">知识产权及保密条款</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、因本协议约定事项进行的合作如涉及甲乙丙三方知识产权研发、归属的,原则上相关知识产权归属于研发主体。涉及合作开发的,由</span><span style="font-family:仿宋; font-size:12pt">双方</span><span style="font-family:仿宋; font-size:12pt">另行签署协议约定,并以该协议的约定为准。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、甲乙丙三方确认,“智分期”所</span><span style="font-family:仿宋; font-size:12pt">涉及</span><span style="font-family:仿宋; font-size:12pt">相关的知识产权归甲方所有,包括 “</span><span style="font-family:仿宋; font-size:12pt">智</span><span style="font-family:仿宋; font-size:12pt">分期”著作权、商标权以及甲方受乙方委托为其设计的产品页面等</span><span style="font-family:仿宋; font-size:12pt">均</span><span style="font-family:仿宋; font-size:12pt">由</span><span style="font-family:仿宋; font-size:12pt">甲方</span><span style="font-family:仿宋; font-size:12pt">和/或甲方关联方享有,</span><span style="font-family:仿宋; font-size:12pt">未经甲方书面同意,乙方不得将其用于本次合作以外的目的或授权他人使用</span><span style="font-family:仿宋; font-size:12pt">。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、在履行本协议期间,本协议项下各方在使用其他方授权的企业名称、商标、商号、品牌、域名和网站时,应当仅限于为各方在本协议中约定的内容服务,不得用于与“智分期”业务无关的其他业务内容或经营目的。各方在其自身宣传材料、名片、市场宣传、网站建设以及其他任何方面使用其他方授权的名称、域名和网站,都必须事先书面通知其他方,并获得其他方的许可后方可进行,否则一方有权要求违约方承担由此而产生的一切法律责任,并赔偿因此造成的直接损失。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、甲乙丙三方应对其在履行本协议过程中获悉的任何有关其他方及其他客户的非公开信息和资料给予保密,未经其他方事先书面同意,不得用于本协议之外的目的,不得向任何第三方披露或以其他方式予以公开,但相关法律法规及规范性文件另有规定或监管部门另有要求的,以及第三方专业服务机构(法律、财务、审计等)和资金服务机构的合理要求除外。如因任何一方原因造成前述信息揭露且无法消除影响的,过错方应承担一切违约责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5、甲乙丙三方承认在合作过程中获得的信息的敏感性及保密性,并承诺对该等信息进行保密。保密信息包括但不限于:①本合作本身,包括合作各方的名称及本协议的条款和内容;②一方因本协议协商和履行而获得的另一方的任何信息,包括但不限于交易数据、信用卡持卡人或乙方用户的信息和资料、另一方的财务状况、商业活动计划和安排、市场调查结果、数据模型、数据分析报告、所有关于履行本合作项目所产生的相关数据;③任何其它因本协议而获悉的另一方的任何信息。一方同意在未取得另一方事先书面同意前不得以口头或书面的方式向任何第三方披露任何该等保密信息,除非该等披露是法律或法定程序所强制要求的。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6、甲乙丙三方应保证其所有雇员、佣工、代理人和承包商对上述保密信息保密。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第十一条  协议的生效、解除与终止</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、本协议自甲乙丙三方法定</span><span style="font-family:仿宋; font-size:12pt">代表人</span><span style="font-family:仿宋; font-size:12pt">/授权</span><span style="font-family:仿宋; font-size:12pt">签约人签字并</span><span style="font-family:仿宋; font-size:12pt">加盖各自公章或协议章后生效,有效期为自本协议生效之日起</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline"> </span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">壹</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline"> </span><span style="font-family:仿宋; font-size:12pt">年,</span><span style="font-family:仿宋; font-size:12pt">有效期届满,</span><span style="font-family:仿宋; font-size:12pt">双</span><span style="font-family:仿宋; font-size:12pt">方如需继续开展合作的,应另行</span><span style="font-family:仿宋; font-size:12pt">签署</span><span style="font-family:仿宋; font-size:12pt">书面协议</span><span style="font-family:仿宋; font-size:12pt">,</span><span style="font-family:仿宋; font-size:12pt">本协议</span><span style="font-family:仿宋; font-size:12pt">的</span><span style="font-family:仿宋; font-size:12pt">有效期满/终止/</span><span style="font-family:仿宋; font-size:12pt">中止</span><span style="font-family:仿宋; font-size:12pt">均不影响</span><span style="font-family:仿宋; font-size:12pt">甲乙双</span><span style="font-family:仿宋; font-size:12pt">方</span><span style="font-family:仿宋; font-size:12pt">在本协议有效期间</span><span style="font-family:仿宋; font-size:12pt">对</span><span style="font-family:仿宋; font-size:12pt">用</span><span style="font-family:仿宋; font-size:12pt">户所承诺服务的履行,</span><span style="font-family:仿宋; font-size:12pt">同时本协议有效期间双方已产生的权利义务</span><span style="font-family:仿宋; font-size:12pt">也不受影响。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、本协议对本协议各方的承继人或受让人具有同等约束力。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、除本协议另有约定外,如发生以下情形之一的,甲方有权单方面解除本协议,本协议自甲方发出的解除通知到达本协议其他方之日起解除:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(1)因不可抗力,或因法律、法规或国家政策调整或监管机关、司法部门等国家机关要求终止本协议,从而导致本协议无法继续履行;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(2)因甲方发生重组、股权调整、经营决策调整导致甲方无法继续履行本协议;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(3)因乙方严重违约导致本协议无法继续履行;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">本协议因前款第(1)、(2)项情形解除的,本协议双方互不负任何违约责任;本协议因前款第(3)项情形解除的,</span><span style="font-family:仿宋; font-size:12pt">甲方</span><span style="font-family:仿宋; font-size:12pt">有权要求乙方承担违约责任,如造成损失或其他不利影响的,</span><span style="font-family:仿宋; font-size:12pt">甲方</span><span style="font-family:仿宋; font-size:12pt">有权要求乙方承担赔偿责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第十二条   通知与送达</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、本协议项下任一方做出或者发出的任何通知、要求或者信函应以书面形式(包含电子邮件等方式)交付或者发送至另一方,相关方联系方式如下:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(</span><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">)甲方接收通知方式:邮箱</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">yumengying@finlean.com</span><span style="font-family:仿宋; font-size:12pt">  </span><span style="font-family:仿宋; font-size:12pt">电话</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">18828020724</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">甲方接收通知地址</span><span style="font-family:仿宋; font-size:12pt">:</span><span style="font-family:仿宋; font-size:12pt">四川省</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">成都市高新区香年广场T3-4301</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(</span><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">)乙方接收通知方式:邮箱</span><span style="font-family:仿宋; font-size:12pt">  </span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时填写的负责人邮箱</span><span style="font-family:仿宋; font-size:12pt">  </span><span style="font-family:仿宋; font-size:12pt">电话</span><span style="font-family:仿宋; font-size:12pt">    </span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">负责人手机号</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">乙方接收通知地址:</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时选择及填写的地址</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(</span><span style="font-family:仿宋; font-size:12pt">3</span><span style="font-family:仿宋; font-size:12pt">)丙方接收通知方式:邮箱</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">yixuanhong@finlean.com</span><span style="font-family:仿宋; font-size:12pt">  </span><span style="font-family:仿宋; font-size:12pt">电话</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">18108214026</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">丙方接收通知地址:四川省</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">成都市高新区香年广场T3-4301</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">甲乙丙三方合作期内,如联系方式发生变更的,变更方应当提前十个工作日以电子邮件或邮寄等书面方式通知对方。未及时书面通知而造成的任何损失,由违约方承担相应责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、任何通知、要求或其它文件都应当以书面形式做出,如通过传真或邮件等有线传输方式发送的,发出方传送系统确认传送成功之时,视为送达。如通过邮资预付的挂号邮递或快递的方式发送,在发出后的第三日视为已经送达。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、任何一方没有向对方预留或补留通讯地址、或预留的通讯地址有误的、或在邮寄途中发生延误或丢失的,对方不承担任何延误或未送达的责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、本协议有效期间,如乙方发生重大产权转让、体制变更、申请停业整顿、申请解散、申请破产等足以影响甲方权利实现的行为时,乙方保证提前30个工作日通知甲方。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第十三条</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold"> </span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">争议的解决</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">、</span><span style="font-family:仿宋; font-size:12pt">甲乙丙三方确认,本协议的签署、生效和履行以不违反中国的法律法规为前提。如本协议中任一条款违反适用的法律法规,则该条款将被视为无效,但该无效条款并不影响本协议其他条款的效力。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、</span><span style="font-family:仿宋; font-size:12pt">因本协议引发的或与本协议有关的争议,由双</span><span style="font-family:仿宋; font-size:12pt">方</span><span style="font-family:仿宋; font-size:12pt">协商解决,也可由有关部门调解;协商或调解不成的,任何一方可以将争议提交北京仲裁委员会申请仲裁,甲乙丙三方同意根据申请仲裁时北京仲裁委员会现行有效的仲裁规则进行仲裁。仲裁裁决是终局的,对甲乙丙三方具有约束力,双方特此不可撤销地放弃向可能对争议事项有管辖权的任何法院提起诉讼的权利。仲裁费用和胜诉方因办理案件所支出的合理费用由败诉方承担。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第十四条 其他条款</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、除前述第五条相关条款约定以外,乙方承诺在本协议签署之日起的一年内,乙方不会就信用卡分期以及类似智分期业务模式的任何其他机构开展基于信用卡分期合作。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、甲乙丙三方均系合法成立并有效存续的公司,其拥有充分的权力和权利签署并履行本协议;各方均已经充分知悉、理解本协议的全部条款内容,并且已采取一切适当和必要的公司行为,授权签署和履行本协议,签署和履行本协议是各方真实意思表示,该等签署是真实、合法、有效的。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、本协议附件为本协议不可分割的组成部分,与本协议具有同等法律效力。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、本协议的任何一方不得就本协议的内容做出单方面修改,本协议中未尽事宜由甲乙丙三方协商,需采用书面形式签订补充协议,补充协议与本协议具有同等法律效力。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5、本协议正文、本协议附件和本协议之补充协议(如有)共同组成本协议之完整内容。甲乙丙三方认可并同意在就“智分期”业务进行合作时,除遵守本协议正文的相关约定外,还应遵守本协议附件和本协议之补充协议(如有)的约定。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6、本协议一式叁份,甲乙丙三方</span><span style="font-family:仿宋; font-size:12pt">各</span><span style="font-family:仿宋; font-size:12pt">执壹份,具有同等法律效力。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">附件列表</span><span style="font-family:仿宋; font-size:12pt">:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">附件一:智分期服务费费率标准</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">附件二:分期交易确认单模板</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">附件</span><span style="font-family:仿宋; font-size:12pt">三:</span><span style="font-family:仿宋; font-size:12pt">《分期应收账款转让通知书》</span></p><p style="margin:0pt"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt; font-style:italic"> </span><span style="font-family:仿宋; font-size:12pt; font-style:italic">---------------------</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">以下无正文,</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">签</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">字页</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">随附</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">-</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">-------------------</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">-</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">甲方(盖章):</span><span style="font-family:仿宋; font-size:12pt">深圳前海彩蜂商业保理有限公司</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">法定</span><span style="font-family:仿宋; font-size:12pt">代表人</span><span style="font-family:仿宋; font-size:12pt">/授权</span><span style="font-family:仿宋; font-size:12pt">签约人</span><span style="font-family:仿宋; font-size:12pt">签字:</span><a name="Text41"><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">余雁南</span><span style="font-family:仿宋; font-size:12pt">      </span></a></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:300pt; widows:0"><span style="-aw-bookmark-end:Text41"></span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期年</span><span style="font-family:仿宋; font-size:12pt">年</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期月</span><span style="font-family:仿宋; font-size:12pt">月</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期日</span><span style="font-family:仿宋; font-size:12pt">日   </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">乙方(盖章):</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">法定</span><span style="font-family:仿宋; font-size:12pt">代表人</span><span style="font-family:仿宋; font-size:12pt">/授权</span><span style="font-family:仿宋; font-size:12pt">签约人</span><span style="font-family:仿宋; font-size:12pt">签字:</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">法人姓名</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:288pt; widows:0"><span style="font-family:仿宋; font-size:12pt">  </span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期年</span><span style="font-family:仿宋; font-size:12pt">年</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期月</span><span style="font-family:仿宋; font-size:12pt">月</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期日</span><span style="font-family:仿宋; font-size:12pt">日   </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">丙方(盖章):</span><span style="font-family:仿宋; font-size:12pt">成都唯知信息科技有限公司</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">法定</span><span style="font-family:仿宋; font-size:12pt">代表人</span><span style="font-family:仿宋; font-size:12pt">/授权</span><span style="font-family:仿宋; font-size:12pt">签约人</span><span style="font-family:仿宋; font-size:12pt">签字:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">赵育梓</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">             </span><span style="font-family:仿宋; font-size:12pt">               </span><span style="font-family:仿宋; font-size:12pt">     </span><span style="font-family:仿宋; font-size:12pt">                 </span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期年</span><span style="font-family:仿宋; font-size:12pt">年</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期月</span><span style="font-family:仿宋; font-size:12pt">月</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期日</span><span style="font-family:仿宋; font-size:12pt">日   </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">附件</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">: 分期</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">应收账款转让通知书</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">分期应收账款转让通知书</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">(致用户声明)</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">【此处填写用户名称】(下称“贵方”):</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">贵方通过智分期服务</span><span style="font-family:仿宋; font-size:12pt">向</span><span style="font-family:仿宋; font-size:12pt">乙方购买商品而与乙方形成了买卖关系及保理公司自【乙方】处受让【乙方】在该买卖约定项下对贵方享有的应收账款而与贵方形成了交易关系及在此基础上形成了应收账款,现就应收账款项下我方对贵方享有的应收账款转让的事宜我方向贵方通知如下:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、我方与保理公司签署了智分期业务合作协议,我方将我方对贵方在商务协议项下享有的应收账款(截至保理公司支付转让对价之日)及自该日起(含该日)产生的全部逾期利息、违约金、赔偿金、补偿金及任何其他应付款项等及任何从权利包括但不限于抵押权、质押权、保证金等担保权利以及为实现应收账款而享有的任何实体性权利及程序性权利等,全部转让给保理公司。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、自本通知书签署之日起,保理公司作为新债权人有权要求贵方根据上述商务协议向保理公司清偿本通知书列明的应收账款及履行商务协议项下的其他义务。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">贵方应自收到本通知书之日起,将上述商务协议项下的全部应付款项于其到期之日支付至保理公司与贵方约定的指定账户或自本通知书签署之日起保理公司另行通知的其他账户。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">贵方仅得通过上述收款账户以电汇货币方式偿付本通知书列明的应收账款,除非保理公司另行书面同意或通知,我方无权通知贵方更改上述还款账户信息,贵方亦不得向保理公司指定账户外的其他任何账户或以其他方式偿付应收账款,否则视为贵方未能偿付相应债务,贵方仍应按保理公司的要求再行偿付。由此产生的一切损失、责任</span><span style="font-family:仿宋; font-size:12pt">等,由贵方自行承担。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、为避免歧义,我方在此确认:我方在商品服务项下的任何义务和责任均不转让给保理公司,仍由我方承担。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、本通知书一式三份,贵我双方各执一份,另一份由我方提交保理公司备存。</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">                      </span><span style="font-family:仿宋; font-size:12pt">         </span><span style="font-family:仿宋; font-size:12pt">                  </span><span style="font-family:仿宋; font-size:12pt">乙方</span><span style="font-family:仿宋; font-size:12pt">法人签字</span><span style="font-family:仿宋; font-size:12pt">(公章):</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">法人姓名</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt 36pt 0pt 0pt; orphans:0; text-align:center; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">                   </span><span style="font-family:仿宋; font-size:12pt">                          </span><span style="font-family:仿宋; font-size:12pt"> </span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期年</span><span style="font-family:仿宋; font-size:12pt">年</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期月</span><span style="font-family:仿宋; font-size:12pt">月</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期日</span><span style="font-family:仿宋; font-size:12pt">日</span><span style="font-family:仿宋; font-size:12pt">  </span><span style="font-family:仿宋; font-size:12pt"> </span><span style="font-family:仿宋; font-size:12pt"> </span></p></div>'
\ No newline at end of file
diff --git a/src/utils/config.js b/src/utils/config.js
new file mode 100644
index 0000000..31fba99
--- /dev/null
+++ b/src/utils/config.js
@@ -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};
diff --git a/src/utils/console.js b/src/utils/console.js
new file mode 100644
index 0000000..162fa2a
--- /dev/null
+++ b/src/utils/console.js
@@ -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;
+    }
+}
\ No newline at end of file
diff --git a/src/utils/createUserProtocol.js b/src/utils/createUserProtocol.js
new file mode 100644
index 0000000..9e849b9
--- /dev/null
+++ b/src/utils/createUserProtocol.js
@@ -0,0 +1,27 @@
+// import agreement from '../../static/agreement2';
+
+
+export default function(info) {
+    //不用引入areement2,因为在index.html里面已经导入了
+    let agreement = agreement2;
+    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;
+}
diff --git a/src/utils/date.js b/src/utils/date.js
new file mode 100644
index 0000000..4ec3b2d
--- /dev/null
+++ b/src/utils/date.js
@@ -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;
+    }
+}
diff --git a/src/utils/dateformat.js b/src/utils/dateformat.js
new file mode 100644
index 0000000..d812901
--- /dev/null
+++ b/src/utils/dateformat.js
@@ -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);
diff --git a/src/utils/deviceInfo.js b/src/utils/deviceInfo.js
new file mode 100644
index 0000000..6638cae
--- /dev/null
+++ b/src/utils/deviceInfo.js
@@ -0,0 +1,88 @@
+/**
+ * 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'
+        //    }
+    }
+};
diff --git a/src/utils/filters.js b/src/utils/filters.js
new file mode 100644
index 0000000..1d7ca24
--- /dev/null
+++ b/src/utils/filters.js
@@ -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);        
+        })
+    }
+}
\ No newline at end of file
diff --git a/src/utils/formCheckAndComb.js b/src/utils/formCheckAndComb.js
new file mode 100644
index 0000000..4b1a35b
--- /dev/null
+++ b/src/utils/formCheckAndComb.js
@@ -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
+};
diff --git a/src/utils/formValidator.js b/src/utils/formValidator.js
new file mode 100644
index 0000000..0663627
--- /dev/null
+++ b/src/utils/formValidator.js
@@ -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;
+    }
+}
diff --git a/src/utils/index.js b/src/utils/index.js
new file mode 100644
index 0000000..8ebb489
--- /dev/null
+++ b/src/utils/index.js
@@ -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;
+}
\ No newline at end of file
diff --git a/src/utils/jsBridge.js b/src/utils/jsBridge.js
new file mode 100644
index 0000000..ccda68d
--- /dev/null
+++ b/src/utils/jsBridge.js
@@ -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);
+    //       }
+    //     })
+    //   })
+    // }
+};
diff --git a/src/utils/pageBackByAndroid.js b/src/utils/pageBackByAndroid.js
new file mode 100644
index 0000000..e8768bb
--- /dev/null
+++ b/src/utils/pageBackByAndroid.js
@@ -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);
+        };
+    }
+};
diff --git a/src/utils/validator.js b/src/utils/validator.js
new file mode 100644
index 0000000..37af773
--- /dev/null
+++ b/src/utils/validator.js
@@ -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([35789][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/;
+        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;
+    }
+};
diff --git a/src/utils/wechat.js b/src/utils/wechat.js
new file mode 100644
index 0000000..2f76029
--- /dev/null
+++ b/src/utils/wechat.js
@@ -0,0 +1,30 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2020-05-07 18:35:25
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-10 11:38:44
+ * @Description: 微信授权
+ */
+
+/**
+ * 微信授权
+ * @param appid 公众号的唯一标识
+ * @param redirect_uri 授权后重定向的回调链接地址(登录后授权了最好返回到登录跳转的主页面), 请使用 urlEncode 对链接进行处理,用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。
+ * @param scope 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )
+ * @param state 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
+ */
+    export class  GoWeChat {
+        constructor(appid,redirect_uri){
+            this.appid = appid
+            this.redirect_uri = redirect_uri
+        }
+        gocontract(){
+            // 拼接微信授权页面链接
+            var url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.appid}&redirect_uri=${this.redirect_uri}&response_type=code&scope=snsapi_base&state=1#wechat_redirect`
+             // 判断用户是否已经授权
+            if(window.localStorage.sib_wx_openId == 'undefined' || !localStorage.sib_wx_openId){
+                window.location.href = url
+                // 在回调页面去获取到授权返回的code,并且传递给后端
+            }
+        }
+    }
diff --git a/src/views/JSX_Demo.vue b/src/views/JSX_Demo.vue
new file mode 100644
index 0000000..f5699af
--- /dev/null
+++ b/src/views/JSX_Demo.vue
@@ -0,0 +1,67 @@
+<script>
+import {mapState} from 'vuex';
+import Test from '@/components/Test';
+export default {
+    data() {
+        return {
+            com:'Test',
+            isShow:false,
+            arrs:[
+                <Test a='aaa'></Test>,
+                <Test a='bbb'></Test>
+            ],
+            dom:<h1 onClick={this.click}>点我 改变test dom</h1>
+        }
+    },
+    computed:{
+        ...mapState(["message"])
+    },
+    components:{
+        Test
+    },
+    methods:{
+        click(){
+            this.dom = <h3>我变成了 h3~</h3>
+        },
+        test(){
+            return new Promise((resolve,reject)=>{
+                setTimeout(() => {
+                    resolve('test');
+                }, 2000);
+            })
+        },
+        chengeArrs(){
+            setTimeout(() => {
+                this.isShow = true;
+                this.arrs.reverse();
+                console.log(11)
+                // [].reverse()
+            }, 500);
+        }
+    },
+    created(){
+        this.chengeArrs();
+    },
+    render(){
+        if(this.isShow){
+            return (
+                <div>
+                    {this.arrs}
+                    {this.dom}
+                    <h2 class="test1">{this.message}</h2>
+                </div>
+            )
+        }else{
+            return
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped>
+.test1{
+    color: @c-white;
+    padding: 15px;
+    background-color: @c-pink;
+}
+</style>
diff --git a/src/views/appLiandeng/changeMer.vue b/src/views/appLiandeng/changeMer.vue
new file mode 100644
index 0000000..4d940d8
--- /dev/null
+++ b/src/views/appLiandeng/changeMer.vue
@@ -0,0 +1,118 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-12-29 09:53:52
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-05 17:53:43
+ * @Description: App切换商户
+-->
+<template>
+  <div class="change-mer">
+    <van-nav-bar
+      left-arrow
+      left-text="返回"
+      @click-left="onClickLeft"
+    >
+      <div slot="title">
+        <h4>切换商户</h4>
+      </div>
+    </van-nav-bar>
+    <div class="mer-list">
+      <ul class="list">
+        <van-radio-group v-model="radio">
+          <li class="item" v-for="item in merList" :key="item.id">
+            <div class="left">
+              <p>{{ item.orgName }}</p>
+              <p>创建时间:{{ item.creTime | timeformat('yyyy-MM-dd')}}</p>
+            </div>
+            <div class="right">
+              <van-radio :name="item.id"></van-radio>
+            </div>
+          </li>
+        </van-radio-group>
+      </ul>
+    </div>
+    <div class="btn-box">
+        <button class="btn" @click="changeMer">确认切换</button>
+    </div>
+  </div>
+</template>
+<script>
+import { mapMutations } from 'vuex';
+export default {
+  data() {
+    return {
+      merList: [],
+      radio: "",
+    };
+  },
+  created() {
+    this.radio = this.$store.state.userinfo.id
+    this.$api.getAgencyMerList().then(res=>{
+      this.merList = res.body.merchantList
+    })
+  },
+  methods: {
+    ...mapMutations(['SET_USER_INFO']),
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    changeMer(){
+      this.$api.getPowerInfo(this.radio).then(res=>{
+        this.SET_USER_INFO(res.body);
+        this.$router.push('/app/home')
+      })
+    }
+  },
+};
+</script>
+<style lang="less" scoped>
+.change-mer {
+  & {
+    min-height: 100vh;
+    background: #fafafa;
+  }
+  .mer-list {
+    width: 100%;
+    height: 80vh;
+    box-sizing: border-box;
+    padding: 10px 15px;
+    overflow: scroll;
+  }
+  .mer-list::-webkit-scrollbar {display:none}
+  .item {
+    height: 60px;
+    background: #fff;
+    width: 100%;
+    padding: 0 10px;
+    box-sizing: border-box;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-bottom: 10px;
+  }
+  .left > p:nth-of-type(1) {
+    font-size: 16px;
+    font-weight: 550;
+    margin-bottom: 8px;
+  }
+  .left > p:nth-of-type(2) {
+   font-size: 12px;
+   color: #999;
+  }
+  .btn-box{
+      position: fixed;
+      bottom: 20px;
+      text-align: center;
+      width: 100%;
+      .btn{
+        width: 320px;
+        height: 44px;
+        background: #896EDB;
+        border-radius: 22px;
+        outline: none;
+        border: 0;
+        color:#fff;
+      }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/appLiandeng/choseVersion.vue b/src/views/appLiandeng/choseVersion.vue
new file mode 100644
index 0000000..454e88b
--- /dev/null
+++ b/src/views/appLiandeng/choseVersion.vue
@@ -0,0 +1,147 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-12-29 11:35:46
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-05 17:49:40
+ * @Description: 
+-->
+<template>
+    <div class="chose-mer">
+        <van-nav-bar
+          left-arrow
+          left-text="返回"
+          @click-left="onClickLeft"
+        >
+            <div slot="title">
+                <h4>选择通道</h4>
+            </div>
+        </van-nav-bar>
+        <div class="proudct-box">
+            <div class="list-box" v-for="(e,i) in list" :key="i" @click="goNext(e)" v-show="e.zfbVersion !== 5"> <!-- v-show="e.zfbVersion !== 1 && e.zfbVersion !== 4" -->
+                <img :src="e.icon" alt="">
+                <p>{{e.typeName}}</p>
+                <div class="tip-box" :style="e.openStatus==0?{background:'#F2F2F2'}:e.openStatus==1?{background:'#FFF5D9'}:e.openStatus==2?{background:'#E3FAEF'}:e.openStatus==3?{background:'#FCF0F0'}:''">
+                    <p v-if="e.openStatus==2" style="color:#19BE6B;">已开通</p>
+                    <p v-if="e.openStatus==1" style="color:#FFC421;">开通中</p>
+                    <p v-if="e.openStatus==3" style="color:#FF6666;">未通过</p>
+                    <p v-if="e.openStatus==0" style="color:#999999;">未开通</p>
+                </div>
+                
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            list:[],
+        }
+    },
+    computed:{
+        prodId(){
+            return Number(this.$route.query.prodId)
+        }
+    },
+    mounted(){
+        this.$api.prodZfbVersion({prodId:this.prodId}).then(res=>{
+            this.list = res.body
+        })
+    },
+    methods:{
+        onClickLeft(){
+            this.$router.go(-1)
+        },
+        goNext(e){
+            let path,obj={};
+            obj.title = e.typeName;
+            obj.zfbVersion = e.zfbVersion;
+            obj.isApp = 1;
+            if(e.zfbVersion == 5){
+                switch(e.openStatus){
+                    case 0:
+                        path='/tonglian/startOpen';
+                        break;
+                    case 1:
+                        path="/tonglian/open-result";
+                        break;
+                    case 2:
+                        this.$route.query.prodId == 30000003?path="/app/zfbVersionDetail":path="/app/shskVersionDetail";
+                        break;
+                }
+            }else{
+                switch(e.openStatus){
+                    case 0:
+                        path='/huabei/open';
+                        break;
+                    case 1:
+                        path="/huabei/open-result";
+                        break;
+                    case 2:
+                        this.$route.query.prodId == 30000003?path="/app/zfbVersionDetail":path="/app/shskVersionDetail";
+                        break;
+                }
+            }
+
+            
+            this.$router.push({
+                path:path,
+                query:{
+                    ...obj,
+                    ...this.$route.query
+                }
+            })
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+.chose-mer{
+    &{
+        min-height: 100vh;
+        background: #fafafa;
+    }
+    .proudct-box{
+            width: 359px;
+            margin: auto;
+            margin-top: 10px;
+            box-sizing: border-box;
+            padding:16px 0;
+            // display: flex;
+            // justify-items: space-between;
+            background: #fff;
+            .list-box{
+                display: inline-block;
+                position: relative;
+                width: 115px;
+                height: 90px;
+                box-shadow:0px 0px 15px 0px rgba(66,61,93,0.08);
+                border-radius:8px;
+                margin: 16px 31px 16px 31px;
+                text-align: center;
+                box-sizing: border-box;
+                padding: 14px 0 18px 0;
+                img{
+                    width: 42px;
+                    height: 42px;
+                }
+                p{
+                    font-size: 13px;
+                    color: #333;
+                }
+                .tip-box{
+                    position: absolute;
+                    width:45px;
+                    height:16px;
+                    line-height: 16px;
+                    border-radius:8px 0px 0px 8px;
+                    top: 7px;
+                    right: 0;
+                    p{
+                        font-size: 10px;
+                    }
+                }
+            }
+        }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/appLiandeng/home.vue b/src/views/appLiandeng/home.vue
new file mode 100644
index 0000000..055e01d
--- /dev/null
+++ b/src/views/appLiandeng/home.vue
@@ -0,0 +1,208 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-12-29 09:42:04
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-08 11:17:00
+ * @Description:APP联登主页 
+-->
+<template>
+  <div class="APP-home">
+    <van-nav-bar
+      right-text="切换商户"
+      @click-right="onClickRight"
+    >
+      <div slot="title">
+        <h4 class="title-span">{{$store.state.userinfo.orgName}}</h4>
+      </div>
+    </van-nav-bar>
+    <div class="producat">
+      <ul class="list">
+        <li
+          class="item"
+          v-for="item in list"
+          :key="item.prodId"
+          @click="goNext(item)"
+        >
+          <img :src="item.icon" alt="商品图" v-if="item.prodId === 30000008"/>
+          <i v-else class="iconfont iconhuabei"></i>
+          <p>{{ item.typeName }}</p>
+        </li>
+      </ul>
+      <div class="no-data" v-if="list.length === 0">
+        <div>
+          <img class="no-data-pic" src="../../assets/imgs/nodata.png" alt="暂无产品">
+          <p>暂无产品</p>
+        </div>
+      </div>
+    </div>
+    <button class="btn" @click="goBack" v-show="hasurl">返回首页</button>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      proList: [],
+      shskHasOpen:false,
+      url:''
+    };
+  },
+  computed:{
+    list(){
+      return this.proList.map(item=>{
+        if(item.prodId == 30000003){
+          item.typeName = '花呗分期'
+        }
+        return item
+      })
+    },
+    hasurl(){
+      console.log(typeof this.url)
+      // if(this.url != 'undefined' && this.url){
+      if(typeof this.url == 'string' &&  this.url != 'null'){
+
+        return true;
+      }else{
+        return false;
+      }
+    }
+  },
+  created(){
+    this.url = sessionStorage.backUrl;
+  },
+  mounted(){
+    this.$api.prodManagerInit().then(res=>{
+      res.body.prodTypeRespVoList2.forEach(item=>{
+        if (item.prodId == 30000003 || item.prodId == 30000008 ){
+          this.proList.push(item) 
+        }
+      })
+    })
+  },
+  methods: {
+    onClickRight() {
+      this.$router.push({
+        path: "/app/changeMer"
+      });
+    },
+    goNext(item) {
+      if(item.prodId == 30000003){
+        this.$router.push({
+          path: "/app/choseVersion",
+          query: {
+            prodId: item.prodId,
+            typeId: item.typeId
+          },
+        });
+      }else{
+        this.$api.prodZfbVersion({prodId:item.prodId}).then(res=>{
+          let list = res.body;
+          for(let i = 0; i < list.length; i++){
+            if(list[i].zfbVersion == 3 && list[i].openStatus == 2){
+              this.$router.push({
+                path:'/app/shskVersionDetail',
+                query:{
+                  prodId: item.prodId,
+                  typeId: item.typeId,
+                  isApp: 1,
+                  zfbVersion: 3,
+                  title: '商户收款'
+                }
+              })
+            }else if(list[i].zfbVersion == 3 && list[i].openStatus == 0){
+              this.$router.push({
+                path:'/huabei/open',
+                query:{
+                  prodId: item.prodId,
+                  typeId: item.typeId,
+                  isApp: 1,
+                  zfbVersion: 3,
+                  title: '商户收款'
+                }
+              })
+            }else if(list[i].zfbVersion == 3 && list[i].openStatus == 1){
+              this.$router.push({
+                path:'/huabei/open-result',
+                query:{
+                  prodId: item.prodId,
+                  typeId: item.typeId,
+                  isApp: 1,
+                  zfbVersion: 3,
+                  title: '商户收款'
+                }
+              })
+            }
+          }
+        })
+      }
+    },
+    goBack(){
+      location.href = sessionStorage.backUrl
+    }
+  },
+};
+</script>
+<style lang="less" scoped>
+.APP-home {
+  & {
+    min-height: 100vh;
+    background: #fafafa;
+  }
+  .title-span{
+    display: inline-block;
+    width: 200px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .producat {
+    width: 340px;
+    margin: auto;
+    margin-top: 10px;
+    border-radius: 15px;
+    background: #fff;
+    padding: 20px 0;
+  }
+  .list {
+    display: flex;
+    justify-content: space-between;
+  }
+  .item {
+    text-align: center;
+    width: 49%;
+    img {
+      width: 60px;
+      height: 60px;
+    }
+  }
+  .btn {
+    width: 320px;
+    height: 44px;
+    background: #896edb;
+    border-radius: 22px;
+    outline: none;
+    border: 0;
+    position: fixed;
+    bottom: 30px;
+    left: 50%;
+    transform: translateX(-50%);
+    color: #fff;
+  }
+  .no-data{
+    display: flex;
+    justify-content: center;
+    div{
+      text-align: center;
+    }
+  }
+  .no-data-pic{
+    width: 80px;
+    height: 80px;
+    margin-bottom: 10px;
+  }
+  .iconhuabei{
+    font-size: 55px;
+    color: rgb(16, 143, 234);
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/appLiandeng/login.vue b/src/views/appLiandeng/login.vue
new file mode 100644
index 0000000..33aeafd
--- /dev/null
+++ b/src/views/appLiandeng/login.vue
@@ -0,0 +1,7 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2021-01-04 09:45:06
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-04 09:45:06
+ * @Description: 
+-->
diff --git a/src/views/appLiandeng/opening/fillingInfo.vue b/src/views/appLiandeng/opening/fillingInfo.vue
new file mode 100644
index 0000000..2d9ac02
--- /dev/null
+++ b/src/views/appLiandeng/opening/fillingInfo.vue
@@ -0,0 +1,7 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-12-29 09:57:20
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-29 09:57:21
+ * @Description: 
+-->
diff --git a/src/views/appLiandeng/opening/openResult.vue b/src/views/appLiandeng/opening/openResult.vue
new file mode 100644
index 0000000..2196ebc
--- /dev/null
+++ b/src/views/appLiandeng/opening/openResult.vue
@@ -0,0 +1,7 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-12-29 09:58:21
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-29 09:58:22
+ * @Description: 
+-->
diff --git a/src/views/appLiandeng/opening/pictureUpload.vue b/src/views/appLiandeng/opening/pictureUpload.vue
new file mode 100644
index 0000000..f2a6b05
--- /dev/null
+++ b/src/views/appLiandeng/opening/pictureUpload.vue
@@ -0,0 +1,7 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-12-29 09:58:08
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-29 09:58:09
+ * @Description: 
+-->
diff --git a/src/views/appLiandeng/opening/startOpen.vue b/src/views/appLiandeng/opening/startOpen.vue
new file mode 100644
index 0000000..8a7fa98
--- /dev/null
+++ b/src/views/appLiandeng/opening/startOpen.vue
@@ -0,0 +1,7 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-12-29 09:57:09
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-29 09:57:09
+ * @Description: 
+-->
diff --git a/src/views/appLiandeng/shskVersionDetail.vue b/src/views/appLiandeng/shskVersionDetail.vue
new file mode 100644
index 0000000..127b550
--- /dev/null
+++ b/src/views/appLiandeng/shskVersionDetail.vue
@@ -0,0 +1,64 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-12-29 09:55:28
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-05 17:50:09
+ * @Description: 
+-->
+<template>
+    <div class="shsk-detail">
+        <van-nav-bar
+          left-arrow
+          fixed
+          left-text="返回"
+          @click-left="onClickLeft"
+        >
+            <div slot="title">
+                <h4>{{$route.query.title}}</h4>
+            </div>
+        </van-nav-bar>
+        <van-cell-group>
+          <van-cell v-for="item in list" :key="item.payMethodName" title="支付费率" :value="item.fee+'%'" />
+        </van-cell-group>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            list:[],
+        }
+    },
+    mounted(){
+        this.$api.merPayInfo({
+            zfbVersion:this.zfbVersion,
+            prodId:this.prodId
+        }).then(res=>{
+            this.list = res.body.payMethods || []
+        })
+    },
+    computed:{
+        typeName(){
+            return this.$route.query.name
+        },
+        zfbVersion(){
+          return Number(this.$route.query.zfbVersion)
+        },
+        prodId(){
+          return Number(this.$route.query.prodId)
+        }
+    },
+    methods:{
+        onClickLeft(){
+            this.$router.go(-1)
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+.shsk-detail{
+    min-height: 100vh;
+    background: #fafafa;
+    padding-top: 54px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/appLiandeng/zfbVersionDetail.vue b/src/views/appLiandeng/zfbVersionDetail.vue
new file mode 100644
index 0000000..8a17d2e
--- /dev/null
+++ b/src/views/appLiandeng/zfbVersionDetail.vue
@@ -0,0 +1,152 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-12-29 09:54:37
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-05 14:28:29
+ * @Description: 
+-->
+<template>
+  <div class="zfb-detail">
+    <van-nav-bar
+      left-arrow
+      left-text="返回"
+      @click-left="onClickLeft"
+    >
+      <div slot="title">
+          <h4>{{$route.query.title}}</h4>
+      </div>
+    </van-nav-bar>
+    <div class="info-box-bottom">
+      <div class="rate-title">用户付息</div>
+      <div class="item">
+        <span>期数</span>
+        <span>支付费率</span>
+        <span>分期利率</span>
+      </div>
+      <div class="item" v-for="item in list" :key="item.trem">
+        <span>{{item.termName}}</span>
+        <span>{{$route.query.zfbVersion == 6?'0.38%':'0%'}}</span>
+        <span>{{item.rate}}%</span>
+      </div>
+    </div>
+    <div class="info-box-bottom">
+      <div class="rate-title">商户贴息</div>
+      <div class="item">
+        <span>期数</span>
+        <span>支付费率</span>
+        <span>分期利率</span>
+      </div>
+      <div class="item" v-for="item in list2" :key="item.trem">
+        <span>{{item.termName}}</span>
+        <span>{{$route.query.zfbVersion == 6?'0.38%':'0%'}}</span>
+        <span>{{item.rate}}%</span>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+        list:[],
+        list2:[]
+    };
+  },
+  computed:{
+      typeName(){
+          return this.$route.query.typeName
+      },
+      zfbVersion(){
+        return Number(this.$route.query.zfbVersion)
+      },
+      prodId(){
+        return Number(this.$route.query.prodId)
+      }
+  },
+  created() {
+    this.$api.merPayInfo({
+      zfbVersion:this.zfbVersion,
+      prodId:this.prodId
+    }).then(res=>{
+      this.list = res.body.prodBaseTermInfVo || []
+    })
+    this.$api.merPayInfo({
+      zfbVersion:this.zfbVersion,
+      prodId:30000010
+    }).then(res=>{
+      this.list2 = res.body.prodBaseTermInfVo || []
+    })
+  },
+  methods:{
+    onClickLeft(){
+        this.$router.go(-1)
+    },
+  }
+};
+</script>
+<style lang="less" scoped>
+.zfb-detail {
+  & {
+    min-height: 100vh;
+    background: #fafafa;
+  }
+  .info-box-bottom {
+    margin-top: 20px;
+    box-sizing: border-box;
+    padding: 0 17px 20px 17px;
+    position: relative;
+    background-color: #fff;
+    .left-cr {
+      position: absolute;
+      width: 14px;
+      height: 14px;
+      border-radius: 50%;
+      background: #f5f5f7;
+      top: -7px;
+      left: -7px;
+    }
+    .right-cr {
+      position: absolute;
+      width: 14px;
+      height: 14px;
+      border-radius: 50%;
+      background: #f5f5f7;
+      top: -7px;
+      right: -7px;
+    }
+    .rate-title {
+      padding: 20px 0 0 0;
+      font-size: 14px;
+      color: #999999;
+      font-weight: normal;
+      line-height: 1.6;
+    }
+  }
+
+  .item {
+    width: 100%;
+    margin-top: 5px;
+    padding: 0 10px;
+    box-sizing: border-box;
+    display: inline-block;
+    background: rgba(249, 247, 252, 1);
+    height: 40px;
+    line-height: 40px;
+    display: flex;
+    justify-content: space-around;
+    span {
+      text-align: center;
+      display: inline-block;
+    }
+    span:nth-child(1) {
+      width: 15%;
+    }
+    span:nth-child(2) {
+      width: 40%;
+    }
+    span:nth-child(3) {
+      width: 45%;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/main/approve.vue b/src/views/main/approve.vue
new file mode 100644
index 0000000..b24596c
--- /dev/null
+++ b/src/views/main/approve.vue
@@ -0,0 +1,323 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-15 10:57:51
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-17 16:03:20
+ * @Description: 代理 审批页面
+ -->
+<template>
+    <div class="approve-box">
+        <div class="fixed-top">
+            <nav class="nav text-center-g flex-center-g" :style="{background:$store.state.lastColor}">
+                <div class="child flex-start-g">
+                    <div class="flex-1-g" :class="navIndex===0?'active':''" @click="setNavIndex(0)">待审批</div>
+                    <div class="flex-1-g" :class="navIndex===1?'active':''" @click="setNavIndex(1)">已通过</div>
+                    <div class="flex-1-g" :class="navIndex===2?'active':''" @click="setNavIndex(2)">已拒绝</div>
+                </div>
+            </nav>
+            <van-search class="search icons-ser" placeholder="请输入商户名称/负责人电话" v-model="searchKey" shape='round' @search="init">
+                <!--<template slot="left-icon">-->
+                    <!--<div  class="">-->
+                    <!--<svg class="icon" aria-hidden="true"  style="width:20px;height:20px;">-->
+                        <!--<use xlink:href="#iconsousuo"></use>-->
+                    <!--</svg>-->
+                    <!--</div>-->
+                <!--</template>-->
+            </van-search>
+        </div>
+
+
+        <hList @scroll="saleOrderLoad" :defScroll='10' :finished='finished' :loading="loading" height="74vh">
+            <div class="list-box">
+                <div class="mer-item flex-between-g" v-for="(item, index) in calcList" :key="index" @click="goMerDetail(item.merId)">
+                    <div class="flex-start-g">
+                        <div class="icon-box flex-center-g" :style="{background:$store.state.lastColor}">
+                            <svg class="icon" aria-hidden="true" style="width:22px;height:22px;fill:#fff;">
+                                <use xlink:href="#iconshanghuguanliliebiao"></use>
+                            </svg>
+                        </div>
+                        <div >
+                            <p class="name text-clip-g" style="max-width:170px;">{{item.merName}}</p>
+                            <p class="tel">{{ navIndex ===1 ?item.tempName : item.priMblNo}}</p>
+                        </div>
+                    </div>
+                    <!-- v-if="item.hidden!==0" -->
+                    <van-button class="btn" :style="{background:$store.state.backColor}"  @click.stop="openModal(item)">{{navIndex ===1 ? '产品管理' :'审批'}}</van-button>
+                </div>
+            </div>
+        </hList>
+        <van-popup v-model="isShow">
+            <div class="modal">
+                <div class="top flex-center-g" :style="{background:$store.state.lastColor}">
+                    <van-icon class="cross" name="cross" color='#fff' size='25px' @click="isShow = false;" />
+                    <svg class="icon" aria-hidden="true" style="width:85px;height:95px;">
+                        <use xlink:href="#iconshenpidanchuang"></use>
+                    </svg>
+                </div>
+                <footer class="footer text-center-g">
+                    <p class="name text-clip-g ">{{merName}}</p>
+                    <p class="c-text-999-g">请确认商户审批结果</p>
+                    <div>
+                        <van-button :style="{background:$store.state.backColor}" class="btn" @click="submit(3)">拒绝</van-button>
+                        <van-button :style="{background:$store.state.backColor}" class="btn btn-default" @click="submit(1)">同意</van-button>
+                    </div>
+                </footer>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import Template_detail from "../template/detail";
+    import hList from '../../components/common/h-list';
+    export default {
+        components: {Template_detail,hList},
+        data() {
+            return {
+                isShow: false,
+                navIndex: 0,
+                finished:false,
+                loading:false,
+                searchKey: '',
+                list:[
+                    {
+                        arr:[],
+                    },
+                    {
+                        arr:[],
+                    },
+                    {
+                        arr:[],
+                    },
+                ],
+                merId:'',
+                merName:''
+            }
+        },
+        computed:{
+            calcList(){
+                return this.list[this.navIndex].arr;
+            }
+        },
+        created(){
+            this.init()
+        },
+        methods: {
+            saleOrderLoad(){
+                let merId = ''
+                var myArr = this.list[this.navIndex].arr
+                
+                if(this.list[this.navIndex].arr.length >= 10){
+                    merId = myArr[myArr.length-1].merId
+                }
+                console.log(this.finished)
+                this.$api.getAuditList({
+                    auditStatus:this.navIndex,
+                    searchKey:this.searchKey,
+                    merId:merId
+                }).then((res) => {
+                    let {merList} = res.body;
+                    if(this.navIndex===0){
+                        merList = merList.map(item=>{
+                            if(item.canAudit ===0){
+                                item.hidden = 0;
+                            }
+                            return item
+                        })
+                    } 
+                    if(merList.length < 10){
+                        this.list[this.navIndex].arr = [...myArr,...merList]
+                        this.loading = false
+                        this.finished = true
+                    }else{
+                        this.list[this.navIndex].arr = [...myArr,...merList]
+                        this.loading = false
+                        this.finished = false
+                    }
+                    console.log(this.finished)
+                }).catch((err) => {
+
+                });
+            },
+            //跳转到商户详情
+            goMerDetail(merId){
+                this.$router.push(`/mine/mer-info?merId=${merId}`)
+            },
+            //打开审批弹窗 已通过的产品跳转到 产品管理页面
+            openModal(item){
+                if(this.navIndex!==1){
+                    this.merId = item.merId;
+                    this.merName = item.merName;
+                    this.isShow=true;
+                }else{
+                    this.$router.push(`/template/detail?merId=${item.merId}`)
+                }
+            },
+            //审批
+            submit(status){
+                this.$api.merAudit({
+                    merId: this.merId,
+                    status
+                }).then(res => {
+                    this.$notify('审批完成!')
+                    this.isShow = false;
+                });
+            },
+            // 获取列表数据
+            init(){
+                this.$api.getAuditList({
+                    auditStatus:this.navIndex,
+                    searchKey:this.searchKey
+                }).then((res) => {
+                    let {merList} = res.body;
+                    if(merList.length < 10){
+                        this.finished = true
+                    }
+                    if(this.navIndex===0){
+                        merList = merList.map(item=>{
+                            if(item.canAudit ===0){
+                                item.hidden = 0;
+                            }
+                            return item
+                        })
+                    }
+                    this.list[this.navIndex].arr = merList;
+                }).catch((err) => {
+
+                });
+            },
+            setNavIndex(index) {
+                this.finished = false;
+                this.loading = false;
+                this.navIndex = index;
+                this.init()
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .approve-box {
+        //padding-bottom: 40px;
+        padding-top: 105px;
+    }
+
+    .list-box{
+        background-color: @c-bg-fff;
+        //padding-bottom: 10px;
+        padding-top: 5px;
+    }
+
+
+    .fixed-top {
+        position: fixed;
+        top: 0;
+        width: 100%;
+        z-index: @zIndex-10;
+    }
+
+    .search {
+        padding: 15px 8px;
+    }
+
+    .nav {
+        height: 44px;
+        background-color: @c-bg-black;
+        font-weight: bold;
+
+        .child {
+            width: 360px;
+            margin: 0 auto;
+            background-color: @c-bg-555;
+            border-radius: 16px;
+        }
+
+        .flex-1-g {
+            .lh(32px);
+            color: @c-text-fff;
+            opacity: 0.4;
+
+            &.active {
+                opacity: 1;
+                border-radius: 16px;
+                background-color: @c-bg-fff;
+                color: @c-text-black;
+            }
+        }
+    }
+
+    .mer-item {
+        margin: 0 8px 10px;
+        box-shadow: 0px 0px 5px 0px rgba(66, 61, 93, 0.08);
+        border-radius: 3px;
+        background: @c-bg-fff;
+        padding: 0 12px;
+        height: 67px;
+
+        .icon-box {
+            height: 32px;
+            width: 32px;
+            margin-right: 15px;
+            border-radius: 50%;
+            background: @c-bg-black;
+        }
+
+        .name {
+            font-weight: bold;
+        }
+
+        .tel {
+            font-size: @font-12;
+            color: @c-text-666;
+            margin-top: 5px;
+        }
+
+        .btn {
+            .lh(28px);
+            padding: 0 13px;
+            background: @c-bg-default;
+            border-radius: 13px;
+            color: @c-text-fff;
+        }
+    }
+
+    .modal {
+        width: 280px;
+
+        .top {
+            position: relative;
+            height: 115px;
+            background-color: @c-bg-black;
+            align-items: flex-end;
+
+            .cross {
+                position: absolute;
+                top: 5px;
+                right: 5px;
+
+            }
+        }
+
+        .footer {
+            height: 125px;
+
+            .name {
+                .lh(17px);
+                margin: 23px 13px 13px;
+            }
+
+            .btn {
+                .lh(36px);
+                margin: 25px 10px 0;
+                width: 110px;
+                border-radius: 18px;
+                background-color: @c-bg-eee;
+                color: @c-text-666;
+
+                &.btn-default {
+                    background-color: @c-bg-default;
+                    color: @c-text-fff;
+                }
+            }
+        }
+    }
+</style>
diff --git a/src/views/main/home.vue b/src/views/main/home.vue
new file mode 100644
index 0000000..2dd1567
--- /dev/null
+++ b/src/views/main/home.vue
@@ -0,0 +1,919 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 15:53:43
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-19 10:06:23
+ * @Description:
+ -->
+<template>
+    <div class="home-box">
+        <v-scroll-x class="head" :style="{background:$store.state.backColor}">
+            <p class="product-item" :class="[navIndex===index?'active':'']" v-for="(item, index) in productList"
+                :key="index" @click="toggleProduct(item, index, false)">{{item.typeName}}</p>
+        </v-scroll-x>
+
+        <!-- 折线图 -->
+        <div class="chart-box">
+            <div class="flex-between-g title-top">
+                <p class="text under-text" @click="$router.push(jumpParams)">全部订单</p>
+                <p class="flex-start-g" @click="openTimeModal(false)">
+                    <span class="font-12-g c-text-999-g">{{startDay}}至{{endDay}}</span>
+                    <svg class="icon" aria-hidden="true" style="width:15px;height:15px;" :style="{fill:$store.state.backColor}">
+                        <use xlink:href="#iconrili"></use>
+                    </svg>
+                </p>
+
+            </div>
+            <section class="data-box flex-around-g text-center-g">
+                <div>
+                    <h4 class="title">{{orderData.amtNum}}</h4>
+                    <p class="label">{{zfblxLabel? '待确认' : '交易额'}}</p>
+                </div>
+                <div>
+                    <h4 class="title" :style="{color: zfblxLabel ?'#19be6b':'#333333'}">{{orderData.orderNum}}</h4>
+                    <p class="label">{{zfblxLabel? '拉新' : '交易单数'}}</p>
+                </div>
+                <div>
+                    <h4 class="title" :style="{color: zfblxLabel ?'#ed4014':'#333333'}">{{calcMerNum(orderData.merNum)}}</h4>
+                    <p class="label">{{dataLabel}}   </p>
+                </div>
+            </section>
+        </div>
+
+        <van-popup v-model="isShoTime" position="bottom">
+            <div class="text-center-g flex-around-g time-label">
+                <p class="flex-1-g" :class="[timeIndex===0 ? 'active':'']" @click="setTimeIndex(0)">开始:{{ isMerTime ? merStartDay : startDay}}</p>
+                <p class="flex-1-g" :class="[timeIndex===1 ? 'active':'']" @click="setTimeIndex(1)">结束:{{ isMerTime ? merEndDay : endDay}}</p>
+            </div>
+            <van-datetime-picker ref='timepicker' :max-date="maxDate" :min-date="minDate" :show-toolbar="false" v-model="currentDate" @change="setTime" type="date" />
+            <van-button :color="$store.state.backColor" class="btn-time" @click="refreshData">确定</van-button>
+        </van-popup>
+
+
+        <div class="h-44"></div>
+
+    </div>
+</template>
+<script>
+import { mapState, mapGetters } from 'vuex';
+    export default {
+        data() {
+            return {
+                isMerTime: false, //判断打开的是 商户统计的时间弹窗还是订单统计的
+                startDay: '', // 开始时间
+                endDay: '', //结束时间
+                merStartDay: '', // 商户统计开始时间
+                merEndDay: '', //商户统计结束时间
+                zfblxLabel: '', //拉新统计数据判断条件
+                lxWait: [], //拉新待开通
+                lxValue: [], //拉新
+                lxAdd: [], //拉新+绑卡
+                orderData:{ //订单统计数据
+                    amtNum: 0,
+                    merNum: 0,
+                    orderNum: 0
+                },
+                merData:{ //商户统计数据
+                    passNum: 0,
+                    refuNum: 0,
+                    sumNum: 0,
+                    waitNum: 0
+                },
+                time: 0,
+                timeIndex: 0,
+                isShoTime: false,
+                currentDate: new Date(),
+                navIndex: 0,
+                productList: [], //产品列表
+                jumpParams: {}, //跳转参数
+                opt: {
+                    grid: {
+                        top: 30,
+                        right: 0,
+                        bottom: 30,
+                        left: 40,
+                    },
+                    tooltip: {
+                        trigger: 'axis',
+                        formatter:function (params) {
+                            if(params[0].color == '#855CFE'){
+                                return String(params[0].value) + '万'
+                            }else{
+                                return params[0].value
+                            }
+                        },
+                        axisPointer: {
+                            type: 'cross',
+                            label: {
+                                backgroundColor: '#896EDB',
+                                formatter:'{value}'
+                            }
+                        }
+                    },
+                    xAxis: {
+                        type: 'category',
+                        axisLine: {
+                            show: false,
+                            lineStyle: {
+                                color: '#666'
+                            }
+                        }, //轴线不显示
+                        axisTick: {
+                            show: false
+                        },
+                        data: ['10日', '11日', '12日', '13日', '14日', '15日', '16日']
+                    },
+                    yAxis: {
+                        type: 'value',
+                        axisLine: {
+                            show: false,
+                            lineStyle: {
+                                color: '#666'
+                            }
+                        }, //轴线不显示
+                        axisTick: {
+                            show: false
+                        },
+                        splitLine: {
+                            show: false
+                        },
+                        //纵坐标内容格式化
+                        axisLabel:{
+                            formatter: function (value) {
+                                if (value > 10000) {
+                                    val = (value/10000).toFixed(2);
+                                    return val;
+                                }
+                                return value
+                            }
+                        }
+                    },
+                    series: [
+                        //支付宝拉新时为待确认数据
+                        {
+                        data: [0, 0, 0, 0, 0, 0, 0],
+                        type: 'line',
+                        smooth: true,
+                        symbol: 'circle', //设定为实心点
+                        symbolSize: 8, //设定实心点的大小
+                        itemStyle: {
+                            normal: {
+                                color: '#8760ff',
+                                label: {
+                                    show: true,
+                                }
+                            }
+                        },
+                        lineStyle: {
+                            normal: {
+                                // color: '#333333',
+                            }
+                        },
+                        label: {
+                            formatter:function (params) {
+                            // if (params[0].data > 1000) {
+                            //     // let data = (params[0].data/1000).toFixed(2)
+                            //         let value = (params[0].data/1000).toFixed(2)
+                            //         return String(value) + '万'
+                            //     } else {
+                            //         return value
+                            //     }
+                            },
+                        },
+                        areaStyle: {
+                            normal: {
+                                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                                    offset: 0,
+                                    color: '#e7e0fd'
+                                }, {
+                                    offset: 1,
+                                    color: '#fff'
+                                }])
+                            }
+                        },
+                    },
+                    //拉新
+                    {
+                        data: [0, 0, 0, 0, 0, 0, 0],
+                        type: 'line',
+                        smooth: true,
+                        symbol: 'circle', //设定为实心点
+                        symbolSize: 8, //设定实心点的大小
+                        itemStyle: {
+                            normal: {
+                                color: '#8760ff',
+                                label: {
+                                    show: true,
+                                }
+                            }
+                        },
+                        lineStyle: {
+                            normal: {
+                                color: '#19be6b',
+                            }
+                        },
+                        label: {
+                            formatter:function (params) {
+                            // if (params[0].data > 1000) {
+                            //     // let data = (params[0].data/1000).toFixed(2)
+                            //         let value = (params[0].data/1000).toFixed(2)
+                            //         return String(value) + '万'
+                            //     } else {
+                            //         return value
+                            //     }
+                            },
+                        },
+                        areaStyle: {
+                            normal: {
+                                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                                    offset: 0,
+                                    color: '#e7e0fd'
+                                }, {
+                                    offset: 1,
+                                    color: '#fff'
+                                }])
+                            }
+                        },
+                    },
+                    //拉新+绑卡
+                    {
+                        data: [0, 0, 0, 0, 0, 0, 0],
+                        type: 'line',
+                        smooth: true,
+                        symbol: 'circle', //设定为实心点
+                        symbolSize: 8, //设定实心点的大小
+                        itemStyle: {
+                            normal: {
+                                color: '#8760ff',
+                                label: {
+                                    show: true,
+                                }
+                            }
+                        },
+                        lineStyle: {
+                            normal: {
+                                color: '#ed4014',
+                            }
+                        },
+                        label: {
+                            formatter:function (params) {
+                            // if (params[0].data > 1000) {
+                            //     // let data = (params[0].data/1000).toFixed(2)
+                            //         let value = (params[0].data/1000).toFixed(2)
+                            //         return String(value) + '万'
+                            //     } else {
+                            //         return value
+                            //     }
+                            },
+                        },
+                        areaStyle: {
+                            normal: {
+                                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+                                    offset: 0,
+                                    color: '#e7e0fd'
+                                }, {
+                                    offset: 1,
+                                    color: '#fff'
+                                }])
+                            }
+                        },
+                    }
+                    ]
+                },
+                opt2: {
+                    tooltip: {
+                        trigger: 'axis',
+                        axisPointer: { // 坐标轴指示器,坐标轴触发有效
+                            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
+                        }
+                    },
+                    grid: {
+                        top: 30,
+                        right: 0,
+                        bottom: 30,
+                        left: 40,
+                    },
+                    xAxis: [{
+                        type: 'category',
+                        axisTick: {
+                            show: false
+                        },
+                        axisLine: {
+                            show: false,
+                            lineStyle: {
+                                color: '#666'
+                            }
+                        }, //轴线不显示
+                        data: ['10日', '11日', '12日', '13日', '14日', '15日', '16日']
+                    }],
+                    yAxis: [{
+                        type: 'value',
+                        axisLine: {
+                            show: false,
+                            lineStyle: {
+                                color: '#666'
+                            }
+                        }, //轴线不显示
+                        axisTick: {
+                            show: false
+                        },
+                        splitLine: {
+                            show: false
+                        },
+                    }],
+                    series: [{
+                            name: '通过',
+                            type: 'bar',
+                            stack: '广告',
+                            data: [0, 0, 0, 0, 0, 0, 0],
+                            barWidth: 10, //柱图宽度
+                            itemStyle: {
+                                normal: {
+                                    color: '#D5C7FF',
+                                }
+                            },
+                        },
+                        {
+                            name: '拒绝',
+                            type: 'bar',
+                            stack: '广告',
+                            data: [0, 0, 0, 0, 0, 0, 0],
+                            itemStyle: {
+                                normal: {
+                                    color: '#FFB5D0',
+                                }
+                            },
+                        },
+                        {
+                            name: '待审批',
+                            type: 'bar',
+                            stack: '广告',
+                            data: [0, 0, 0, 0, 0, 0, 0],
+                            itemStyle: {
+                                normal: {
+                                    barBorderRadius: [7, 7, 0, 0],
+                                    color: '#FFE0C2',
+                                }
+                            },
+                        },
+                    ]
+                },
+                timePicker:null,
+            }
+        },
+        computed:{
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId(){
+                return this.productList[this.navIndex].prodId || ''
+            },
+            // 是否是代理 或 渠道角色,只有这两个角色才显示 商户统计的数据
+            isAgent(){
+                let orgType= this.userinfo.orgType
+                return orgType ===1 || orgType ===2;
+            },
+            minDate(){
+                if(this.timeIndex===1){
+                    if(this.isMerTime){
+                        return new Date(this.merStartDay)
+                    }else{
+                        return new Date(this.startDay)
+                    }
+                }
+                return new Date('2010-01-01');
+            },
+            maxDate(){
+                return new Date()
+            },
+            dataLabel(){
+                if(this.zfblxLabel == 'zfblx') {
+                    return "拉新+绑卡"
+                } else {
+                    if(this.orgType===1 || this.orgType===2){
+                        return "交易商户数"
+                    }else if(this.orgType ===3){
+                        return "交易门店数"
+                    }else{
+                        return "交易门店数"
+                    }
+                }
+            }
+        },
+        created() {
+            if(this.$route.query){
+                this.navIndex = this.$route.query.navIndex
+                this.jumpParams = {
+                    path:'/order/xyg-hb',
+                    query:{
+                        typeId:200011,
+                        prodId:30000012
+                    }
+                }
+            }
+            this.initTime()
+        },
+        mounted() {
+            this.init()
+        },
+        methods: {
+            calcMerNum(v){
+                if(this.orgType==4 && this.zfblxLabel !='zfblx'){
+                    return "—";
+                }
+                return v
+            },
+            // 初始化 统计数据
+            init() {
+                this.$api.prodListTitle().then((res) => {
+                    this.productList = res.body || [];
+                    // this.productList.push({
+                    //     icon: "https://t.finlean.com/czjc/img/prod_icon/spfx.png",
+                    //     mgrIsOpen: null,
+                    //     openStatus: "",
+                    //     prodId: "",
+                    //     statusType: "",
+                    //     typeId: "210000",
+                    //     typeName: "支付宝拉新"
+                    // })
+                    console.log(this.productList)
+                    if (this.productList.length) {
+                        let prodId = this.productList[0].prodId;
+                        this.toggleProduct(this.productList[0],0,true)
+                    }else{
+                        let myChart = echarts.init(this.$refs.lineChart);
+                        myChart.setOption(this.opt);
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            setTimeIndex(index){
+                this.timeIndex = index;
+                this.setPickerValue()
+            },
+            // 设置日期的值
+            setPickerValue(){
+                if(this.timePicker){
+                    let timeArr = [];
+                    if(this.isMerTime){
+                        if(this.timeIndex===0){
+                            timeArr = this.merStartDay
+                        }else{
+                            timeArr = this.merEndDay
+                        }
+                    }else{
+                        if(this.timeIndex===0){
+                            timeArr = this.startDay
+                        }else{
+                            timeArr = this.endDay
+                        }
+                    }
+                    this.currentDate = new Date(timeArr)
+                }
+            },
+            // 初始化时间
+            initTime() {
+                let d = new Date();
+                if (d.getHours() >= 10) {
+                    this.time = d.getTime()
+                } else {
+                    this.time = d.getTime() - 24 * 60 * 60 * 1000
+                }
+                let h = d.getHours(),
+                    day =d.getDate();
+                if(h<10){
+                    day = day-1;
+                }
+                let m = d.getMonth() + 1;
+                if(m<10){
+                    m ='0'+m;
+                }
+                if(day<10){
+                    day ='0'+day;
+                }
+                let time = d.getFullYear() + '-' + m + '-' + day;
+                this.endDay = time;
+                this.startDay = time;
+                this.merStartDay = time;
+                this.merEndDay = time;
+                this.currentDate = new Date(time);
+            },
+            // 显示时间选择组件
+            openTimeModal(isB) {
+                console.log(111)
+                this.setPickerValue()
+                this.$nextTick(()=>{
+                    this.isShoTime = true;
+                    this.isMerTime = isB;
+                })
+            },
+            //设置时间
+            setTime(picker,arr) {
+                if(!this.timepicker && picker){
+                    this.timePicker = picker;
+                }
+                let v =arr ? arr : picker.getValues(),
+                    start = '',
+                    end = '',
+                    time = v[0] + '-' + v[1] + '-' + v[2];
+                if (this.isMerTime) {
+                    start = 'merStartDay';
+                    end = 'merEndDay';
+
+                } else {
+                    start = 'startDay';
+                    end = 'endDay';
+                }
+                if (this.timeIndex === 0) {
+                    this[start] = time;
+                } else {
+                    this[end] = time;
+                }
+            },
+            // 获取折线图统计数据
+            getAmtReport(id, lx) {
+                // console.log(lx == 'zfblx')
+                if(lx == 210000) {
+                    this.$api.zfbLxWeekReport().then(res => {
+                        console.log('zfbLxWeekReport')
+                        this.opt.series[0].data = []
+                        this.opt.series[1].data = []
+                        this.opt.series[2].data = []
+                        this.opt.xAxis.data = []
+                        res.body.map( item => {
+                            this.lxWait.push(item.dqrNum || 0)
+                            this.lxValue.push(item.lxNum || 0)
+                            this.lxAdd.push(item.lxAndBkNum || 0)
+                            this.opt.xAxis.data.push(item.reportDate + '日')
+                        })
+                        this.opt.series[0].data = this.lxWait
+                        this.opt.series[1].data = this.lxValue
+                        this.opt.series[2].data = this.lxAdd
+                        this.opt.series[0].lineStyle.normal.color = '#333333'
+                        this.$forceUpdate();
+                        let myChart = echarts.init(this.$refs.lineChart);
+                        myChart.setOption(this.opt);
+                        console.log(this.opt.series[0].data)
+                        console.log(this.opt.series[1].data)
+                        console.log(this.opt.series[2].data)
+                    })
+                } else {
+                    this.$api.getAmtReport(id).then((res) => {
+                        let list = res.body || [];
+                        // let list = [
+                        //     {timeStr: 1, amtNum: 10001},
+                        //     {timeStr: 2, amtNum: 10055},
+                        //     {timeStr: 3, amtNum: 33333},
+                        //     {timeStr: 4, amtNum: 4441},
+                        //     ]
+                        this.opt.xAxis.data = [];
+                        this.opt.series[0].data = [];
+                        let result = list.some(function (item) {
+                            return item.amtNum > 10000
+                        })
+                        if(result){
+                            this.opt.series[0].itemStyle.normal.color = '#855CFE';
+                        }else{
+                            this.opt.series[0].itemStyle.normal.color = '#8760FF';
+                        }
+                        list.forEach(item => {
+
+                            this.opt.xAxis.data.push(item.timeStr + '日')
+                            //  this.opt.series[0].data.push(item.amtNum)
+                                // this.opt.series[0].data.push(item.amtNum)
+                            if (result) {
+                                this.opt.series[0].data.push((item.amtNum/10000).toFixed(2))
+                                // this.opt.series[0].data.push(item.amtNum)
+                            } else {
+                                this.opt.series[0].data.push(item.amtNum)
+                            }
+                        })
+                        let myChart = echarts.init(this.$refs.lineChart);
+                        myChart.setOption(this.opt);
+                    }).catch((err) => {
+
+                    });
+                }
+            },
+            // 获取 柱状图数据
+            getMerWeeksReport() {
+                this.$api.getMerWeeksReport().then((res) => {
+                    let list = res.body || [];
+                    this.opt2.xAxis[0].data = [];
+                    this.opt2.series[0].data = [];
+                    this.opt2.series[1].data = [];
+                    this.opt2.series[2].data = [];
+                    list.forEach(item => {
+                        this.opt2.xAxis[0].data.push(item.dd + '日')
+                        this.opt2.series[0].data.push(item.merReport.passNum || 0)
+                        this.opt2.series[1].data.push(item.merReport.refuNum || 0)
+                        this.opt2.series[2].data.push(item.merReport.waitNum || 0)
+                    })
+                    var barChart = echarts.init(this.$refs.barChart);
+                    barChart.setOption(this.opt2);
+                }).catch((err) => {
+
+                });
+            },
+            // 时间切换刷新统计数据
+            refreshData(){
+                if(this.timePicker){
+                    let arr = this.timePicker.getValues()
+                    this.setTime(null,arr)
+                }
+                if(this.isMerTime){
+                    this.getMerReport(this.merStartDay,this.merEndDay)
+                }else{
+                    this.getOrderReport(this.prodId,this.startDay,this.endDay)
+                }
+            },
+            // 获取订单统计
+            getOrderReport(prodId,startDay,endDay, lx){
+                if(this.zfblxLabel == 'zfblx') {
+                    this.$api.zfbLxReport({
+                        endTime: endDay,
+                        staTime: startDay
+                    }).then(({body}) => {
+                            this.orderData = {
+                            amtNum: body.dqrNum || 0,
+                            merNum: body.lxAndBkNum || 0,
+                            orderNum: body.lxNum || 0
+                        }
+                        this.isShoTime = false;
+                    })
+                } else {
+                    this.$api.getOrderReport({
+                        startDay,
+                        endDay,
+                        prodId,
+                        pageType:1,
+                    }).then(({body}) => {
+                        this.orderData = {
+                            amtNum: body.amtNum || 0,
+                            merNum: body.merNum || 0,
+                            orderNum: body.orderNum || 0
+                        }
+                        this.isShoTime = false;
+                    }).catch((err) => {
+
+                    })
+                }
+            },
+            // 商户统计
+            getMerReport(staTime,endTime){
+
+                this.$api.getMerReport({
+                    staTime,
+                    endTime,
+                }).then(({body}) => {
+                    this.merData = {
+                        passNum: body.passNum || 0,
+                        refuNum: body.refuNum || 0,
+                        sumNum: body.sumNum || 0,
+                        waitNum: body.waitNum || 0
+                    }
+                    this.isShoTime = false;
+                }).catch((err) => {
+
+                });
+
+            },
+            //切换产品
+            toggleProduct(item, index,isGetChartData) {
+                console.log(item)
+                this.zfblxLabel = ''
+                this.opt.series[0].data = []
+                this.opt.series[1].data = []
+                this.opt.series[2].data = []
+                if (item.typeId == 200015) {
+                    this.$router.push({
+                        path: "/order/order-lthyj",
+                        query: {
+                            typeId: item.typeId,
+                            id:this.$route.query.id,
+                            prodId:item.prodId
+                        }
+                    })
+                }
+                if(item.typeId == 210000) {
+                    this.zfblxLabel = 'zfblx'
+                    // console.log(this.zfblxLabel)
+                }
+                this.navIndex = index;
+                // return
+                let path = "";
+                // 200000- 支付宝拉新 200001-信用卡分期 200002-花呗分期 200003-裸机分期  200004-购机直降  200005-智享花  200008-商户收款  200009-花呗合约机 200010-商户贴息,200011信用购
+                switch (item.typeId * 1) {
+                    case 210000:
+                        path = "/order/lxOredr";
+                        break;
+                    case 200001:
+                        path = "/order/credit";
+                        break;
+                    case 200002:
+                        path = "/order/hb";
+                        break;
+                    case 200003:
+                        path = "/order/phone";
+                        break;
+                    case 200004:
+                        path = "/order/gjzj";
+                        break;
+                    case 200005:
+                        path = "/order/zxh";
+                        break;
+                    case 200008:
+                        path = "/order/dmf";
+                        break;
+                    case 200009:
+                        path = "/order/hb";
+                        break;
+                    case 200010:
+                        path = "/order/shtx";
+                        break;
+                    case 200014:
+                        path = "/order/hbjl";
+                        break;
+                    case 200016:
+                        path = "/order/wxScore";
+                        break;
+                    case 200017:
+                        path = "/order/gzzj";
+                        break;
+                }
+                 switch (item.prodId * 1) {
+                    case 30000011:
+                        path='/order/xyg';
+                        break;
+                    case 30000012:
+                        path='/order/xyg-hb';
+                        break;
+                 }
+                this.jumpParams = {
+                    path,
+                    query: {
+                        typeId: item.typeId,
+                        id:this.$route.query.id,
+                        prodId:item.prodId
+                    }
+                }
+                // console.log(this.jumpParams)
+                    this.getAmtReport(item.prodId, item.typeId)
+                    this.getOrderReport(this.prodId,this.startDay,this.endDay, item.typeId)
+                    if(this.isAgent && isGetChartData){
+                        this.getMerReport(this.merStartDay,this.merEndDay)
+                        this.getMerWeeksReport()
+                    }
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .home-box {
+        padding-bottom: 15px;
+    }
+
+    .h-44{
+        /*height: 44px;*/
+        background-color: transparent;
+    }
+
+
+    .head {
+        background: @c-bg-black;
+        padding-left: 20px;
+        height: 45px;
+
+        .product-item {
+            .lh(25px);
+            border-radius: 4px;
+            padding: 0 15px;
+            margin: 10px 0;
+            margin-right: 10px;
+            background-color: rgba(255, 255, 255, 0.2);
+            color: rgba(255, 255, 255, 0.4);
+
+            &.active {
+                background-color: @c-bg-fff;
+                color: @c-text-333;
+            }
+        }
+    }
+
+
+
+
+    .chart-box {
+        padding: 0 20px 10px;
+        background-color: @c-bg-fff;
+
+        .title-top {
+            .lh(44px);
+
+            .icon-left {
+                margin-right: 5px;
+            }
+
+            .icon {
+                margin-left: 5px;
+            }
+
+            .text {
+                font-weight: bold;
+            }
+            .under-text{
+                line-height: 15px;
+                /*text-decoration: underline;*/
+                border-bottom: 1px solid #000;
+            }
+        }
+
+        .data-box {
+            height: 80px;
+
+            .title {
+                font-size: @font-20;
+                margin-bottom: 10px;
+            }
+
+            .label {
+                font-size: @font-12;
+                color: @c-text-999;
+            }
+        }
+
+        .foot {
+            font-size: @font-12;
+            color: @c-text-999;
+            line-height: 40px;
+
+            .status {
+                margin-left: 12px;
+
+                &::before {
+                    content: '';
+                    display: inline-block;
+                    height: 12px;
+                    width: 12px;
+                    border-radius: 50%;
+                    margin-right: 4px;
+                }
+
+                &.success {
+                    &::before {
+                        background-color: #D5C7FF;
+                    }
+                }
+
+                &.error {
+                    &::before {
+                        background-color: #FFB5D0;
+                    }
+                }
+
+                &.warning {
+                    &::before {
+                        background-color: #FFE0C2;
+                    }
+                }
+            }
+        }
+    }
+
+
+    .chart-b2{
+        padding: 10px 8px;
+        background-color: #F5F5F7;
+    }
+
+    .chart-box-bg{
+        padding: 5px 12px;
+        border-radius: 4px;
+        background-color: @c-bg-fff;
+    }
+
+
+    .lineChart {
+        height: 250px;
+        margin: 0 auto;
+    }
+
+    .btn-time {
+        display: block;
+        width: 320px;
+        background-color: @c-bg-default;
+        color: @c-text-fff;
+        border-radius: 22px;
+        margin: 15px auto;
+
+    }
+
+    .time-label {
+        .lh(65px);
+        color: @c-text-999;
+
+        .active {
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/main/index.vue b/src/views/main/index.vue
new file mode 100644
index 0000000..860ea70
--- /dev/null
+++ b/src/views/main/index.vue
@@ -0,0 +1,90 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-13 18:10:18
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 15:58:08
+ * @Description:
+ -->
+<template>
+    <div class="box home-tabbar ">
+        <router-view></router-view>
+        <van-tabbar route :active-color='$store.state.backColor' inactive-color='#CCCCCC'>
+            <van-tabbar-item :to="item.path" v-for="(item, index) in footerNav" :key="index" :info="item.powerId ===100003 ? count : ''" @click="resetCount(item.powerId)">
+                <span class="msgInfo" v-if="item.powerId ===300000 && msgCount.sum "></span>
+                <template :active="index" class="van-tabbar-item__icon flex-center-g" v-slot:icon>
+                    <svg class="icon" aria-hidden="true"  style="width:24px;height:24px;" :style="{fill:$store.state.backColor}">
+                        <use v-if="active === item.powerId" :xlink:href="'#' + item.icon"></use>
+                        <!--<use v-else xlink:href="#iconchanpin"></use>-->
+                        <use v-else :xlink:href="'#' + item.Aicon"></use>
+                    </svg>
+                </template>
+                {{item.label}}
+            </van-tabbar-item>
+        </van-tabbar>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState, mapGetters, mapActions
+    } from 'vuex';
+    export default {
+        data() {
+            return {
+                count: '',
+                active:this.$route.meta.powerId || ''
+            }
+        },
+        computed: {
+            ...mapState(['footerNav','msgCount']),
+            ...mapGetters(['orgType']),
+            
+        },
+        created() {
+            this.init()
+            this.getCount()
+        },
+        methods: {
+            ...mapActions(['getCount']),
+            resetCount(id){
+                this.active = id;
+                // if(id===100003){
+                //     this.count = '';
+                // }
+            },
+            
+            init() {
+                // 代理和渠道角色才会调用
+                if(this.orgType===1 || this.orgType ===2){
+                    this.$api.getUnAuditNb().then((res) => {
+                        this.count = res.body.unAuditNb || '';
+                    }).catch((err) => {
+
+                    });
+                }
+            },
+        },
+
+    }
+</script>
+
+<style lang="less" scoped>
+    .box {
+        background-color: @c-f5;
+        min-height: 100vh;
+        //padding-bottom: 44px;
+    }
+    .msgInfo{
+        width:7px;
+        height:7px;
+        background:rgba(255,102,102,1);
+        color: #fff;
+        border-radius:50%;
+        position: absolute;
+        right: 34%;
+        top: 3px;
+    }
+
+
+
+</style>
diff --git a/src/views/main/message.vue b/src/views/main/message.vue
new file mode 100644
index 0000000..cb2e2e3
--- /dev/null
+++ b/src/views/main/message.vue
@@ -0,0 +1,121 @@
+
+<template>
+    <div class="message-table">
+        <div v-if="!messageList" class="notice-tips">
+            <div class="no-notice">
+                <img src="../../assets/imgs/pic.png" alt="暂无消息">
+            </div>
+            <p class="tips">暂无消息</p>
+        </div>
+    </div>
+</template>
+<script>
+import { dateFormat } from 'vux';
+import { mapActions } from 'vuex';
+    export default {
+        name: 'message',
+        data() {
+            return {
+                messageList: [],
+            }
+        },
+        created() {
+            this.msgListInit()
+            this.getCount()
+        },
+        methods: {
+            ...mapActions(['getCount']),
+            //跳转到消息详情
+            toMessageDetail(e, id) {
+                this.$router.push(`/message?messageId=${id}`);
+            },
+            msgListInit() {
+                this.$api.noticeList().then(res => {
+                    this.messageList = res.body.noticeInfos;
+                    console.log(this.messageList)
+                    // console.log(this.messageList.some(item => {
+                    //     item.needRead === 1
+                    // }))
+                })
+            }
+        }
+    }
+</script>
+<style lang="less" scoped>
+.notice-tips{
+    margin-top: 100px;
+}
+.no-notice{
+    width: 186px;
+    height: 186px;
+    margin-left: 43px;
+    img{
+        width: 100%;
+        height: 100%;
+    }
+}
+.tips{
+    color: #333333;
+    margin-top: 10px;
+    width: 100%;
+    text-align: center;
+    font-size: 14px;
+}
+.message-table{
+    width: 100%;
+    height: 100%;
+    overflow: hidden;
+    padding-bottom: 50px;
+}
+.message-table-item{
+    width: 90%;
+    margin: 0 2%;
+    background: #fff;
+    margin-top: 10px;
+    padding: 10px 3%;
+    &-top{
+        margin-bottom: 10px;
+        .flexLayout(space-between, center, row);
+        :nth-child(1){
+            font-size: 16px;
+            color: #333333;
+            font-weight: bold;
+            width: 60%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            word-wrap: normal;
+            i{
+                font-size: 20px;
+                color: #3D86FA;
+            }
+        }
+        :nth-child(2){
+            font-size: 12px;
+            color: #999999;
+        }
+    }
+    &-content{
+        .flexLayout(space-between, center, row);
+        p{
+            // .ellipsisLn(290px);
+            width: 90%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            word-wrap: normal;
+            color: #666666;
+            font-size: 13px;
+        }
+        span{
+            width:7px;
+            height:7px;
+            background:rgba(255,102,102,1);
+            border-radius:50%;
+        }
+    }
+}
+.notice-title{
+//    color: #423D5D !important;
+}
+</style>
diff --git a/src/views/main/mine.vue b/src/views/main/mine.vue
new file mode 100644
index 0000000..9633e91
--- /dev/null
+++ b/src/views/main/mine.vue
@@ -0,0 +1,236 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-15 11:04:12
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-09 16:00:40
+ * @Description: 用户管理页面
+ -->
+<template>
+  <div class="mine-box">
+    <header class="header flex-between-g" :style="{background: $store.state.lastColor}">
+      <img
+        v-if="hasPic"
+        src="../../../static/img/left.png"
+        style="
+          position: absolute;
+          left: 0px;
+          top: 0;
+          height: 144px;
+          width: 166px;
+        "
+      />
+      <img
+        v-if="hasPic"
+        src="../../../static/img/right.png"
+        style="position: absolute; right: 0; top: 0; height: 47px; width: 62px"
+      />
+      <div class="flex-start-g" style="z-index: 99">
+        <p class="icon-box flex-center-g">
+          <svg
+            class="icon"
+            aria-hidden="true"
+            style="width: 40px; height: 40px"
+          >
+            <use xlink:href="#icongerenzhongxintouxiang"></use>
+          </svg>
+        </p>
+        <div class="userinfo">
+          <p class="name text-clip-g font-16-g">{{ userinfo.name }}</p>
+          <p>{{ userinfo.mblNo.replace(/(\d{3})\d*(\d{4})/, "$1****$2") }}</p>
+          <p class="copy" v-if="orgType == 1 || orgType == 2">
+            邀请码:{{ inviteCode }} <span @click="copy">复制</span>
+          </p>
+        </div>
+      </div>
+      <div>
+        <p class="text-center-g font-16-g">{{ userLabel }}</p>
+        <van-button
+          class="btn-toggle"
+          @click="$router.push('/mine/toggle-identity?title=切换身份')"
+          >切换身份</van-button
+        >
+      </div>
+    </header>
+
+    <div class="grid">
+      <router-link
+        :to="item.path || ''"
+        class="item flex-center-g"
+        v-for="(item, index) in menu"
+        :key="index"
+      >
+        <div class="text-center-g">
+          <svg
+            class="icon"
+            aria-hidden="true"
+            style="width: 35px; height: 35px"
+            :style="{'fill':$store.state.backColor}"
+          >
+            <use :xlink:href="'#' + item.icon"></use>
+          </svg>
+          <p class="label">{{ item.label }}</p>
+        </div>
+      </router-link>
+      <!-- <router-link :to="item.path || ''" class="item flex-center-g" v-for="(item, index) in menu" :key="index">
+                <div class="text-center-g">
+                    <svg class="icon" aria-hidden="true" style="width:35px;height:35px;">
+                        <use :xlink:href="'#' +item.icon"></use>
+                    </svg>
+                    <p class="label">{{item.label}}</p>
+                </div>
+            </router-link> -->
+    </div>
+  </div>
+</template>
+
+<script>
+import { mapState, mapGetters } from "vuex";
+import { _copyToClipboard } from "@/utils/index";
+export default {
+  data() {
+    return {
+      copyText: "",
+      walletOpenStatus: "",
+    };
+  },
+  created() {
+
+  },
+  computed: {
+    ...mapState(["userinfo", "userPage", "inviteCode"]),
+    ...mapGetters(["orgType"]),
+    hasPic(){
+      if(sessionStorage.isddxt != 1){
+        return true
+      }else{
+        return false
+      }
+    },
+    userLabel() {
+      switch (this.orgType) {
+        case 1:
+          return "代理";
+        case 2:
+          return "渠道";
+        case 3:
+          return "商户";
+        case 4:
+          return "门店";
+      }
+    },
+    menu() {
+      let arr = [];
+      if (this.orgType == 1) {
+        arr.push(
+          {
+            icon: "iconmobanguanli",
+            label: "模板管理",
+            path: "/template/list",
+          }
+        );
+      }
+      let usrArr = [
+          ...arr,
+          ...this.userPage,
+          {
+              icon: "iconshezhizhongxin",
+              label: "设置中心",
+              path: "/mine/setting",
+          },
+      ];
+      usrArr.forEach(item => {
+            if(item.powerId == '100005' && this.orgType == 3){
+                usrArr.splice(usrArr.length-2,usrArr.length-2);
+             }
+        })
+      return usrArr;
+    },
+  },
+  methods: {
+    copy() {
+      _copyToClipboard(this.inviteCode);
+      this.$notify_success("复制成功");
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+.mine-box {
+  background-color: @c-bg-f5;
+  padding-bottom: 100px;
+}
+
+.header {
+  height: 144px;
+  background-color: @c-bg-black;
+  color: @c-text-fe;
+  padding: 0 20px;
+
+  .icon-box {
+    width: 60px;
+    height: 60px;
+    background-color: @c-bg-fff;
+    border-radius: 50%;
+    margin-right: 15px;
+  }
+
+  .userinfo {
+    max-width: 155px;
+
+    .name {
+      margin-bottom: 5px;
+    }
+  }
+
+  .btn-toggle {
+    .lh(24px);
+    padding: 0 10px;
+    background: #55516e;
+    border: 0.02rem solid #55516e;
+    margin-top: 8px;
+    color: @c-text-fe;
+    border-radius: 12px;
+    font-size: @font-11;
+  }
+}
+
+.grid {
+  margin: 0 auto;
+  width: 360px;
+  background-color: @c-bg-fff;
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  flex-wrap: wrap;
+  z-index: @zIndex-20;
+  transform: translateY(-15px);
+  box-shadow: 0px 8px 20px 0px rgba(66, 61, 93, 0.05);
+  border-radius: 3px;
+
+  .item {
+    width: 120px;
+    height: 122px;
+  }
+
+  .label {
+    margin-top: 15px;
+    color: @c-text-666;
+  }
+}
+.copy {
+  color: #fefeff;
+  font-size: 12px;
+  margin-top: 10px;
+  span {
+    width: 40px;
+    height: 16px;
+    background: #55516e;
+    padding: 0 10px;
+    // opacity:0.1;
+    border-radius: 16px;
+    color: #fefeff;
+    font-size: 11px;
+    line-height: 16px;
+  }
+}
+</style>
diff --git a/src/views/main/product.vue b/src/views/main/product.vue
new file mode 100644
index 0000000..fc8297d
--- /dev/null
+++ b/src/views/main/product.vue
@@ -0,0 +1,234 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 18:10:18
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-26 13:53:40
+ * @Description:
+ -->
+<template>
+  <div class="product-box h-100-g">
+
+    <nav class="product-title">
+      产品管理
+    </nav>
+
+    <div class="alipay" @click="$router.push('/product/facepay')">
+      <van-icon name="scan" />
+      <p>支付宝扫码收款</p>
+    </div>
+
+
+    <div class="product-list grid">
+      <div class="list-title">办理分期</div>
+      <div class="item flex-center-g" @click="handlerClick(item)" v-for="(item, index) in menu" :key="index" :class="item.icon.replace('#','')">
+        <div class="text-center-g" >
+          <svg class="icon"  aria-hidden="true" :style="{fill:item.color}">
+            <use :xlink:href="item.icon"></use>
+          </svg>
+          <p class="label">{{item.label}}</p>
+        </div>
+      </div>
+    </div>
+
+  </div>
+</template>
+
+<script>
+  export default {
+    name: "product",
+    data() {
+      return {
+        // 菜单栏
+        menu: [
+          {
+            icon: '#iconxinyongkafenqi',
+            label: '信用卡分期',
+            path: '',
+            color:'#896EDB'
+          },
+          {
+            icon: '#iconhuabeifenqi',
+            label: '花呗分期',
+            color:'#896EDB'
+          },
+          {
+            icon: '#iconshoujifenqi',
+            label: '手机分期',
+            color:'#896EDB'
+          },
+          {
+            icon: '#icongoujizhijiang',
+            label: '购机直降',
+            color:'#ccc'
+          },
+          {
+            icon: '#iconzhixianghua',
+            label: '智享花',
+            color:'#896EDB'
+          },
+          {
+            icon: '#iconzhixianghua',
+            label: '信用购',
+            color:'#896EDB'
+          },
+          {
+            icon: '#icondangmianfu',
+            label: '商户收款',
+            color:'#ccc'
+          },
+          {
+            icon: '#iconhuabeiheyueji',
+            label: '花呗合约机',
+            color:'#896EDB'
+          },
+          {
+            icon: '#iconhuabeitie',
+            label: '花呗提额',
+            color:'#896EDB'
+          },
+
+        ]
+      }
+    },
+    created() {
+       // this.openAuto();
+    },
+    methods: {
+        openAuto(){
+            let openId = window.localStorage.getItem("pOpenId");
+            let codeId = window.localStorage.getItem("pCodeId");
+            alert("openId:"+openId);
+            alert("codeId:"+codeId);
+            if(codeId == undefined) {
+                var strUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + "wx594ab33e0466eccf" +
+                    "&redirect_uri=" + "https%3a%2f%2fsie.jycash.cn%2fsib_wx_score%2f%23%2f" + "&response_type=code&scope=snsapi_userinfo" + "#wechat_redirect";
+                window.location.href = strUrl;
+            }else if(openId ==  undefined){
+                this.$api.getWeChatUserInfo({"code":codeId}).then(
+                    res => {
+                        let openId = res.body;
+                        window.localStorage.setItem("pOpenId",openId);
+                        this.$api.setUserOpenId({"openId":openId}).then(
+                            res => {
+                                alert("updateOpenId:"+ openId);
+                            },
+                            error => {
+                                statusCodeManage.showTipOfStatusCode(error, this);
+                            }
+                        );
+                    },
+                    error => {
+                        statusCodeManage.showTipOfStatusCode(error, this);
+                    }
+                );
+            }
+        },
+      handlerClick(item) {
+        if (item.path) {
+          this.$router.push(item.path);
+          return false;
+        }
+
+        switch (item.label) {
+          case '信用卡分期':
+            this.Click_XYK();
+            break;
+          case '花呗分期':
+            this.Click_HBFQ();
+            break;
+        }
+      },
+
+
+      //信用卡分期点击
+      Click_XYK() {
+        console.log('信用卡分期点击');
+      },
+
+      //花呗分期
+      Click_HBFQ() {
+        console.log('花呗分期');
+      },
+
+
+    }
+  }
+</script>
+
+<style scoped lang="less">
+  .product-box {
+      padding-bottom: 100px;
+
+    //产品标题
+    .product-title {
+      .lh(44px);
+      background: @c-black;
+      font-size: @font-16;
+      color: @c-fff;
+      font-weight: bold;
+      text-align: center;
+    }
+
+
+    .alipay{
+      width: 360px;
+      margin: 0 auto;
+      .flex(center,center,warp,column);
+      margin-top: 20px;
+      min-height: 130px;
+      background-color: @c-fff;
+      .van-icon{
+        font-size: 55px;
+        margin-bottom: 15px;
+        color: @c-default;
+      }
+      p{
+        font-size: @font-12;
+        color: @c-default;
+      }
+    }
+
+
+    //产品列表
+    .grid {
+      margin: 15px auto 0 auto;
+      width: 360px;
+      background-color: @c-bg-fff;
+      .flex(flex-start, center, wrap);
+      z-index: @zIndex-20;
+      box-shadow: 0 8px 20px 0 rgba(66, 61, 93, 0.05);
+      border-radius: 3px;
+      .item {
+        width: 120px;
+        height: 122px;
+      }
+      .icon{
+        width:35px;
+        height:35px;
+       /* fill:@c-default;*/
+      }
+      .label {
+        margin-top: 15px;
+        color: @c-text-666;
+      }
+    }
+
+
+
+    .list-title{
+      width: 100%;
+      .lh(44px);
+      padding-left: 25px;
+      border-bottom: 1px solid #c7c7c7;
+    }
+
+
+    //单独修改某一单元格样式
+    .iconshoujifenqi{
+
+    }
+
+
+
+  }
+</style>
diff --git a/src/views/mdyh/bdjc/bdCourse.vue b/src/views/mdyh/bdjc/bdCourse.vue
new file mode 100644
index 0000000..77fd7be
--- /dev/null
+++ b/src/views/mdyh/bdjc/bdCourse.vue
@@ -0,0 +1,290 @@
+
+<template>
+    <div class="getQRCode">
+        <!-- <x-header class="message-head" :title="courseName" :left-options="{backText:''}"></x-header> -->
+        <v-navbar :title="courseName" fixed ></v-navbar>
+        <!-- 视频窗口  v-if="playerOptions.sources[0].src"-->
+        <div style="margin-top: 40px" >
+            <video-player  class="video-player vjs-custom-skin"
+                ref="videoPlayer"
+                :playsinline="true"
+                :options="playerOptions"
+                v-if="playerOptions.sources[0].src"
+            ></video-player>
+        </div>
+        <!-- 选项卡 -->
+        <div class="table-active">
+            <van-tabs v-model="active" color="#896EDB" title-active-color="#896EDB" line-width="24px">
+                <van-tab title="操作教程">
+                    <div class="course-text-c">
+                        <div v-for="item in sum" class="course-text-c-img">
+                            <img :src="`${imgUrl}${fileName}${item}.png`" alt="">
+                        </div>
+                    </div>
+                </van-tab>
+                <van-tab title="常见问题">
+                    <van-collapse v-model="activeNames">
+                        <div v-if="sum != 9">
+                            <van-collapse-item  v-for="(item, index) in questionList">
+                                <div class="question-title" slot="title">{{item.title}}</div>
+                                <div class="course-text" v-if="index == 1" slot="default">
+                                    <p class="course-text-item" v-for="it in specialQueList">{{it.course}}</p>
+                                </div>
+                                <div class="course-text" v-if="index == 11" slot="default">
+                                    <p class="course-text-item" v-for="el in specialQueList">{{el.course2}}</p>
+                                </div>
+                                <div class="course-text" v-if="index != 1 && index != 11" slot="default">
+                                    <p class="course-text-item">{{item.course}}</p>
+                                </div>
+                            </van-collapse-item>
+                        </div>
+                        <div v-if="sum == 9">
+                            <van-collapse-item  v-for="(item, index) in questionList">
+                                <div class="question-title" slot="title">{{item.title}}</div>
+                                <div class="course-text" v-if="index == 6" slot="default">
+                                    <p class="course-text-item" v-for="it in specialQueList">{{it.course}}</p>
+                                </div>
+                                <div class="course-text" v-if="index != 6" slot="default">
+                                    <p class="course-text-item">{{item.course}}</p>
+                                </div>
+                            </van-collapse-item>
+                        </div>
+                    </van-collapse>
+                </van-tab>
+            </van-tabs>
+        </div>
+    </div>
+</template>
+<script>
+import { XHeader } from 'vux';
+import {dateFormat} from 'vux';
+import Vue from 'vue';
+import {
+    Tab,
+    Tabs,
+    Collapse,
+    CollapseItem
+} from 'vant';
+import { videoPlayer } from 'vue-video-player'
+import 'video.js/dist/video-js.css'
+import '../../../style/myVideo'
+import { NavBar } from "vant";
+
+Vue.use(NavBar);
+Vue.use(Tab).use(Tabs);
+Vue.use(Collapse).use(CollapseItem);
+    export default {
+        name: 'message',
+        components: {
+             XHeader,
+             videoPlayer
+        },
+        data() {
+            return {
+                sum: Number(this.$route.query.sum),
+                fileName: this.$route.query.fileName,
+                imgUrl: 'https://t.finlean.com/czjc/img/sib_merao/',
+                specialQueList:[], //特殊格式的常见问题
+                active: 2,
+                activeNames: ['1'],
+                questionList: [],
+                courseName: this.$route.query.courseName,
+                // 视频播放初始化
+                playerOptions : {
+                    playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
+                    autoplay: false, //如果true,浏览器准备好时开始回放。
+                    muted: false, // 默认情况下将会消除任何音频。
+                    loop: false, // 导致视频一结束就重新开始。
+                    preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
+                    language: 'zh-CN',
+                    aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
+                    fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
+                    sources: [{
+                    src: '',  // 路径
+                    type: 'video/mp4'  // 类型
+                    },
+                    // {
+                    // src: '//path/to/video.webm',
+                    // type: 'video/webm'
+                    // }
+                    ],
+                    // poster: "../../static/images/test.jpg", //你的封面地址
+                    width: document.documentElement.clientWidth,
+                    notSupportedMessage: '此视频暂无法播放,请稍后再试', //允许覆盖Video.js无法播放媒体源时显示的默认信息。
+                    controlBar: {
+                    timeDivider: true,
+                    durationDisplay: true,
+                    remainingTimeDisplay: false,
+                    fullscreenToggle: true  //全屏按钮
+                    }
+                }
+            }
+        },
+        created() {
+            this. bdCourseInit()
+        },
+        methods: {
+            bdCourseInit() {
+                this.$nextTick(() => {
+                    // this.playerOptions.sources[0].src = "http://vjs.zencdn.net/v/oceans.mp4";
+                })
+                this.questionList = [
+                    {
+                        title: "名称不匹配(支付宝账号和商户名不一致",course: "检查支付宝账号与支付宝名称是否与法人信息一致,个体户的支付宝账号的支付宝名称应为法人姓名。企业支付宝名称应为营业执照名称。"
+                    },{
+                        title: "未能通过工商校验,请检查身份信息正确性",course: "1.确认收款账号和收款名称是不是对的(企业商户只能填写企业支付宝账号,个体工商户填写法人的)   2.确认营业执照编码和营业执照名称是否与营业执照一致。3.确认法人身份证号码是否是正确的   4.确认商户类型是否选择正确。   5.检查填写的法人身份证号和法人姓名是否与法人真实信息一致。"
+                    },{
+                        title: "支付宝账号不存在",course: "检查支付宝账号是否填写错误,重新填写资料提交。"
+                    },{
+                        title: "区码非法",course: "商户录入的省市区和支付宝那边的区码不一致,提供商户名称给技术处理。"
+                    },{
+                        title: "签约失败(存在风险)",course: "出现此提示的原因是该商户未能通过支付宝的风控系统核查,暂无解决办法。"
+                    },{
+                        title: "唯一键被占用",course: "商户已经用同一个营业执照注册过账号,不需要重新注册。上报代理查询已通过账号切换到第一次注册的账号。"
+                    },{
+                        title: "交易结算异常、二级商户支付宝账号不存在",course: "https://docs.open.alipay.com/58/103544根据网址的教程使用(花呗分期收款支付宝账号)登录查询pid,将商户名称和Pid提交处理。"
+                    },{
+                        title: "ALIN39446  ALIN43812  ALIN43791  ALIN43798 ALIN39423  ALIN39425  ALI39448",course: "为了确保资金安全,系统会综合评估用户的使用场景,如果当下无法使用花呗支付,建议您更换其他付款方式,如果用户表示就一定要用花呗,可以建议用户更换商家尝试或者第二天再尝试使用花呗支付。"
+                    },{
+                        title: "花呗分期交易时的资金流是如何变动的",course: "创建并支付时,花呗分期账户一次性将订单全额结算至商户收款账户。如果商户贴息,花呗一次性将商户承担的手续费全部从商户收费账户扣除。用户每期还款时,资金(本金+用户承担手续费)由用户账户结算至花呗账户。"
+                    },{
+                        title: "花呗分期退手续费遵循什么原则",course: "商户承担手续费,自交易发生后15天内发生退款,花呗全额退手续费,15天后不退手续费。        用户已经支付的手续费一概不退,未支付的手续费,如果已经出了账单则不能退,未出账单的,根据退款金额按比例减免。。"
+                    },{
+                        title: "报错“花呗分期暂不可用,你可以使用其他付款方式继续支付或稍后重试” 怎么办",course: "导致该报错的原因可能是:用户没有花呗额度;用户花呗额度不足;该笔交易被判定为高风险交易。用户此时可以选择其它付款方式唤起支付宝收银台继续支付。"
+                    },{
+                        title: "花呗分期如何还款?",course: "花呗分期的账单与花呗账单在一起,每个月出账日计算当月应还金额,用户需在当月还款日之前将应还金额还清;还款方式支持系统自动扣款与用户主动还款两种:系统自动扣款:在还款日当天,系统发起自动扣款,会从用户余额、支付宝绑定借记卡、余额宝依次进行扣款,请保证支付宝金额充足;用户主动还款:用户可以登录支付宝-蚂蚁花呗,进行账单主动还款。"
+                    }
+                ]
+                this.specialQueList = [
+                    {
+                        course:'1.确认收款账号和收款名称是不是对的(企业商户只能填写企业支付宝账号,个体工商户填写法人的)',
+                    },
+                    {
+                        course:'2.确认营业执照编码和营业执照名称是否与营业执照一致。'
+                    },
+                    {
+                        course:'3.确认法人身份证号码是否是正确的。'
+                    },
+                    {
+                        course:'4.确认商户类型是否选择正确。'
+                    },
+                    {
+                        course:'5.检查填写的法人身份证号和法人姓名是否与法人真实信息一致。'
+                    },
+                    {
+                        course2:'花呗分期的账单与花呗账单在一起,每个月出账日计算当月应还金额,用户需在当月还款日之前将应还金额还清;'
+                    },
+                    {
+                        course2:'还款方式支持系统自动扣款与用户主动还款两种'
+                    },
+                    {
+                        course2:'系统自动扣款:在还款日当天,系统发起自动扣款,会从用户余额、支付宝绑定借记卡、余额宝依次进行扣款,请保证支付宝金额充足;'
+                    },
+                    {
+                        course2:'用户主动还款:用户可以登录支付宝-蚂蚁花呗,进行账单主动还款。'
+                    },
+                ]
+                if(this.sum == 9) {
+                    this.questionList = [
+                        {
+                            title: '资方审核需要多长时间?',
+                            course: '30秒左右;',
+                        },
+                        {
+                            title: '用户办单过程中资料填写错误或合约选择错误能否重新办单?',
+                            course: '在商户上传合约凭证及合约手机号之前,用户可重新扫码办理订单,之前的订单系统会自动取消;',
+                        },
+                        {
+                            title: '若用户想要退货,是否有条件限制?',
+                            course: '只要用户在放款成功7个自然日之前与商户协商达成一致,商户可在商户后台发起退货申请,发起后需当天把结算款结算至资方指定银行账户,资方确认收到结算款后受理退货;若商户当天未把结算款结算至资方指定银行账户,资方会拒绝退货申请;',
+                        },
+                        {
+                            title: '用户办单完成后后续如何还款?',
+                            course: '用户每月20号以前需根据合约资费充值话费,若用户当月未充值话费,资方会从每月27日开始向用户银行卡代扣当月应还本金及利息;',
+                        },
+                        {
+                            title: '用户不还款是否会影响征信?',
+                            course: '若用户当月未缴话费,资方会从当月27号开始对用户银行卡进行代扣,若连续5个工作日均代扣失败,资方会上报人行征信;',
+                        },
+                        {
+                            title: '智享花对用户年龄是否有限制?',
+                            course: '需要用户年龄在 22-55 岁之间;',
+                        },
+                        
+                    ]
+                    this.specialQueList = [
+                        {
+                            course:'1. 每个用户在花呗有自己的额度,只能在可用额度内办单,智享花是针对用户所选择合约、商品及个人情况综合评估判断能否办单;',
+                        },
+                        
+                    ]
+                }
+            },
+            //返回上一级按钮
+            onClickLeft() {
+            this.$router.go(-1);
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+.vjs-big-play-button{
+    // position: absolute;
+    top: 35% !important;
+    left: 35% !important;
+}
+.getQRCode{
+    background: #F5F5F7;
+    width: 96%;
+    padding: 0 2%;
+    height: 100%;
+}
+.course-text{
+    color: #999999;
+    font-size: 12px;
+    line-height: 18px;
+    background-color: #fff;
+    // padding: 19px 15px 22px 12px;
+}
+.course-text-c{
+    // color: #666666;
+    // font-size: 12px;
+    // line-height: 18px;
+    // background-color: #fff;
+    // padding: 19px 15px 22px 12px;
+    &-img{
+        width: 100%;
+        img{
+            width: 100%;
+            height: 100%;
+        }
+    }
+}
+/deep/.van-collapse-item__content{
+    border-bottom: 1px solid #EEEEEE;
+}
+.message-head{
+    position: relative;
+}
+.table-active{
+    overflow: hidden;
+    margin-top: 40px;
+}
+.van-collapse-item{
+    margin: 0;
+}
+.question-title{
+    font-size: 12px;
+    color: #333;
+}
+/deep/.question-title{
+    font-weight: normal;
+}
+/deep/.van-collapse-item{
+    border-bottom: 1px solid #EEEEEE;
+}
+.course-text-item{
+    line-height: 25px;
+}
+</style>
diff --git a/src/views/mdyh/overdue/ovderdueDetail.vue b/src/views/mdyh/overdue/ovderdueDetail.vue
new file mode 100644
index 0000000..9202eea
--- /dev/null
+++ b/src/views/mdyh/overdue/ovderdueDetail.vue
@@ -0,0 +1,422 @@
+
+<template>
+    <div class="getQRCode">
+        <!-- <x-header class="message-head" title="逾期用户" :left-options="{backText:''}"></x-header> -->
+        <van-nav-bar title="逾期详情" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar>
+        <div class="overdue-body">
+           <div class="overdue-body-header">
+                <div class="overdue-body-header-left">
+                    <span>{{ overdueList.prodName }}</span>
+                    <p>{{ overdueList.usrName }}</p>
+                </div>
+                <div class="overdue-body-header-right">
+                    <span>{{ overdueList.usrMbl }}</span>
+                    <a :href="'tel:' + overdueList.usrMbl"><van-icon class="phone-icon" name="phone"/></a>
+                </div>
+            </div>
+            <div class="border"></div>
+            <div class="overdue-body-content">
+                <div>
+                    <p class="overdue-body-content-day">
+                        逾期天数:
+                        <span :style="{color:(overdueList.status==0? '#FF6666' : '#666666')}">{{ overdueList.oveDay }}</span>
+                    </p>
+                    <p>
+                       应还日期:{{ overdueList.shoDate | timeformat('yyyy-MM-dd')}}
+                    </p>
+                </div>
+                <div class="overdue-body-content-total">
+                    <p >{{overdueList.status==0? "应还总额(元)" : "已还总额(元)"}}</p>
+                    <span :style="{color:(overdueList.status==0? '#FF6666' : '#666666')}">{{ overdueList.oveAmt }}</span>
+                </div>
+            </div>
+            <div class="border"></div>
+            <div class="overdue-body-store">
+                <p>渠道:<span>{{ overdueList.chanName == 9999? '无' : overdueList.chanName }}</span></p>
+                <p>办理商户:<span>{{ overdueList.merName }}</span></p>
+                <p>办理门店:<span>{{ overdueList.storeName }}</span></p>
+            </div>
+        </div>
+        <div class="gj-body">
+            <div class="gj-body-header">
+                <p class="gj-body-header-title">跟进记录</p>
+                <div class="gj-body-header-add" @click="showAddModel">
+                    新增+
+                </div>
+            </div>
+            <div class="gj-body-content">
+                <div class="gj-body-content-item">
+                    <!-- <div class="gj-body-content-item-label">
+                        <span></span>
+                        <div></div>
+                    </div> -->
+                    <div class="step" v-for="(item, index) in msgList" :key="index">
+                        <span class="spot"></span>
+                        <div class="step-content" v-if="msgList.length == index+1" style="border: none;padding-bottom: 0px;">
+                            <p class="gj-body-content-item-msg">{{ item.folCont }} </p>
+                            <span>{{ item.creTime | timeformat('yyyy-MM-dd HH:mm')}}</span>
+                            <span>{{ item.mgrName }}</span>
+                            <span v-if="item.isOpr == 1" style="color: #4A75FF; margin-left:15px;" @click="showAddModel(this, 'edit', item.folCont, item.folId)">编辑</span>
+                        </div>
+                        <div class="step-content" v-else>
+                            <p class="gj-body-content-item-msg">{{ item.folCont }} </p>
+                            <span>{{ item.creTime | timeformat('yyyy-MM-dd HH:mm')}}</span>
+                            <span>{{ item.mgrName }}</span>
+                            <span v-if="item.isOpr == 1" style="color: #4A75FF; margin-left:15px;" @click="showAddModel(this, 'edit', item.folCont, item.folId)">编辑</span>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <!-- 新增记录模态窗 -->
+            <van-popup v-model="showAdd" class="addModel">
+                <div class="addModel-title">{{ modelTitle }}</div>
+                <div class="addModel-textarea">
+                    <textarea name="" id="" cols="30" rows="10" placeholder="请输入跟进记录" maxlength="100" v-model="val" @keydown="textareaChange" @keyup="textareaChange"></textarea>
+                    <span><i>{{ textSum }}</i>/100</span>
+                </div>
+                <div class="addModel-btn">
+                    <van-button class="btnNo" type="default" round @click='showAdd = false'>取消</van-button>
+                    <van-button class="btnYes" type="default" round @click='AddRec'>提交</van-button>
+                </div>
+            </van-popup>               
+        </div>
+    </div>
+</template>
+<script>
+import { XHeader } from 'vux';
+import { dateFormat} from 'vux';
+import Vue from 'vue';
+import { Notify } from 'vant';
+
+Vue.use(Notify);
+    export default {
+        name: 'message',
+        components: {
+             XHeader,
+        },
+        data() {
+            return {
+                id: this.$route.query.overdueId,
+                val: '',
+                textSum: 0,
+                msgList:[],
+                showAdd: false,
+                overdueList: {}, 
+                modelTitle: '新增跟进记录', //模态窗标题
+                folCount: '', 
+                folId: '',
+            }
+        },
+        created() {
+            this. overdueInt();
+        },
+        methods: {
+            //新增跟进记录模态窗textarea键盘事件
+            textareaChange() {
+                // this.val = this.val.slice(0,100)
+                // console.log(this.val.length)
+                this.textSum = this.val.length;
+            },
+            //显示新增跟进记录模态窗
+            showAddModel(e, val, folCount, folId) {
+                 this.modelTitle = '新增跟进记录'
+                 this.val = '';
+                if(val == 'edit') {
+                    console.log(folCount);
+                    console.log(folId);
+                    this.modelTitle = '编辑跟进记录';
+                    // this. folCount = folCount;
+                    this.folId = folId;
+                    this.val = folCount;
+                }
+                this.showAdd = true;
+                
+            },
+            //新增跟进记录模态窗确认事件
+            AddRec() {
+                console.log(this.val == null || this.val =='')
+                if(this.val == null || this.val =='') {
+                    Notify({ type: 'danger', message: '请输入跟进记录'});
+                } else {
+                    let date = {}
+                    date.oveId = this.id;
+                    date.folCont = this.val;
+                    if(this.modelTitle == '编辑跟进记录') {
+                        date.folId = this.folId;
+                    }
+                    console.log(date)
+                    this.$api.overdueSaveOveFol(date).then(res => {
+                         this.showAdd = false;
+                         this.folId = '';
+                         this.folCount = '';
+                         this.$router.go(0);
+                    })
+                }
+            },
+            overdueInt() {
+                // this.$api.overdueList().then(res => {
+                //     console.log(res.body)
+                //     // this.id = 1111;
+                //     this.overdueList = res.body.map(item => {
+                //         if(item.id == this.id) {
+                //             return item
+                //         }
+                //     });
+                //     this.overdueList = this.overdueList[0]
+                //     console.log( this.overdueList)
+                // })
+                this.$api.overdueDetail({oveId: this.id}).then(res => {
+                    // console.log(res.body);
+                    this.overdueList = res.body;
+                    this.msgList = res.body.overFolInfList
+                })
+
+            },
+            //返回上一级按钮
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+// src='../../../../style/mixins.less'
+// @import'@/style/mixins.less';
+.step{
+    .flexLayout(flex-start, center);
+    position: relative;
+    margin-bottom: 5px;
+    // padding-left: 28px;
+    &-content{
+        // padding-left: 28px;
+        margin-left: 15px;
+        padding-left: 17px;
+        border-left: 1px solid #E6E6E6;
+        padding-bottom: 30px;
+        span{
+            color: #999999;
+        }
+    }
+}
+.phone-icon{
+    width: 20px;
+    height: 20px;
+    background: rgba(137,110,219,1);
+    border-radius: 20px;
+    color: #fff;
+    line-height: 20px;
+    text-align: center;
+    transform: translateY(1px);
+}
+.spot{
+    width: 7px;
+    height: 7px;
+    background: rgba(255,255,255,1);
+    border: 2px solid rgba(204,204,204,1);
+    border-radius: 50%;
+    position: absolute;
+    top: 0;
+    left: 10px;
+    margin-right: 10px;
+}
+.getQRCode{
+    background: #F5F5F7;
+    width: 100%;
+    height: 100%;
+}
+.message-head{
+    position: relative;
+}
+.addModel{
+    width: 280px;
+    border-radius: 6px;
+    // height: 275px;
+    background-color: #fff;
+    &-title{
+        color: #000;
+        font-size: 14px;
+        height: 58px;
+        line-height: 58px;
+        text-align: center;
+    }
+    &-textarea{
+        textarea{
+            width: 227px;
+            height: 130px;
+            margin-left: 18px;
+            // margin: 0 auto;
+            position: relative;
+            border:1px solid rgba(230,230,230,1);
+            color: #999999;
+            padding: 0 8px;
+            padding-top: 15px;
+        }
+        span{
+            font-size: 12px;
+            color: #999999;
+            position: absolute;
+            right: 20px;
+            bottom: 83px;
+        }
+    }
+    &-btn{
+        height: 77px;
+        .flexLayout(center, center); 
+        .van-button{
+            width:110px;
+            height:36px;
+            background:rgba(238,238,238,1);
+            background:rgba(0,0,0,0.72);
+            border-radius:36px;
+            color: #FFFFFF;
+            font-size: 16px;
+            line-height: 36px;
+        }
+        .btnNo{
+            background: #EEEEEE;
+            color: #666666;
+            margin-right: 10px;
+            font-size: 16px;
+        }
+        .btnYes{
+            background: #896EDB;
+            font-size: 16px;
+        }
+    }
+}
+.overdue-body{
+    overflow: hidden;
+    width: 92%;
+    margin: 10px 2%;
+    padding: 0 2%;
+    background-color: #fff;
+    font-weight:500;
+    color:rgba(102,102,102,1);
+    &-header{
+        height: 50px;
+        .flex(space-between, center);
+        &-left{
+            .flex(flex-start, center);
+            span{
+                width: 68px;
+                height: 20px;
+                line-height: 20px;
+                font-size: @font-12;
+                text-align: center;
+                background: rgba(66,61,93,1);
+                border-radius: 10px;
+                font-weight:500;
+                color:rgba(255,255,255,1);
+                margin-right: 12px;
+            }
+            p{
+                font-weight:bold;
+                color:rgba(51,51,51,1);
+                font-size: 16px;
+            }
+        }
+        &-right{
+            span{
+                font-weight:500;
+                color:rgba(102,102,102,1);
+                font-size: 13px;
+            }
+        }
+    }
+    .border{
+        height:1px;
+        background:rgba(238,238,238,1);
+        width: 100%;
+    }
+    &-content{
+        height: 48px;
+        padding: 10px 0;
+        font-size: @font-14;
+        .flex(space-between, center);
+        p{
+            margin-bottom: 5px;
+        }
+        span{
+            color: #FF6666;
+            font-family: "微软雅黑";
+        }
+        &-day{
+            margin-top: 12px;
+        }
+        &-total{
+            span{
+                font-size: 24px;
+                font-weight: bold;
+                font-family: "微软雅黑";
+            }
+        }
+    }
+    &-store{
+        // height: 153px;
+        // line-height: 51px;
+        padding:  18px 0;
+        p{
+            margin-top: 10px;
+        }
+        :first-child{
+            margin-top: 0;
+        }
+    }
+    &-channel{
+        height: 30px;
+        line-height: 30px;
+    }
+}
+.gj-body{
+    overflow: hidden;
+    width: 92%;
+    margin: 10px 2%;
+    padding: 0 2%;
+    background-color: #fff;
+    font-weight:500;
+    color:rgba(102,102,102,1);
+    &-header{
+         .flex(space-between, center);
+         padding-top: 14px;
+         &-title{
+             font-weight: bold;
+             color: #333;
+         }
+         &-add{
+            text-decoration:underline;
+            color:rgba(137,110,219,1);
+            font-size: 14px;
+         }
+    }
+    &-content{
+        margin-top: 25px;
+        color: #666;
+        font-size: 13px;
+        &-item{
+            // margin-left: 18px;
+            // .flex(space-between, center);
+            &-msg{
+                margin-bottom: 10px;
+            }
+            &-label{
+                height: 100%;
+                span{
+                    width:9px;
+                    height:9px;
+                    background:rgba(255,255,255,1);
+                    border:2px solid rgba(204,204,204,1);
+                    border-radius:50%;
+                }
+                div{
+                    width:2px;
+                    // height:60px;
+                    height: 96%;
+                    background:rgba(230,230,230,1);
+                }
+            }
+        }
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/mdyh/overdue/overdue.vue b/src/views/mdyh/overdue/overdue.vue
new file mode 100644
index 0000000..2f41be6
--- /dev/null
+++ b/src/views/mdyh/overdue/overdue.vue
@@ -0,0 +1,446 @@
+
+<template>
+    <div class="overdue">
+        <div class="top" :style="{background:$store.state.defaultBgColor}">
+            <van-nav-bar title="风控订单" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;" class="navBar">
+                <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+                <span slot="right"  @click="isShow = true;">筛选</span>
+            </van-nav-bar>
+            <div class="tabBar">
+                <div class="tabBar_item" @click="changeOrderType(1)">
+                    <p>投诉订单</p>
+                    <p class="line" v-show="orderTypeNum == 1"></p>
+                </div>
+                <div class="tabBar_item" @click="changeOrderType(2)">
+                    <p>风险订单</p>
+                    <p class="line" v-show="orderTypeNum == 2"></p>
+                </div>
+            </div>
+        </div>
+        <div class="type">
+            <div class="type_item" v-show="orderTypeNum == 1">
+                <p class="type_num">{{unHandleNum}}笔</p>
+                <p class="complaint">投诉中</p>
+            </div>
+            <div class="type_item" v-show="orderTypeNum == 1" >
+                <p class="type_num">{{handleNum}}笔</p>
+                <p class="deal">已处理</p>
+            </div>
+            <div class="type_item" v-show="orderTypeNum != 1">
+                <p class="type_num">{{unHandleNum + handleNum}}笔</p>
+                <p>风险订单</p>
+            </div>
+        </div>
+        <!-- 订单列表-->
+        <div class="list">
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了"  @load="onLoad" :immediate-check="false" offset="10" class="loadMore">
+                <div class="list_item" v-for="(item, index) in list" :key="index" @click="go(item)">
+                    <div class="list_item_left">
+                        <p class="leftTop">{{item.userName}} <span>{{item.userMblNo}}</span></p>
+                        <p>订单状态:{{item.orderStatus}}</p>
+                        <p>订单号:{{item.orderId}}</p>
+                        <p>办单日期:{{item.creTime | dealCreTime}}</p>
+                        <p v-show="orderTypeNum == 1">投诉日期:{{item.noticeTime | dealNoticeTime}}</p>
+                        <p v-show="orderTypeNum != 1">风险识别日期:{{item.noticeTime | dealNoticeTime}}</p>
+                    </div>
+                    <div class="list_item_right">
+                        <div class="list_item_right_top" v-if="orderTypeNum == 1">
+                            <p class="typeText" :class="item.status == 1 ? 'activetypeText' : ''" v-if="orderTypeNum == 1">{{item.status | dealStatus}}</p>
+                            <p class="typebtn" v-if="orderTypeNum == 1">({{item.type}})</p>
+                        </div>
+                        <p class="typeTextFx" v-show="orderTypeNum != 1">{{item.type}}风险</p>
+                        <p class="btn" :style="{background:$store.state.defaultBgColor}" @click.stop="dealOrderStatus(item.orderId)" v-if="orderTypeNum == 1 && item.status == 0">已处理</p>
+                        <p class="btn" :style="{background:$store.state.defaultBgColor}" @click.stop="haveRead(item.orderId)" v-if="orderTypeNum != 1 && item.status == 0">已读</p>
+                    </div>
+                </div>
+            </van-list>
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+        <!-- 筛选弹出层-->
+        <v-filter v-model="isShow" 
+        :belongArr="belongArr" 
+        :periodsArr="periodsArr" 
+        :riskLevelArr="riskLevelArr" 
+        :riskTypeArr="riskTypeArr" 
+        customTitle="分期本金" 
+        :hasSearch="true" 
+        @search="(v)=>search(v,true)">
+        </v-filter>
+        <!-- 无订单展示-->
+        <div class="overdue-pic" v-if="noOrder">
+            <div class="overdue-pic-img">
+                <img src="../../../assets/imgs/yqpic.png" alt="暂无逾期">
+            </div>
+            <p class="overdue-pic-text">您目前无风控订单,请继续保持~</p>
+        </div>
+    </div>
+</template>
+<script>
+import { XHeader } from 'vux';
+import {dateFormat} from 'vux';
+export default {
+    name: 'message',
+    components: {
+        XHeader
+    },
+    data() {
+        return {
+            orderTypeNum: 1, //控制订单类型切换
+            list: [],// 订单列表
+            isShow: false, //控制筛选弹出层
+            belongArr: [], // 所属代理、渠道、商户、门店
+            periodsArr: [],// 期数
+            riskLevelArr: [],// 风险级别
+            riskTypeArr: [],// 风险种类
+            loading: false, // 上拉加载状态
+            finished: false,// 上拉加载无更多数据
+            id: '', // 上拉加载时最后一条数据orderId
+            unHandleNum: '', // 未处理订单
+            handleNum: '',// 已处理订单
+            obj: '',
+            noOrder: false
+        }
+    },
+    computed: {
+    },
+    created() {
+        this.init()
+        this.getList()
+        this.loading = true
+    },
+    filters: {
+        dealStatus(val) {
+            return val == 0 ? '投诉中' : '已处理'
+        },
+        dealCreTime(val) {
+            return dateFormat(val)
+        },
+        dealNoticeTime(val) {
+            return dateFormat(val)
+        }
+    },
+    methods: {
+        // 筛选条件数据初始化
+        init() {
+            this.$api.riskInit().then(res => {
+                this.periodsArr = res.body.insTermVoList
+                this.belongArr = res.body.orgBaseInfVoList
+                this.riskLevelArr = res.body.riskTypeList
+                this.riskTypeArr = res.body.typeList
+            })
+        },
+        // 获取风控订单列表
+        getList(type, obj) {
+            let data = {
+                chanList: [],
+                endAmt: '',
+                startDay: "",
+                endDay: "",
+                insTerm: '',
+                merList: [],
+                mgrList: [],
+                orderId: this.id || '', // 如果有最后一条数据orderId,执行为上拉加载,如不存在该字段为空。
+                orderType: type || 1,
+                queryStr: "",
+                riskType: '',
+                startAmt: '',
+                storeList: [],
+                type: ""
+            }
+            // 筛选条件下data对象值变化
+            if (this.obj) {
+                data.chanList = this.obj.chanList
+                data.merList = this.obj.merList
+                data.mgrList = this.obj.mgrList
+                data.storeList = this.obj.storeList
+                data.startDay = this.obj.startDay
+                data.endDay = this.obj.endDay
+                data.insTerm = this.obj.insTerm
+                data.startAmt = this.obj.startAmt
+                data.endAmt = this.obj.endAmt
+                data.queryStr = this.obj.queryStr
+                data.riskType = this.obj.riskLevelArrCode
+                data.type = this.obj.riskTypeArrCode
+            }
+            this.$api.riskList(data).then(res => {
+                this.unHandleNum = res.body.unHandleNum
+                this.handleNum = res.body.handleNum
+                if (this.id) {
+                    this.list = [...this.list, ...res.body.items]
+                    this.loading = false
+                    if (!res.body.items.length) {
+                        this.finished = true
+                        this.id = ''
+                    }
+                } else {
+                    this.list = res.body.items
+                    if (!res.body.items.length) {
+                        this.loading = false
+                        this.noOrder = true
+                    }
+                }
+                this.loading = false
+            })
+        },
+        // 返回上一级
+        onClickLeft() {
+            this.$router.go(-1)
+        },
+        // 切换风控订单类型
+        changeOrderType(num) {
+            this.finished = false
+            this.id = ''
+            if (num == 1) {
+                this.orderTypeNum = 1
+                this.getList(1)
+            } else {
+                this.orderTypeNum = 2
+                this.getList(2)
+            }
+            
+        },
+        // 上拉加载获取最后一条数据id再查询
+        onLoad() {
+            this.id = this.list[this.list.length - 1].orderId
+            this.getList(this.orderTypeNum)
+        },
+        // 处理投诉订单
+        dealOrderStatus(id) {
+            this.$api.riskHandle({orderId: id}).then(res => {
+                this.getList(this.orderTypeNum)
+                this.$notify({type: 'success', message: '处理成功'})
+                this.finished = false
+            })   
+        },
+        // 已读风险订单
+        haveRead(id) {
+            this.$api.riskHandle({orderId: id}).then(res => {
+                this.getList(this.orderTypeNum)
+                this.$notify({type: 'success', message: '处理成功'})
+                this.finished = false
+            })
+        },
+        // 筛选
+        search(v,isClear){
+            this.obj = v
+            this.getList(this.orderTypeNum)
+            this.isShow = false
+        },
+        // 导出订单列表
+        exportFile() {
+            if (!this.list.length) {
+                this.$notify('暂无数据导出')
+                return
+            }
+            this.$api.riskExport({orderType: this.orderTypeNum}).then((res) => {
+                this.$notify({type: 'success', message: '导出成功'})
+            }).catch((err) => {})
+        },
+        // 根据不同的typeId进入详情页
+        go(item) {
+            let path = ''
+            if (item.prodId == '30000003') {// 用户贴息
+                path = `product/hb-detail?id=${item.orderId}`
+            } else if (item.prodId == '30000009') { // 商品消费
+                path = `product/hb-detail?id=${item.orderId}`
+            } else if (item.prodId == '30000010') { // 商户贴息
+                path = `product/shtx-detail?id=${item.orderId}`
+            } else if (item.prodId == '30000012') { // 运营商消费花呗分期
+                path = `product/xyg-hb-detail?id=${item.orderId}`
+            } else if (item.prodId == '30000008') { // 商户收款
+                path = `product/dmf-detail?id=${item.orderId}`
+            }
+            this.$router.push(path)
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+.overdue{
+    background: #F5F5F7;
+    width: 100vw;
+    height: 100vh;
+    font-family: PingFang SC;
+    .top {
+        width: 100vw;
+        height: 124px;
+        background: linear-gradient(180deg, #9072EB, #6F61D7);
+        /deep/ .van-nav-bar {
+            color: #fff;
+            background:rgba(255,0,0,0);
+            border: none;
+        }
+        /deep/ .van-nav-bar__title {
+            color: #fff;
+        }
+        /deep/ .van-hairline--bottom::after {
+            border-bottom-width: 0;
+        }
+        .tabBar {
+            width: 100vw;
+            height: 36px;
+            display: flex;
+            justify-content: space-around;
+            .tabBar_item {
+                height: 15px;
+                font-size: 15px;
+                font-weight: bold;
+                color: #FFFFFF;
+                .line {
+                    width: 32px;
+                    height: 2px;
+                    display: block;
+                    background: #FFFFFF;
+                    border-radius: 1px;
+                    margin: 0 auto;
+                    margin-top: 10px;
+                }
+            }
+        }
+    }
+    .type {
+        width: 95%;
+        height: 72px;
+        background: #FFFFFF;
+        box-shadow: 0px 3px 8px 0px rgba(217, 208, 231, 0.3);
+        border-radius: 3px;
+        margin: 0 auto;
+        margin-top: -30px;
+        display: flex;
+        justify-content: space-around;
+        align-items: center;
+        .type_item {
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+            align-items: center;
+            color: #999;
+            .type_num {
+                font-size: 18px;
+                color: #333333;
+                font-weight: bold;
+                margin-bottom: 8px;
+            }
+            .complaint {
+                font-size: 14px;
+                color: #FF7A7A;
+            }
+            .deal {               
+                font-size: 14px;
+                color: #71CD9F;
+            }
+        }
+    }
+    .list {
+        width: 100%;
+        margin-top: 20px;
+        .loadMore {
+            width: 100%;
+            display: flex;
+            flex-direction: column;
+            justify-content: flex-start;
+            align-content: center;
+            align-items: center;
+        }
+        .list_item {
+            width: 95%;
+            height: 121px;
+            margin-right: calc(100% - 100vw);
+            background: #FFFFFF;
+            box-shadow: 0px 0px 7px 0px rgba(217, 208, 231, 0.28);
+            border-radius: 3px;
+            margin-bottom: 10px;
+            padding: 16px 16px 12px 19px;
+            box-sizing: border-box;
+            display: flex;
+            flex-shrink: 0;
+            .list_item_left {
+                width: 75%;
+                height: 12px;
+                font-size: 12px;
+                font-weight: 500;
+                color: #999999;
+                display: flex;
+                flex-direction: column;
+                .leftTop {
+                    font-size: 14px;
+                    font-weight: 500;
+                    color: #333333;
+                     margin-top: 0px;
+                    span {
+                        margin-left: 13px;
+                    }
+                }
+                p {
+                    margin-top: 6px;
+                }
+            }
+            .list_item_right {
+                width: 25%;
+                display: flex;
+                flex-direction: column;
+                justify-content: space-between;
+                align-items: center;
+                .list_item_right_top {
+                    // width: 100%;
+                    .typeText {
+                        height: 16px;
+                        font-size: 16px;
+                        font-family: PingFang SC;
+                        font-weight: bold;
+                        color: #FF7A7A;
+                        text-align: center;
+                    }
+                }
+                .typeTextFx {
+                    height: 16px;
+                    font-size: 16px;
+                    font-family: PingFang SC;
+                    font-weight: bold;
+                    color: #FF7A7A;
+                    text-align: center;
+                }
+                .activetypeText {
+                    color: #71CD9F;
+                }
+                .typebtn {                 
+                    font-size: 12px;
+                    font-family: PingFang SC;
+                    color: #999999;
+                    margin-top: 5px;
+                    text-align: center;
+                }
+                .btn {
+                    width: 77px;
+                    height: 28px;
+                    background: linear-gradient(90deg, #8F6AFF, #9459EC);
+                    box-shadow: 0px 4px 7px 0px rgba(99, 19, 232, 0.25);
+                    border-radius: 14px;              
+                    font-size: 14px;
+                    font-weight: 500;
+                    color: #FFFFFF;
+                    text-align: center;
+                    line-height: 28px;
+                }
+            }
+        }
+    }
+    .overdue-pic{
+        margin-top: 117px;
+        text-align: center;
+        &-img{
+            width: 100%;
+            img{
+                width: 164px;
+                height: 112px;
+                display: inline-block;
+            }
+        }
+        &-text{
+            font-size: 14px;
+            color: #333333;
+            margin-top: 24px;
+        }
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/mdyh/product/productMent.vue b/src/views/mdyh/product/productMent.vue
new file mode 100644
index 0000000..ed5aa3d
--- /dev/null
+++ b/src/views/mdyh/product/productMent.vue
@@ -0,0 +1,761 @@
+<!--
+ * @Descripttion:
+ * @Author: WD丶
+ * @Date: 2019-08-19 09:20:27
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-09 20:30:28
+ -->
+<template>
+    <div class="business-center">
+        <!-- <x-header class="head-title" title="产品管理" :left-options="{backText:'',showBack:false}"></x-header> -->
+        <van-nav-bar title="产品管理" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar>
+        <!-- 顶部轮播 -->
+        <!-- <div class="content" v-if="installmentList.length">
+            <div class="content-title">
+                办理分期
+            </div>
+            <div class="nav-code" v-if="hasDmf" @click="goDmf">
+                <i class="icon iconfont scene_Staging-scan" style="font-size:45px"></i>
+                <p>支付宝扫码收款</p>
+            </div>
+            <div class="installment-box ">
+                <div class="item " v-for="(i,index) in installmentList" :key="index" @click="go(i)">
+                    <i v-if="i.prodId == 33000001" class="iconfont" :class="i.icon" :style="{color:i.active?'#B036F6':'#a3a3a3'}"></i>
+                    <i v-else class="iconfont" :class="i.icon" :style="{color:i.active?'#bfa073':'#a3a3a3'}"></i>
+                    <p v-text="i.typeName"></p>
+                </div>
+                <div class="item " @click="shsClick">
+                    <i class="iconfont scene_Staging-shanhuishou" :style="{color:'#bfa073'}"></i>
+                    <p>闪回收</p>
+                </div>
+            </div>
+        </div> -->
+        <div class="content">
+            <!-- <div class="content-title">
+                办理分期
+            </div> -->
+            <div class="installment-box ">
+                
+                <div class="item " v-for="(i,index) in installmentList" :key="index" @click="go(i)">
+                    <!-- <i v-if="i.prodId == 33000001" class="iconfont" :class="i.icon" :style="{color:i.active?'#B036F6':'#a3a3a3'}"></i>
+                    <i v-else class="iconfont" :class="i.icon" :style="{color:i.active?'#bfa073':'#a3a3a3'}"></i> -->
+                    <i v-if="i.prodId == 33000001" class="iconfont" :class="i.icon" style="color:#B036F6"></i>
+                    <i v-else class="iconfont" :class="i.icon" style="color:#bfa073"></i>
+                    <p v-text="i.typeName"></p>
+                </div>
+                <div class="item " @click="shsClick">
+                     <img class="item-logo" src="../../../assets/img/shs.png" alt="闪回收">
+                    <p>闪回收</p>
+                </div>
+                <div class="nav-code" v-if="hasDmf"  @click="goDmf">
+                    <div class="nav-code-logo">
+                        <img src="../../../assets/img/shsk.png" alt="商户收款">
+                    </div>
+                    <p>商户收款</p>
+                </div>
+            </div>
+
+        </div>
+        <f-confirm v-model="showModal" showIcon iconClass='scene_Staging-shenhezhong' iconColor='#fff'
+            :showCancelBtn='false'>
+            <div>{{ tipText }}</div>
+        </f-confirm>
+
+
+        <div class="dialog">
+            <x-dialog v-model="showDialogStyle" @on-hide='clearTel'
+                :dialog-style="{'max-width': '100%', width: '100%', height: '50%', 'background-color': 'transparent'}">
+                <img class="logo" src="@/assets/imgs/img_details.png" alt="">
+                <div class="dialog-content" >
+                    <p class="text" @click="copyLink">
+                        将发送花呗提额链接
+                        <span class="blue">http://t.cn/AiTDRMMO</span>
+                        至以下手机号
+                    </p>
+                    <div class="input-box">
+                        <i class="icon iconfont scene_Staging-shoujihao"></i>
+                        <input v-model="mblNo" class="input" :class="[errorMsg ? 'error':'']" type="tel" maxlength="11"
+                            placeholder="请输入接收短信的手机号码" @focus="errorMsg = '';" @blur="changeBlur">
+                    </div>
+                    <p class="errmsg">{{errorMsg}}</p>
+                    <button class="btn" @click.stop="hbLinesSMS">发送短信</button>
+                </div>
+                <van-icon name="cross" size='36' color="#fff" class="close" @click.stop="showDialogStyle =false;"></van-icon>
+            </x-dialog>
+        </div>
+
+    </div>
+</template>
+<script>
+    import {
+        XHeader,
+        XDialog,
+    } from 'vux';
+    import FBlock from '@/components/old/FBlock';
+    import FConfirm from '@/components/old/FConfirm';
+    import {
+        _copyToClipboard
+    } from '@/utils/index';
+    import { mapState, mapGetters } from 'vuex';
+    import { async } from 'q';
+    import Vue from 'vue';
+    import { Toast } from 'vant';
+
+    Vue.use(Toast);
+// import { mapState } from 'vuex';
+    export default {
+        name: 'business-center',
+        components: {
+            XHeader,
+            FBlock,
+            FConfirm,
+            XDialog
+        },
+        data() {
+            return {
+                errorMsg: '',
+                mblNo: '',
+                showDialogStyle: false,
+                showModal: false,
+                tipText: '敬请期待...',
+                installmentList: [],
+                dmfprod_list: [],
+                shsUrl:'',
+                // swiperList: [],
+                // messageList: [],
+                messageId: '',
+                oveNum: '',
+            };
+        },
+        computed:{
+            ...mapState(['userinfo', 'msgCount']),
+            ...mapGetters(['orgType']),
+            hasDmf(){
+                return this.dmfprod_list.length && this.dmfprod_list[0].openStatus!=0;
+            }
+        },
+        created() {
+            // this.indexInit()
+            this.getShsUrl();
+            this.$api.prodList({
+                pageType: 2
+            }).then(res => {
+                let list = res.body.prodTypeRespVoList2 || [];
+                this.dmfprod_list = res.body.prodTypeRespVoList1 || [];
+                list.forEach(item => {
+                    item.active = item.openStatus === 2;
+                });
+
+                this.installmentList.push(...list);
+            });
+             this.$api.overdueNum().then(res => {
+                // console.log(res.body)
+                 this.oveNum = res.body;
+                // this.$nextTick(() => {
+                // })
+                console.log(this.oveNum)
+            })
+        },
+        methods: {
+            //初始化banner,notice
+            // indexInit() {
+            //     this.$api.indexInit().then(res => {
+            //         console.log(res.body)
+            //         this.swiperList = res.body.bannerInfoVos
+            //         this.messageList = res.body.noticeInfos.noticeInfos
+            //         // if(res.body.bannerInfoVos == null){
+            //         //     this.showSwiper = false;
+            //         // }
+            //         // if(res.body.noticeInfos.noticeInfos == null){
+            //         //     this.showNotice = false;
+            //         // }
+            //     })
+            // },
+            //点击banner跳转到主要内容
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+            toBdCourse(e, name) {
+                console.log(name)
+                // if(name == '合约分期') {
+                //     Toast('商品分期教程功能暂未开通,敬请期待')
+                // } else {
+                    let sum = '';
+                    let fileName = '';
+                    if(name == '商品分期') {
+                        sum = 7
+                        fileName = 'hbfq/'
+                    }
+                    if(name == '智享花') {
+                        sum = 9;
+                        fileName = 'zxh/'
+                    }
+                    if(name == '合约分期') {
+                        sum = 3;
+                        fileName = 'hyfq/'
+                    }
+                    console.log(sum)
+                    this.$router.push(`/bdCourse?courseName=${name}&&sum=${sum}&&fileName=${fileName}`)
+                // }
+            },
+            jump(id) {
+                this.$router.push(`/bannerContent?bannerId=${id}`)
+            },
+            //跳转到逾期界面..
+            toOverdue() {
+                this.$router.push('/overdue')
+            },
+            shsClick(){
+                location.href = this.shsUrl;
+            },
+            toMessage(e,id) {
+                this.$router.push(`/message?messageId=${id}`)
+            },
+            getShsUrl(){
+                this.$api.getShsUrl().then((res) => {
+                    this.shsUrl = res.body.url;
+                }).catch((err) => {
+
+                });
+            },
+            goDmf(){
+                let item = this.dmfprod_list[0];
+                this.$router.push(`/facepay/calcmoney?typeId=${item.typeId}&prodId=${item.prodId}`)
+                // this.$router.push(`/order/dmf?typeId=${item.typeId}&prodId=${item.prodId}`)
+            },
+            changeBlur() {
+                let u = navigator.userAgent,
+                    app = navigator.appVersion;
+                let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
+                if (isIOS) {
+                    setTimeout(() => {
+                        const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0
+                        window.scrollTo(0, Math.max(scrollHeight - 1, 0))
+                    }, 200)
+                }
+            },
+
+            
+
+
+            clearTel() {
+                this.mblNo = '';
+                this.errorMsg = '';
+            },
+            // 复制链接
+            copyLink() {
+                let isCopy = _copyToClipboard('http://t.cn/AiTDRMMO')
+                this.$tool.toast('链接已复制');
+            },
+            // 花呗提额功能
+            hbLinesSMS() {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.mblNo)) {
+                    this.errorMsg = '*请输入手机号';
+                    return;
+                }
+                if (!v.checkPhone(this.mblNo)) {
+                    this.errorMsg = '*请输入正确的手机号';
+                    return;
+                }
+                this.$api.hbLinesSMS({
+                    mblNo: this.mblNo,
+                    content: 'http://t.cn/AiTDRMMO'
+                }).then((res) => {
+                    this.showDialogStyle = false;
+                    setTimeout(() => {
+                        this.$tool.toast('短信发送成功');
+                    }, 500);
+                }).catch((err) => {
+
+                });
+            },
+            // flag 代表是产品 还是收款的标志(flag为true代表收款)
+            go(item, flag = false) {
+                if (item.active) {
+                    let path = '';
+                    item.typeId = Number(item.typeId);
+                    switch (item.typeId) {
+                        case 200001:
+                            path = '/credit-installment';
+                            break;
+                        case 200002:
+                            path = '/hb-credit-installment';
+
+                            break;
+                        case 200003:
+                            path = '/mobile-installment';
+
+                            break;
+                        case 200004:
+                            path = '/contract-installment';
+
+                            break;
+                        case 200005:
+                            path = '/hryd/createcode';
+                            break;
+                        case 200009:
+                            path = '/hbhy-installment';
+                            break;
+                        case 200010:
+                            path = '/hb-merchant-installment';
+                            break;
+                    }
+                    // 花呗提额弹窗显示
+                    if (item.prodId == 33000001) {
+                        this.showDialogStyle = true;
+                        return
+                    }
+                    this.$router.push({
+                        path,
+                        query: {
+                            typeId: item.typeId,
+                            prodId: item.prodId,
+                        }
+                    });
+                } else {
+                    if(item.typeId == 200005) {
+                        if (item.statusType == 3) {
+                            this.tipText = '商户未开通该产品';
+                        } else if (item.statusType == 4 ) {
+                            this.tipText = '门店未开通该产品';
+                        } else if (item.statusType == 5) {
+                            this.tipText = '营业员未开通该产品';
+                        } else {
+                            this.tipText = '敬请期待...';
+                        }
+                    } else{
+                        this.tipText = flag ? '敬请期待...' :  '商户未开通该产品';
+                    }
+                    this.showModal = true;
+                }
+            },
+        },
+
+    };
+</script>
+<style lang='less' scoped>
+    // @import '../../style/mixin';
+    .cus-service{
+        position: absolute;
+        top: 10px;
+        right: 10px;
+        z-index: 1;
+        width: 24px;
+        height: 24px;
+        background: rgba(0,0,0,1);
+        opacity: 0.3;
+        border-radius: 50%;
+        text-align: center;
+        line-height: 24px;
+        i{
+            color: #fff !important;
+            font-size: 16px;
+        }
+    }
+    .head-title{
+        z-index: 10;
+    }
+    // 顶部轮播
+    .swiper-banner {
+        width: 100%;
+        height: 150px;
+        margin: 0 auto;
+        overflow: hidden;
+        position: relative;
+        margin-top:-10px;
+        padding: 0;
+        .vipBg {
+            width: 100%;
+            height: 160px;
+            background-size: 100% 100%;
+            background-repeat: no-repeat;
+            // background-image: url("../../../assets/img/bg-qr-code.png");
+        }
+
+        .my-swiper-banner {
+            height: 150px;
+            width: 100%;
+        }
+    }
+    //播报 部分
+    .category {
+        height: 30px;
+        position: relative;
+        width: 94%;
+        padding: 0 3%;
+        background: #fff;
+        .bobao {
+            background: rgba(255, 255, 255, 1);
+            border-radius: 5px;
+            width: 100%;
+
+        }
+        .notice-log{
+            position: absolute;
+            top: 0;
+            left: 15px;
+            font-size: 20px;
+            line-height: 30px;
+        }
+    }
+    .my-swiper-notice{
+        width: 100%;
+        margin: 0 auto;
+        overflow: hidden;
+        // .flexLayout(flex-start, center, row);
+        // flex-wrap: nowrap;
+    }
+    .swipe-item-box{
+        display: flex;
+        flex-direction: column;
+        justify-content: flex-start;
+        align-items: center;
+        width: 100% !important;
+    }
+    .notice-item-title{
+        height: 30px;
+        line-height: 30px;
+        font-size: 12px;
+        margin-left: 20px;
+        white-space: nowrap;
+        color: @c-text-999;
+    }
+    .notice-item {
+        line-height: 30px;
+        width: 230px;
+        word-wrap: normal;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        font-size: 12px;
+        // padding-right: 20px;
+        color: @c-text-999;
+    }
+    .notice-item-f{
+        color: @c-text-999;
+    }
+    .business-center {
+        // padding-top: 54px;
+        .installment-box {
+            .flexLayout(flex-start, center, row);
+            flex-wrap: wrap;
+            background: #fff;
+            padding: 15px 0;
+            .item {
+                margin-bottom: 15px;
+                // width: 33.33%;
+                width: 25%;
+                text-align: center;
+                i {
+                    font-size: 36px;
+                }
+
+                p {
+                    font-size: 12px;
+                    color: #3a3a3a;
+                }
+                .item-logo{
+                    display: block-line;
+                    vertical-align: middle;
+                    width: 45px;
+                    height: 45px;
+                    margin-left: auto;
+                }
+            }
+        }
+    }
+    .nav-code {
+        // display: flex;
+        // flex-direction: column;
+        // justify-content: center;
+        // align-items: center;
+        // text-align: center;
+        // height: 120px;
+        // background-color: #fff;
+        // color: #bb8b52;
+        // margin-top: 15px;
+        .flexLayout(center, center, row);
+        width: 335px;
+        height: 50px;
+        margin: 12px;
+        margin-bottom: 0;
+        border: 1px solid rgba(217,217,217,1);
+        border-radius: 6px;
+        &-logo{
+            width: 36px;
+            height: 36px;
+            margin-right: 12px;
+            img{
+                width: 100%;
+                height: 100%;
+            }
+        }
+        p{
+            font-size: 16px;
+        }
+    }
+    .merCollection{
+        width: 94%;
+        margin: 0 3%;
+        height: 50px;
+        border:  1px dashed #D9D9D9;
+        .flexLayout(center, center, row);
+        i{
+            font-size: 36px;
+            margin-right: 10px;
+        }
+    }
+
+    .dialog {
+        position: relative;
+
+        .dialog-content {
+            background-color: #fff;
+            width: 300px;
+            height: 270px;
+            margin: 0 auto;
+            padding: 40px 15px 0;
+            box-sizing: border-box;
+            border-radius: 5px;
+        }
+
+        .text {
+            width: 150px;
+            font-size: 14px;
+            margin: 0 auto;
+            color: #666666;
+
+            .blue {
+                color: #4074F8;
+                text-decoration: underline;
+            }
+        }
+
+        .input-box {
+            height: 44px;
+            .flexLayout(flex-start, center);
+            padding-left: 10px;
+            border: 1px solid rgba(230, 230, 230, 1);
+            width: 250px;
+            margin: 20px auto 0;
+            box-sizing: border-box;
+
+            .icon {
+                position: relative;
+                padding-right: 10px;
+
+                &::after {
+                    content: '';
+                    display: block;
+                    position: absolute;
+                    right: 0;
+                    top: 50%;
+                    transform: translateY(-50%);
+                    width: 1px;
+                    height: 15px;
+                    background-color: #3A3A3A;
+
+                }
+            }
+
+            .input {
+                margin-left: 10px;
+                padding: 10px 0;
+                flex: 1;
+                font-size: 12px;
+                border: none;
+                outline: none;
+
+                &.error {
+                    color: #FE2A2A;
+                }
+            }
+        }
+
+        .errmsg {
+            text-align: left;
+            margin-left: 10px;
+            margin-bottom: 20px;
+            height: 15px;
+            color: #FE2A2A;
+            font-size: 10px;
+        }
+
+        .btn {
+
+            width: 250px;
+            height: 44px;
+            text-align: center;
+            outline: none;
+            border: none;
+            background-color: #3A3A3A;
+            color: #fff;
+        }
+
+        .logo {
+            width: 64px;
+            height: 64px;
+            transform: translateY(32px);
+        }
+
+        .close {
+            margin-top: 20px;
+        }
+
+    }
+    //逾期
+    .overdue-box{
+     width: 96%;
+     margin: 12px 2%;
+     background: #fff;
+     border-radius:6px;
+     .flexLayout(space-between, center);
+     height: 80px;
+     &-text{
+         padding: 0 10px;
+         font-size: 16px;
+         color: #333;
+         :nth-child(1){
+             span{
+                 font-size: 20px;
+             }
+             margin-bottom: 5px;
+         }
+         :nth-child(2){
+             font-size: 12px;
+             color: #999999;
+             span{
+                 margin-left: 15px;
+                 padding: 3px 10px;
+                 padding-right: 20px;
+                 width: 40px;
+                 height: 14px;
+                 line-height: 23px;
+                 border-radius: 20px;
+                 background: #896EDB;
+                 color: #fff;
+                 position: relative;
+                 i{
+                     font-size: 20px;
+                     position: absolute;
+                     right: 2px;
+                     top: 1px;
+                 }
+             }
+         }
+     }
+     &-log{
+         width: 94px;
+         height: 65px;
+         img{
+             width: 100%;
+             height: 100%;
+         }
+     }
+  }
+  .content{
+    //   width: 100%;
+    width: 96%;
+    margin: 12px 2%;
+    border-radius: 6px;
+  }
+//   .content-title{
+//       width: 96%;
+//       height: 45px;
+//       background-color: #fff;
+//       line-height: 45px;
+//       margin-top: 20px;
+//       padding-left: 4%;
+//       margin-bottom: 5px;
+//   }
+//办单教程
+.course{
+    width: 96%;
+    height: 140px;
+    margin: 12px 2%;
+    margin-bottom: 20px;
+    padding-bottom: 27px;
+    background: #fff;
+    box-sizing: border-box;
+    border-radius: 6px;
+    &-title{
+        // padding: 10px;
+        padding-top: 15px;
+        padding-left: 12px;
+        padding-bottom: 15px;
+        font-size: 16px;
+        font-weight:bold;
+        color:rgba(51,51,51,1)
+    }
+    &-content{
+        margin-top: 10px;
+      .flexLayout(space-between, center);
+      &-item{
+          width: 25%;
+          text-align: center;
+          i{
+              font-size: 36px;
+          }
+          p{
+              color: #666666;
+              margin-top: 5px;
+              font-size: 14px;
+          }
+      }
+    }
+}
+.courseDl{
+    width: 96%;
+    height: 165px;
+    margin: 12px 2% 0 2%;
+    // margin-bottom: 20px;
+    // padding-bottom: 27px;
+    background: #fff;
+    box-sizing: border-box;
+    border-radius: 6px;
+    &-title{
+        // padding: 10px;
+        padding-top: 15px;
+        padding-left: 12px;
+        padding-bottom: 15px;
+        font-size: 16px;
+        font-weight:bold;
+        color:rgba(51,51,51,1)
+    }
+    &-content{
+        // margin-top: 10px;
+        width: 100%;
+      .flexLayout(space-between, center);
+      flex-wrap: wrap;
+      &-item{
+          width: 50%;
+          height: 50px;
+          text-align: center;
+          .flexLayout(flex-start, center);
+          i{
+              margin-left: 40px;
+              font-size: 30px;
+              margin-right: 13px;
+          }
+          p{
+              width: 60px;
+              color: #666666;
+              text-align: left;
+            //   margin-top: 5px;
+              font-size: 14px;
+              line-height: 50px;
+          }
+      }
+    }
+}
+.notice-continer{
+    width: 95%;
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    padding-left: 5%;
+}
+</style>
diff --git a/src/views/mdyh/shtx/mer-date.vue b/src/views/mdyh/shtx/mer-date.vue
new file mode 100644
index 0000000..e00e4ec
--- /dev/null
+++ b/src/views/mdyh/shtx/mer-date.vue
@@ -0,0 +1,463 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-09-24 18:22:58
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-26 14:41:46
+ * @Description: 
+ -->
+<template>
+  <div class="hb-merchant-installment">
+    <!-- <van-nav-bar title="商户贴息" left-arrow @click-left="onClickLeft" /> -->
+    <van-nav-bar title="商户资料" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+        <!-- <van-icon name="iconzuojiantou" slot="left" /> -->
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+    <div class="form-content">
+        <van-field
+          class="ipt"
+          v-model="contractGoodsName"
+          label="商户名称"
+          placeholder="请输入"
+          input-align="right"
+          border="true"
+          required
+        />
+        <van-field
+          class="ipt"
+          label="营业执照号"
+          placeholder="请输入"
+          input-align="right"
+          border="false"
+          :maxlength="20"
+          v-model="businesslicenseNo"
+          required
+        />
+        <van-field
+          class="ipt"
+          label="法人姓名"
+          placeholder="请输入"
+          input-align="right"
+          border="false"
+          :maxlength="10"
+          v-model="contractUserName"
+        />
+        <van-field
+          class="ipt"
+          label-width='100'
+          label="法人身份证号"
+          placeholder="请输入"
+          input-align="right"
+          border="false"
+          :maxlength="18"
+          v-model="contractUserNo"
+        />
+        <!-- <v-cell :value="areaText" label='所在地区'  isLink disabled  placeholder='请选择' @click.native="isShowArea = true;"></v-cell> -->
+        <van-field
+          class="fenqi"
+          readonly
+          clickable
+          label="商户地址"
+          :value="areaLists"
+          placeholder="请选择"
+          @click="ShowArea"
+          input-align="right"
+          border="true"
+          required
+        />
+        <van-field
+          class="ipt"
+          label="详细地址"
+          placeholder="请输入"
+          input-align="right"
+          border="false"
+          :maxlength="10"
+          v-model="dtlAddress"
+        />
+        <van-cell-group v-if="merZfbInfos.length > 0">
+          <van-field
+            v-for="(item,i) in merZfbInfos"
+            v-show="item.hbStatus == 2"
+            :key="i"
+            class="ipt"
+            label-width="150px"
+            :label='item.zfbVersionName+"-PID"'
+            placeholder="请输入"
+            input-align="right"
+            border="false"
+            :maxlength="20"
+            v-model="item.pid"
+          />
+        </van-cell-group>
+        
+    </div>
+    <!-- <van-popup v-model="showPicker" position="bottom" :style="{ height: '30%' }">
+        <van-picker
+        title="选择地址"
+        show-toolbar
+        item-height="30"
+        :columns="columns"
+        @cancel="showPicker = false"
+        @confirm="onConfirm"
+        />
+    </van-popup> -->
+    <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+        <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+    </van-popup>
+    <van-button
+      round
+      type="info"
+      class="btn"
+      block="true"
+      :color="$store.state.backColor"
+      @click="createdQRCode"
+    >保存</van-button>
+    <!--点击创建订单展示 弹窗 -->
+    <!-- <FConfirmSimple
+      v-model="showConfirm"
+      ref="FConfirmQRCode"
+      @on-hide="handleHide"
+      iconClass="scene_Staging-dingdan"
+      class="hb-order-confirm"
+      :showIcon="true"
+    >
+      <div class="trial-list">
+        <div>还款总额:{{trial.totalAmount}}元</div>
+        <div>每月还款额:{{trial.repayPerMonth}}元</div>
+        <div>费率:{{trial.feeRate}}%</div>
+      </div>
+      <f-button @on-click="createdQRCode">生成二维码</f-button>
+    </FConfirmSimple> -->
+  </div>
+</template>
+<script>
+import {mapState, mapMutations} from 'vuex';
+import QRCode from "qrcode";
+import FConfirmSimple from "@/components/old/FConfirmSimple.vue";
+import axios from "axios";
+import Vue from "vue";
+import { NavBar } from "vant";
+import { Grid, GridItem } from "vant";
+import { Field } from "vant";
+import { DropdownMenu, DropdownItem } from "vant";
+import { Popup } from "vant";
+import { Picker } from "vant";
+import { Toast } from "vant";
+import { async } from "q";
+
+Vue.use(Toast);
+Vue.use(Picker);
+Vue.use(Popup);
+Vue.use(DropdownMenu).use(DropdownItem);
+Vue.use(Field);
+Vue.use(Grid).use(GridItem);
+Vue.use(NavBar);
+export default {
+  components: {
+    FConfirmSimple
+  },
+  data() {
+    return {
+      merId:'',
+      isShowArea: false,
+      capitalAmt: "0.00", //商家到账金额
+      monthMoney: "0.00", //客户月还款总额
+      merId: this.$route.query.merId || [], //商户id
+      contractGoodsBrand: "", //商品品牌
+      contractGoodsName: "", //商品名称
+      contractUserMblNo: "", //用户手机号
+      contractUserName: "", //用户名称
+      businesslicenseNo: '', //营业执照号
+      contractUserNo: '', //法人身份证
+      dtlAddress: '', //详细地址
+      contractUserPID: '', //商户PID
+      merZfbInfos:[],//商户PID列表
+      totalAmount: "0.00",
+      orderNo: "", //未知参数
+      term: null, //分期期数
+      userMblNo: "", //用户手机号
+      userName: "", //用户名称
+      trial: {}, // 利率相关信息
+      orderId: "", //订单id
+      typeId: "",
+      payQrCodeUrl: "", // 二维码
+      termList: [], //分期期数列表
+      showConfirm: false,
+      howMouch: "", //商品金额
+      value: "", //期数选择值
+      showPicker: false, //期数选择弹出层控制
+      columns: [], //分期期数列表
+      
+
+      form: {
+        areaLists: '',
+        provCode: '',
+        cityCode: '',
+        areaCode: '',
+      },
+      arrDress:'',
+    };
+  },
+  computed: {
+      ...mapState(['areaList']),
+  },
+  created() {
+    this.merInit();
+  },
+  methods: {
+    ShowArea(){
+      this.isShowArea=true
+      console.log(this.form.areaLists)
+    },
+    handleHide() {
+      this.showConfirm = false;
+    },
+    setAreaValue(arr){
+        console.log(arr);
+        this.areaLists = arr[0].name  +arr[1].name + arr[2].name + '';
+        // this.form.provCode= arr[0].code;
+        // this.form.cityCode= arr[1].code;
+        // this.form.areaCode= arr[2].code;
+        this.form.provCode= arr[0];
+        this.form.cityCode= arr[1];
+        this.form.areaCode= arr[2];
+        this.isShowArea = false;
+        // this.$refs.Area.reset()
+        this.$forceUpdate();
+        console.log(this.areaLists)
+    },
+    //返回上一级按钮
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    //关闭地区弹窗
+    closeAreaModal(){
+        this.isShowArea = false;
+        this.$refs.Area.reset()
+    },
+    //弹出层显示
+    showPopup() {
+      this.show = true;
+    },
+    // 弹出层地址选择
+    onConfirm(arr) {
+      this.arrDress = arr
+        this.areaTexts = arr[0].name + '-' +arr[1].name +'-'+ arr[2].name;
+                // this.form.provCode= arr[0].code;
+                // this.form.cityCode= arr[1].code;
+                // this.form.areaCode= arr[2].code;
+                this.form.provCode= arr[0];
+                this.form.cityCode= arr[1];
+                this.form.areaCode= arr[2];
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+    },
+    //商户资料初始化
+    merInit() {
+      this.$api.merchantDetail({merId: this.merId}).then(
+        res => {
+          console.log(res.body);
+          this.contractGoodsName = res.body.merName;
+          this.businesslicenseNo = res.body.licenseNo;
+          this.contractUserName = res.body.legalName;
+          this.contractUserNo = res.body.legalIdNo;
+          this.dtlAddress = res.body.addr.dtlAddr;
+          this.contractUserPID = res.body.pid;
+          this.merId = res.body.merId;
+          this.arrDress = res.body.addr
+          let list = res.body.merZfbInfos.filter((item, index) => {
+              if(sessionStorage.isddxt == 1){
+                  return item.zfbVersion == 6 || item.zfbVersion == 7
+              }else{
+                  return item.zfbVersion != 6 && item.zfbVersion != 7
+              }
+          })
+          this.merZfbInfos = list
+          console.log(this.merZfbInfos)
+          let arr = [];
+          if(res.body.addr.area) {
+            arr.push(res.body.addr.province)
+            arr.push(res.body.addr.city)
+            arr.push(res.body.addr.area)
+            this.setAreaValue(arr);
+          }
+        },
+        err => err
+      );
+    },
+    //保存
+    createdQRCode() {
+      let v = this.$tool;
+      let res = /^[A-Za-z0-9\u4e00-\u9fa5]+$/;
+      if (v.checkValEmpty(this.contractGoodsName)) {
+        v.toast("请输入商户名称");
+        return ;
+      }
+      if (!res.test(this.contractGoodsName)) {
+        v.toast("请输入文字/字母/数字且不包含特殊字符的商品名称");
+        return false;
+      }
+      // res = /^[0-9a-zA-Z]{1,20}$/;
+      if (v.checkValEmpty(this.businesslicenseNo)) {
+        v.toast("请输入营业执照号");
+        return;
+      }
+      // if (!res.test(this.businesslicenseNo)) {
+      //   v.toast("请输入正确的营业执照号");
+      //   return false;
+      // }
+      if (v.checkValEmpty(this.contractUserName)) {
+        v.toast("请输入法人姓名");
+        return;
+      }
+      res = /^[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)$/
+      if (v.checkValEmpty(this.contractUserNo)) {
+        v.toast("请输入身份证号");
+        return ;
+      }
+      if (!res.test(this.contractUserNo)) {
+        v.toast("请输入正确的身份证号");
+        return false;
+      }
+      if (v.checkValEmpty(this.areaLists)) {
+        v.toast("请选择商户地址");
+        return;
+      }
+      if (v.checkValEmpty(this.dtlAddress)) {
+        v.toast("请输入详细地址");
+        return;
+      }
+      if(this.contractUserPID) {
+        if (v.checkValEmpty(this.contractUserPID)) {
+          v.toast("请输入商户PID");
+          return;
+        }
+      }
+      let date = {}
+      if(this.contractUserPID) {
+        date.pid = this.contractUserPID;
+      }
+
+      this.arrDress.dtlAddr = this.dtlAddress
+      this.arrDress.area = this.form.areaCode
+      this.arrDress.city = this.form.cityCode
+      this.arrDress.province = this.form.provCode
+
+      date.dtlAddress = this.dtlAddress;
+      date.legalIdNo = this.contractUserNo;
+      date.addr = this.arrDress;
+      date.legalName = this.contractUserName;
+      date.merName = this.contractGoodsName;
+      date.licenseNo = this.businesslicenseNo;
+      date.merId = this.merId;
+      date.merZfbInfos = this.merZfbInfos;
+      console.log(date)
+       this.$api.merchantEdit(date).then(() => {
+        //  console.log('保存商戶資料')
+        this.$router.push('/mine/setting')
+       })
+      this.showConfirm = false;
+      var queryObj = {
+        term: this.value.slice(0, -1), //分期期数
+        payQrCodeUrl: this.payQrCodeUrl, //二维码
+        totalAmount: this.totalAmount //还款总额,本金
+      };
+      if (this.$route.query.typeId) {
+        queryObj.typeId = this.$route.query.typeId;
+      }
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+// @import '../../../style/myVant.less';
+/deep/.van-field__control{
+  color: #999 !important;
+  font-size: 14px !important;
+}
+.van-button--info{
+  background: #896EDB;
+}
+.hb-merchant-installment{
+    background-color: #F3F4F5;
+    height: 100vh;
+}
+  .form-content{
+    width: 359px;
+    // height: 300px;
+    margin: 10px 8px;
+    // transform: translateY(-30px);
+    // position: absolute;
+    // top: 165px;
+    border-radius: 6px;
+  }
+  .ipt,
+  .fenqi {
+    & {
+      border-bottom: 1px solid #e0e1e6;
+      color: #333;
+      font-size: 16px;
+      // .van-field__control--right{
+      //   color: #999 !important;
+      //   font-size: 14px !important;
+      // }
+    }
+  }
+  .btn {
+    width: 80vw;
+    height: 6vh;
+    line-height: 6vh;
+    margin: auto;
+    position: fixed;
+    bottom: 3vh;
+    right: 10vw;
+  }
+  .hb-order-confirm {
+    .trial-list {
+      padding-left: 20px;
+    }
+
+    .f-button-component .f-button {
+      margin-top: 12px;
+    }
+  }
+
+  .hb-credit-installment {
+    background-color: #f1f1f1;
+    padding-top: 54px;
+    .title {
+      padding: 14px 12px;
+      font-size: 15px;
+      color: #333;
+      .line {
+        display: inline-block;
+        width: 2px;
+        height: 16px;
+        margin-right: 8px;
+        background: @color-text-three;
+        vertical-align: middle;
+        margin-top: -1px;
+      }
+    }
+
+    .qrCode-box {
+      padding-top: 0;
+      .flexLayout(center, center, row);
+
+      .qrCode {
+        width: 200px;
+        height: 200px;
+        box-sizing: border-box;
+        background-color: #fff;
+        border: 5px solid @color-border-theme;
+        padding: 5px;
+
+        img {
+          width: 100%;
+          height: 100%;
+          vertical-align: middle;
+          display: block;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/mdyh/shtx/shtx.vue b/src/views/mdyh/shtx/shtx.vue
new file mode 100644
index 0000000..cc07b0d
--- /dev/null
+++ b/src/views/mdyh/shtx/shtx.vue
@@ -0,0 +1,750 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-09-24 18:22:58
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-08 13:49:02
+ * @Description:
+ -->
+<template>
+  <div class="hb-merchant-installment">
+    <!-- <van-nav-bar title="商户贴息" left-arrow @click-left="onClickLeft" /> -->
+    <van-nav-bar title="商户贴息" left-text="返回" left-arrow @click-left="onClickLeft">
+      <!-- <van-icon name="iconzuojiantou" slot="left" /> -->
+      <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+    <div class="money-box">
+      <div class="item-content">
+        <div v-if="hasHjToken()" class="item-box">
+          <p class="money">{{ trial.capitalAmt ? trial.capitalAmt : '0.00 '}}</p>
+          <p class="tit">商家到账金额</p>
+        </div>
+        <span class="line"></span>
+        <div class="item-box">
+          <p class="money">{{ trial.totalAmount ? trial.totalAmount : '0.00' }}</p>
+          <p class="tit">客户总还款金额</p>
+        </div>
+        <span class="line"></span>
+        <div class="item-box">
+          <p class="money">{{ trial.repayPerMonth ? trial.repayPerMonth : '0.00' }}</p>
+          <p class="tit">客户月还款金额</p>
+        </div>
+      </div>
+    </div>
+    <div class="form-content">
+      <van-field
+        class="ipt"
+        v-model="howMouch"
+        type="number"
+        label="商品金额"
+        placeholder="请输入商品金额"
+        input-align="right"
+        border="true"
+        @input="changeMoney"
+        :maxlength="5"
+      />
+      <van-field
+        class="fenqi"
+        readonly
+        clickable
+        label="分期期数"
+        :value="value"
+        placeholder="请选择"
+        @click="showPicker = true"
+        input-align="right"
+        border="true"
+        is-link="true"
+      />
+      <van-field
+        class="ipt"
+        label="商品名称"
+        placeholder="请输入商品名称"
+        input-align="right"
+        border="false"
+        :maxlength="20"
+        v-model="contractGoodsName"
+      />
+      <van-field
+        class="ipt"
+        label="商品品牌"
+        placeholder="请输入商品品牌"
+        input-align="right"
+        border="false"
+        :maxlength="10"
+        v-model="contractGoodsBrand"
+      />
+      <van-field
+        class="ipt"
+        label="用户姓名"
+        placeholder="请输入用户姓名"
+        input-align="right"
+        border="false"
+        :maxlength="10"
+        v-model="contractUserName"
+      />
+      <van-field
+        class="ipt"
+        type="tel"
+        label="用户手机号"
+        placeholder="请输入用户手机号"
+        input-align="right"
+        border="false"
+        :maxlength="11"
+        v-model="contractUserMblNo"
+      />
+      <van-field
+        disabled
+        class="ipt"
+        type="tel"
+        label="智享服务费率"
+        placeholder="请输入智享服务费率"
+        label-width="150px"
+        input-align="right"
+        border="false"
+        :maxlength="11"
+        v-model="platRatePr"
+      />
+      <van-field
+        disabled
+        class="ipt"
+        type="tel"
+        label-width="150px"
+        label="花呗分期手续费率"
+        placeholder="请输入花呗分期手续费率"
+        input-align="right"
+        border="false"
+        :maxlength="11"
+        v-model="zfbRatePr"
+      />
+    </div>
+    <div class="btn-box">
+      <van-button
+        round
+        type="info"
+        class="btn"
+        block="true"
+        color="#896EDB"
+        @click="goodInstallmentOrder"
+        :class="sysPlat == 2 ? 'active' : ''"
+      >生成二维码</van-button>
+      <van-button
+        round
+        type="info"
+        class="btn"
+        block="true"
+        color="#896EDB"
+        @click="WeChatSanCode"
+        v-if="sysPlat != 2"
+      >扫描付款码</van-button>
+    </div>
+
+    <van-popup v-model="showPicker" position="bottom" :style="{ height: '30%' }">
+      <van-picker
+        title="选择期数"
+        show-toolbar
+        item-height="30"
+        :columns="columns"
+        @cancel="showPicker = false"
+        @confirm="onConfirm"
+      />
+    </van-popup>
+    <Vdialog @cancel="cancel" :show="showDia"></Vdialog>
+  </div>
+</template>
+<script>
+import QRCode from "qrcode";
+import FConfirmSimple from "@/components/old/FConfirmSimple.vue";
+import axios from "axios";
+import Vue from "vue";
+import { NavBar } from "vant";
+import { Grid, GridItem } from "vant";
+import { Field } from "vant";
+import { DropdownMenu, DropdownItem } from "vant";
+import { Popup } from "vant";
+import { Picker } from "vant";
+import { Toast } from "vant";
+import { async } from "q";
+import Vdialog from "@/components/common/v-dialog.vue";
+
+Vue.use(Toast);
+Vue.use(Picker);
+Vue.use(Popup);
+Vue.use(DropdownMenu).use(DropdownItem);
+Vue.use(Field);
+Vue.use(Grid).use(GridItem);
+Vue.use(NavBar);
+export default {
+  components: {
+    FConfirmSimple,Vdialog
+  },
+  data() {
+    return {
+      backUrl: "", //回调地址
+      zfbRate: "",
+      platRate: "",
+      showConfirm: false,
+      showDia:false,
+      contractGoodsBrand: "", //商品品牌
+      contractGoodsName: "", //商品名称
+      contractUserMblNo: "", //用户手机号
+      contractUserName: "", //用户名称
+      orderNo: "", //未知参数
+      term: null, //分期期数
+      userMblNo: "", //用户手机号
+      userName: "", //用户名称
+      trial: {
+        capitalAmt: "",
+        repayPerMonth: "",
+        totalAmount: ""
+      }, // 利率相关信息
+      orderId: "", //订单id
+      typeId: "",
+      payQrCodeUrl: "", // 二维码
+      termList: [], //分期期数列表
+      showConfirm: false,
+      howMouch: "", //商品金额
+      value: "", //期数选择值
+      showPicker: false, //期数选择弹出层控制
+      columns: [], //分期期数列表
+      sysPlat: null,
+      isGoBack:'',//用于重新扫码后判断值
+    };
+  },
+  computed: {
+    zfbRatePr() {
+      if (this.zfbRate || this.zfbRate==0) {
+        return this.zfbRate + "%";
+      } else {
+        return "";
+      }
+    },
+    platRatePr() {
+      if (this.platRate || this.platRate==0) {
+        return this.platRate + "%";
+      } else {
+        return "";
+      }
+    }
+  },
+  created() {
+    if(sessionStorage.hb_session_info&&this.$route.query.isCreateOrderPush){
+        this.isGoBack = 1
+        let hb_session_info = JSON.parse(sessionStorage.hb_session_info)
+        this.contractGoodsBrand=hb_session_info.goodsBrand //商品品牌
+        this.contractGoodsName=hb_session_info.goodsName //商品名称
+        this.value = hb_session_info.term
+        this.term = hb_session_info.term.slice(0, -1)
+        this.howMouch=hb_session_info.totalAmount //商品总价
+        this.contractUserMblNo=hb_session_info.userMblNo//用户电话号
+        this.contractUserName=hb_session_info.userName // 用户名称
+        this.sysPlat=hb_session_info.sysPlat
+        this.changeMoney()
+    }
+    let sysPlat = localStorage.sib_mer_sysPlat
+    if (sysPlat === 'undefined' || sysPlat === '1') {
+      sysPlat = 1
+    }
+    if (sysPlat === '2') {
+      sysPlat = 2
+    }
+    this.sysPlat = sysPlat
+    this.$api.shtxOrderInit().then(
+      res => {
+        var arr = res.body.terms;
+        arr.forEach((ele, i) => {
+          this.columns.push(`${ele.code}期`);
+        });
+      },
+      err => err
+    );
+    this.getWeChatConfig()
+  },
+  methods: {
+    cancel(val){
+      this.showDia = val
+    },
+    // 调用微信摄像头,扫一扫
+    WeChatSanCode() {
+      let _this = this;
+      this.totalAmount = this.howMouch;
+      let sysPlat = localStorage.sib_mer_sysPlat
+      if (sysPlat === 'undefined' || sysPlat === '1') {
+        sysPlat = 1
+      }
+      if (sysPlat === '2') {
+        sysPlat = 2
+      }
+      if (this.totalAmount != "") {
+        this.$api
+          .getMonthMoney({
+            totalAmount: this.howMouch,
+            term: this.value.slice(0, -1)
+          })
+          .then(res => {
+            this.trial.capitalAmt = res.body.capitalAmt;
+            this.trial.monthMoney = res.body.repayPerMonth;
+            this.trial.totalAmount = res.body.totalAmount;
+          });
+      }
+      let v = this.$tool;
+      if (v.checkValEmpty(this.totalAmount)) {
+        v.toast("请输入商品金额");
+        return;
+      }
+      //临时调整价格
+      if (Number(this.totalAmount) <= 0) {
+        v.toast("商品金额不能为0");
+        return false;
+      }
+      let res = /^[A-Za-z0-9\u4e00-\u9fa5]+$/;
+      if (v.checkValEmpty(this.contractGoodsName)) {
+        v.toast("请输入商品名称");
+        return;
+      }
+      if (!res.test(this.contractGoodsName)) {
+        v.toast("请输入文字/字母/数字且不包含特殊字符的商品名称");
+        return;
+      }
+      if (v.checkValEmpty(this.term)) {
+        v.toast("请输入分期期数");
+        return;
+      }
+      if (v.checkValEmpty(this.contractGoodsBrand)) {
+        v.toast("请输入商品品牌");
+        return;
+      }
+      if (v.checkValEmpty(this.contractUserName)) {
+        v.toast("请输入用户姓名");
+        return;
+      }
+      if (v.checkValEmpty(this.contractUserMblNo)) {
+        v.toast("请输入用户手机号");
+        return;
+      }
+      if (sysPlat == 1) {
+        this.checkIsReady().then(() => {
+          wx.scanQRCode({
+            needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
+            scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
+            success: function(res) { // 当needResult 为 1 时,扫码返回的结果
+              // 扫码成功后调用接口
+              let queryObj = {
+                goodsBrand: _this.contractGoodsBrand, //商品品牌
+                goodsName: _this.contractGoodsName, //商品名称
+                prodId: 30000010, //产品id
+                term: _this.value.slice(0, -1), //分期期数
+                totalAmount: _this.totalAmount, //商品总价
+                userMblNo: _this.contractUserMblNo, //用户电话号
+                userName: _this.contractUserName, // 用户名称
+                zfbVersion: Number(_this.$route.query.zfbVersion),
+                payType: 2,//正扫
+                authCode: res.resultStr,
+                sysPlat: sysPlat
+              };
+              _this.$api.shtxOrderCreate(queryObj).then(res=>{
+                _this.orderId = res.body.orderId;
+                _this.$router.push({
+                    path:'/pay-result',
+                    query:{
+                        orderId: _this.orderId,
+                        mode:'shtx'
+                    }
+                })
+              })
+            }
+          });
+        });
+      }
+      if (sysPlat == 2) {
+        my.postMessage({'sendToMiniProgram': '0'})
+        my.onMessage = function(e) {
+          let queryObj = {
+            goodsBrand: _this.contractGoodsBrand, //商品品牌
+            goodsName: _this.contractGoodsName, //商品名称
+            prodId: 30000010, //产品id
+            term: _this.value.slice(0, -1), //分期期数
+            totalAmount: _this.totalAmount, //商品总价
+            userMblNo: _this.contractUserMblNo, //用户电话号
+            userName: _this.contractUserName, // 用户名称
+            zfbVersion: Number(_this.$route.query.zfbVersion),
+            payType: 2,//正扫
+            authCode: e,
+            sysPlat: sysPlat
+          };
+          _this.$api.shtxOrderCreate(queryObj).then(res=>{
+            _this.orderId = res.body.orderId;
+            _this.$router.push({
+                path:'/pay-result',
+                query:{
+                    orderId: _this.orderId,
+                    mode:'shtx'
+                }
+            })
+          })
+        }
+      }
+    },
+    // 异步准备微信环境
+    checkIsReady() {
+      return new Promise((resolve, reject) => {
+        wx.ready(() => resolve());
+        wx.error(err => reject(console.log(res + "wx.error")));
+      });
+    },
+    // 获取微信配置
+    getWeChatConfig() {
+      let url = location.href.split("#")[0];
+      this.$api
+        .getTokenInfo({
+          url: url
+        })
+        .then(res => {
+          // 获取微信配置
+          wx.config({
+            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印
+            appId: res.body.appId, // 必填,公众号的唯一标识
+            timestamp: res.body.timestamp, // 必填,生成签名的时间戳
+            nonceStr: res.body.nonceStr, // 必填,生成签名的随机串
+            signature: res.body.signature, // 必填,签名
+            jsApiList: ["checkJsApi", "scanQRCode"], // 必填,需要使用的JS接口列表
+            openTagList: [] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app']
+          });
+        });
+    },
+    hasHjToken() {
+      if (localStorage.hjToken) {
+        return false;
+      } else {
+        return true;
+      }
+    },
+    handleHide() {
+      this.showConfirm = false;
+    },
+    //返回上一级按钮
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    //弹出层显示
+    showPopup() {
+      this.show = true;
+    },
+    // 弹出层期数选项控制
+    onConfirm(value) {
+      this.value = value;
+      //console.log(value.slice(0, -1));
+      this.showPicker = false;
+      this.term = value.slice(0, -1);
+      //得到月还款额
+      this.$api
+        .getMonthMoney({
+          totalAmount: this.howMouch,
+          term: value.slice(0, -1)
+        })
+        .then(res => {
+          // console.log(1111);
+          this.trial.capitalAmt = res.body.capitalAmt;
+          this.trial.repayPerMonth = res.body.repayPerMonth;
+          this.trial.totalAmount = res.body.totalAmount;
+          this.platRate = res.body.platRate;
+          this.zfbRate = res.body.zfbRate;
+        });
+    },
+    changeMoney() {
+      if (
+        this.howMouch != this.totalAmount &&
+        this.term != null &&
+        this.howMouch != ""
+      ) {
+        //得到月还款额
+        this.$api
+          .getMonthMoney({
+            totalAmount: this.howMouch,
+            term: this.value.slice(0, -1)
+          })
+          .then(res => {
+            this.trial.capitalAmt = res.body.capitalAmt;
+            this.trial.repayPerMonth = res.body.repayPerMonth;
+            this.trial.totalAmount = res.body.totalAmount;
+            this.platRate = res.body.platRate;
+            this.zfbRate = res.body.zfbRate;
+          });
+      } else if (this.howMouch == "") {
+        this.trial.capitalAmt = 0.0;
+        this.trial.repayPerMonth = 0.0;
+        this.trial.totalAmount = 0.0;
+      }
+    },
+    //订单生成
+    goodInstallmentOrder() {
+      this.totalAmount = this.howMouch;
+      if (this.totalAmount != "") {
+        this.$api
+          .getMonthMoney({
+            totalAmount: this.howMouch,
+            term: this.value.slice(0, -1)
+          })
+          .then(res => {
+            console.log(res);
+            this.trial.capitalAmt = res.body.capitalAmt;
+            this.trial.monthMoney = res.body.repayPerMonth;
+            this.trial.totalAmount = res.body.totalAmount;
+          });
+      }
+      let v = this.$tool;
+      if (v.checkValEmpty(this.totalAmount)) {
+        v.toast("请输入商品金额");
+        return;
+      }
+      // if (!Number(this.totalAmount)) {
+      //   v.toast("请输入正确的结算金额");
+      //   return false;
+      // }
+      //临时调整价格
+      if (Number(this.totalAmount) <= 0) {
+        v.toast("商品金额不能为0");
+        return false;
+      }
+      let res = /^[A-Za-z0-9\u4e00-\u9fa5]+$/;
+      if (v.checkValEmpty(this.contractGoodsName)) {
+        v.toast("请输入商品名称");
+        return;
+      }
+      if (!res.test(this.contractGoodsName)) {
+        v.toast("请输入文字/字母/数字且不包含特殊字符的商品名称");
+        return;
+      }
+      if (v.checkValEmpty(this.term)) {
+        v.toast("请输入分期期数");
+        return;
+      }
+      if (v.checkValEmpty(this.contractGoodsBrand)) {
+        v.toast("请输入商品品牌");
+        return;
+      }
+      if (v.checkValEmpty(this.contractUserName)) {
+        v.toast("请输入用户姓名");
+        return;
+      }
+      if (v.checkValEmpty(this.contractUserMblNo)) {
+        v.toast("请输入用户手机号");
+        return;
+      }
+
+      // 用来整体存储缓存数据
+      let hb_session_info = {
+        goodsBrand: this.contractGoodsBrand, //商品品牌
+        goodsName: this.contractGoodsName, //商品名称
+        prodId: 30000010, //产品id
+        term: this.value, //分期期数
+        totalAmount: this.totalAmount, //商品总价
+        userMblNo: this.contractUserMblNo, //用户电话号
+        userName: this.contractUserName, // 用户名称
+        zfbVersion: Number(this.$route.query.zfbVersion),
+        payType: 1,//正扫
+        sysPlat: this.sysPlat
+      }
+      sessionStorage.hb_session_info = JSON.stringify(hb_session_info)
+
+      let queryObj = {
+        goodsBrand: this.contractGoodsBrand, //商品品牌
+        goodsName: this.contractGoodsName, //商品名称
+        prodId: 30000010, //产品id
+        term: this.value.slice(0, -1), //分期期数
+        totalAmount: this.totalAmount, //商品总价
+        userMblNo: this.contractUserMblNo, //用户电话号
+        userName: this.contractUserName, // 用户名称
+        zfbVersion: Number(this.$route.query.zfbVersion),
+        payType: 1,//正扫
+        sysPlat: this.sysPlat
+      };
+      this.$api.shtxOrderCreate(queryObj).then(res => {
+        this.orderId = res.body.orderId;
+        this.payQrCodeUrl = res.body.payQrCodeUrl;
+        this.trial.totalAmount = res.body.totalAmount;
+        this.trial.repayPerMonth = res.body.repayPerMonth;
+        this.trial.feeRate = res.body.feeRate;
+        this.showConfirm = true;
+        this.backUrl = res.body.backUrl;
+        sessionStorage.hjBackUrl = res.body.backUrl;
+        this.createdQRCode();
+      },err=>{
+        if(err.errorCode===30006007){
+            this.showDia = true
+        }
+      });
+    },
+    //生成二维码
+    createdQRCode() {
+      this.showConfirm = false;
+
+      var queryObj = {
+        term: this.value.slice(0, -1), //分期期数
+        payQrCodeUrl: this.payQrCodeUrl, //二维码
+        totalAmount: this.totalAmount, //还款总额,本金
+        platRate: this.platRate,
+        zfbRate: this.zfbRate,
+        capitalAmt: this.capitalAmt,
+        backUrl: this.backUrl
+      };
+      if (this.$route.query.typeId) {
+        queryObj.typeId = this.$route.query.typeId;
+      }
+      this.$router.push({
+        path: "/shtx-getShtxQRCode",
+        query: {
+          orderId: this.orderId,
+          ...queryObj
+        }
+      });
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.hb-merchant-installment {
+  & {
+    background-color: #f3f4f5;
+    width: 100%;
+    min-height: 100vh;
+  }
+  /deep/.van-field__control:disabled {
+    color: #666;
+    -webkit-text-fill-color: #666;
+  }
+  .money-box {
+    & {
+      width: 100%;
+      height: 150px;
+      background: linear-gradient(
+        -45deg,
+        rgba(104, 98, 133, 1),
+        rgba(76, 69, 113, 1)
+      );
+      display: flex;
+      justify-content: space-between;
+      text-align: center;
+    }
+    .item-content {
+      width: 359px;
+      height: 72px;
+      margin: 28px 8px 0 8px;
+      background: #716d8e;
+      border-radius: 72px;
+      .flexLayout(flex-start, center, row);
+    }
+    .line {
+      width: 1px;
+      height: 20px;
+      opacity: 0.1;
+      background: rgba(255, 255, 255, 1);
+    }
+    .item-box {
+      & {
+        display: flex;
+        flex-wrap: wrap;
+        align-content: center;
+        width: 33%;
+        color: #fff;
+      }
+      .tit {
+        font-size: 12px;
+        // font-weight: 700;
+        display: inline-block;
+        vertical-align: middle;
+        width: 100%;
+      }
+      .money {
+        margin: 0px 0 11px 0;
+        width: 100%;
+        font-size: 20px;
+        font-weight: bold;
+      }
+    }
+  }
+  .form-content {
+    width: 359px;
+    // height: 300px;
+    margin: 0 8px;
+    transform: translateY(-30px);
+    // position: absolute;
+    // top: 165px;
+    border-radius: 6px;
+  }
+  .ipt,
+  .fenqi {
+    & {
+      border-bottom: 1px solid rgba(238, 238, 238, 1);
+      color: #333;
+      font-size: 16px;
+      height: 50px;
+    }
+  }
+  .btn-box {
+    margin-top: 90px;
+    margin-bottom: 20px;
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    .btn {
+      width: 40vw;
+      height: 44px;
+      line-height: 44px;
+      background-color: #896edb;
+      border: none;
+    }
+    .active {
+      width: 80vw;
+    }
+  }
+
+  .hb-order-confirm {
+    .trial-list {
+      padding-left: 20px;
+    }
+
+    .f-button-component .f-button {
+      margin-top: 12px;
+    }
+  }
+
+  .hb-credit-installment {
+    background-color: #f1f1f1;
+    padding-top: 54px;
+    .title {
+      padding: 14px 12px;
+      font-size: 15px;
+      color: #333;
+      .line {
+        display: inline-block;
+        width: 2px;
+        height: 16px;
+        margin-right: 8px;
+        background: @color-text-three;
+        vertical-align: middle;
+        margin-top: -1px;
+      }
+    }
+
+    .qrCode-box {
+      padding-top: 0;
+      .flexLayout(center, center, row);
+
+      .qrCode {
+        width: 200px;
+        height: 200px;
+        box-sizing: border-box;
+        background-color: #fff;
+        border: 5px solid @color-border-theme;
+        padding: 5px;
+
+        img {
+          width: 100%;
+          height: 100%;
+          vertical-align: middle;
+          display: block;
+        }
+      }
+    }
+  }
+}
+</style>
diff --git a/src/views/mine/account/account-add.vue b/src/views/mine/account/account-add.vue
new file mode 100644
index 0000000..f788336
--- /dev/null
+++ b/src/views/mine/account/account-add.vue
@@ -0,0 +1,199 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 18:12:00
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-17 09:39:52
+ * @Description: 
+ -->
+<template>
+  <div class="account-add h-100-g">
+    <v-navbar title="新增账户" fixed>
+      <div slot="right" v-if="!isAdd" @click="update">保存</div>
+    </v-navbar>
+
+    <div class="cell-group">
+      <v-cell v-model="form.name" max='6' label="负责人姓名" placeholder="请输入姓名"></v-cell>
+      <v-cell v-model="form.mblNo" max='11' type='tel' label="负责人手机号" placeholder="请输入手机号" :readonly="!isAdd"></v-cell>
+    </div>
+    <p class="tip">*该手机号将作为登录用户名,密码将通过短信发至手机</p>
+
+    <div class="cell-group">
+      <v-cell v-model="form.email" max="50" label="联系邮箱" placeholder="请输入邮箱地址"></v-cell>
+    </div>
+
+    <div class="cell-group">
+      <v-cell label="权限分配" :readonly="true"></v-cell>
+      <van-checkbox-group class="van-check-box" v-model="form.menuPower">
+        <div v-for="(item, index) in powerInfo" :key="index">
+          <v-cell :label="item.powerName" v-if="item.powerId !==100005">
+            <van-checkbox
+              slot="v-cell-right"
+              :key="item.powerId"
+              :name="item.powerId"
+              :checked-color="$store.state.backColor"
+            />
+          </v-cell>
+        </div>
+        <!-- <v-cell label='商户管理'>
+          <van-checkbox  slot="v-cell-right" key="商户管理" name="商户管理" checked-color="#896EDB"/>
+        </v-cell>
+        <v-cell  label='渠道管理'>
+          <van-checkbox  slot="v-cell-right" key="渠道管理" name="渠道管理" checked-color="#896EDB"/>
+        </v-cell>-->
+      </van-checkbox-group>
+    </div>
+
+    <footer class="flex-center-g footer">
+      <van-button class="btn" :color="$store.state.backColor" v-if="isAdd" @click="add">新增账户</van-button>
+      <van-button class="btn" :color="$store.state.backColor" v-else @click="freeze">{{isFreeze?'冻结':'启用'}}</van-button>
+    </footer>
+  </div>
+</template>
+
+<script>
+import { mapState } from "vuex";
+export default {
+  name: "account-add",
+  data() {
+    return {
+      form: {
+        name: "",
+        mblNo: "",
+        email: "",
+        name: "",
+        menuPower: [],
+        powerInfoVos: [] //权限列表
+      },
+      rule:[
+        {key:"name",message:"请输入账户名称",type:"isEmpty"},
+        {key:"name",message:"请输入正确的账户名称",rule:/^[\u4e00-\u9fa50-9a-zA-Z]{1,6}$/},
+        {key:"mblNo",message:"请输入手机号",type:"isEmpty"},
+        {key:"mblNo",message:"请输入正确的手机号",type:"isTel"},
+        {key:"email",message:"请输入联系邮箱",type:"isEmpty"},
+        {key:"email",message:"请输入正确的联系邮箱",type:"isEmail"},
+      ],
+      isFreeze: false
+    };
+  },
+  computed: {
+    ...mapState(["userinfo"]),
+    // 判断是新增 还是 详情
+    isAdd() {
+      return this.$route.query.isAdd == "1";
+    },
+    //权限列表
+    powerInfo() {
+      return this.form.powerInfoVos || [];
+    },
+    id() {
+      return this.$route.query.id || "";
+    }
+  },
+  created() {
+    this.form.powerInfoVos  = this.userinfo.powerInfoVos;
+    if (!this.isAdd) {
+      this.init();
+    }
+  },
+  methods: {
+    //获取用户详情
+    init() {
+      this.$api.getUserDetail(this.id).then(({ body }) => {
+          let {powerInfoVos} = body;
+          if (body.supStatus && body.status) {
+            this.isFreeze = true;
+          } else {
+            this.isFreeze = false;
+          }
+          let powerInfo = this.userinfo.powerInfoVos;
+          if (powerInfoVos.length) {
+            powerInfo.forEach(item => {
+              let index = powerInfoVos.findIndex(child => {
+                return item.powerId === child.powerId;
+              });
+              if(index!==-1){
+                this.form.menuPower.push(item.powerId)
+              }
+            });
+          }
+
+          this.form = {
+            ...this.form,
+            ...body
+          };
+          this.form.powerInfoVos = this.userinfo.powerInfoVos;;
+        })
+        .catch(err => {});
+    },
+    // 验证form参数
+    validatorForm(){
+        return this.$validator(this.form,this.rule).check(item=>{
+            this.$notify(item.message)
+        })
+    },
+    // 新增
+    add() {
+      if(!this.validatorForm()) return
+      this.$api.userAdd(this.form).then(res => {
+          this.$notify("添加成功");
+          setTimeout(() => this.$router.go(-1), 1000);
+        }).catch(err => {});
+    },
+    //更新
+    update() {
+      if(!this.validatorForm()) return
+      this.$api.userUpdate(this.form).then(res => {
+          this.$notify("保存成功");
+        })
+        .catch(err => {});
+    },
+    //冻结账号
+    freeze() {
+      this.$dialog.confirm({
+          message: `请问是否确认${this.isFreeze ? "冻结" : "启用"}该账户?`
+        }).then(() => {
+          this.$api.userFreezeMgr(this.id).then(() => {
+            let text = this.isFreeze ? "冻结成功" : "启用成功";
+            this.$notify(text);
+            this.isFreeze = !this.isFreeze;
+          });
+        })
+        .catch(() => {
+          // on cancel
+        });
+    }
+  }
+};
+</script>
+
+<style scoped lang="less">
+.account-add {
+  background-color: @c-bg-f5;
+  padding-top: 44px;
+
+  .tip {
+    margin: 10px 0 15px 21px;
+    font-size: @font-12;
+    color: @c-text-999;
+  }
+}
+
+.cell-group {
+  margin: 10px 8px 0;
+}
+
+.btn {
+  width: 340px;
+  height: 44px;
+  border: none;
+  font-size: @font-16;
+  border-radius: 22px;
+  background-color: @c-bg-default;
+  color: @c-text-fff;
+}
+
+.footer {
+  margin-top: 60px;
+  padding-bottom: 30px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/mine/account/account.vue b/src/views/mine/account/account.vue
new file mode 100644
index 0000000..1fbad7a
--- /dev/null
+++ b/src/views/mine/account/account.vue
@@ -0,0 +1,143 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 18:12:00
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-17 09:41:11
+ * @Description: 账号管理列表页面
+ -->
+<template>
+  <div class="account ">
+    <v-navbar title="账号管理" fixed></v-navbar>
+    <van-search  v-model="value" class="search" placeholder="请输入姓名/手机号" shape='round'/>
+      
+        <div class="item-box">
+          <div class="account-item flex-start-g" v-for="(item, index) in calcList" :key="index" @click="go(item.id)">
+            <p class="icon-box flex-center-g" :style="{background:$store.state.backColor}">
+              <svg class="icon" aria-hidden="true" style="width:25px;height:25px;fill:#fff" >
+                <use xlink:href="#iconyonghu"></use>
+              </svg>
+            </p>
+
+            <div>
+              <p class="name">{{item.name}}</p>
+              <p class="c-text-666-g font-12-g">{{item.mblNo}}</p>
+            </div>
+          </div>
+        </div>
+     
+    <van-button class="btn" @click="$router.push('/mine/account-add?isAdd=1')" :style="{background:$store.state.backColor}">
+      <div class="inner" >
+        <van-icon name="plus"/>
+        <span class="text">新增</span>
+      </div>
+    </van-button>
+  </div>
+</template>
+
+<script>
+import hList from '../../../components/common/h-list';
+  export default {
+    name: "account",
+    components:{
+      hList
+    },
+    data() {
+      return {
+        value:'',
+        list:[],
+        finished: false,
+        loading: false
+      }
+    },
+    computed:{
+        // 根据搜索关键字获取 对应的数据
+        calcList(){
+            let v = this.value;
+            let arr = this.list.filter(item=>{
+                return item.name.indexOf(v) > -1 || item.mblNo.indexOf(v) > -1;
+            })
+            if(arr){
+                return arr
+            }
+            return this.list;
+        }
+    },
+    created(){
+      this.init()
+    },
+    methods: {
+      saleOrderLoad(){
+        console.log(6767)
+        this.finished = true
+      },
+      go(id){
+        this.$router.push(`/mine/account-add?id=${id}`)
+      },
+      init(){
+        this.$api.getMgrList().then((res) => {
+          console.log(res);
+          this.list = res.body ||[];
+        }).catch((err) => {
+          
+        });
+      }
+    }
+  }
+</script>
+
+<style scoped lang="less">
+  .account {
+    background-color: @c-bg-f5;
+    padding-top: 44px;
+
+    .btn {
+      position: fixed;
+      width: 50px;
+      height: 50px;
+      padding: 0;
+      right: 8px;
+      bottom: 68px;
+      border-radius: 50%;
+      color: @c-text-f5;
+      z-index: @zIndex-50;
+      box-shadow: 0px 5px 9px 0px rgba(80, 47, 183, 0.2);
+      background: linear-gradient(0deg, rgba(106, 79, 188, 1), rgba(137, 110, 219, 1));
+
+      .inner {
+        display: flex;
+        flex-direction: column;
+      }
+
+      .text {
+        .lh(15px);
+      }
+    }
+
+  }
+  .search{
+    margin-top: 10px;
+    padding: 15px 8px;
+  }
+  .item-box{
+    background-color: @c-bg-fff;
+    padding-bottom: 25px;
+  }
+  .account-item{
+    height: 67px;
+    margin: 0 8px 10px;
+    padding-left: 12px;
+    box-shadow:0px 0px 5px 0px rgba(66,61,93,0.08);
+    border-radius:3px;
+    .icon-box{
+      width: 32px;
+      height: 32px;
+      margin-right: 15px;
+      border-radius: 50%;
+      background-color: @c-bg-black;
+    }
+    .name{
+      margin-bottom: 5px;
+      font-weight: bold;
+    }
+  }
+</style>
diff --git a/src/views/mine/channel/channel-add.vue b/src/views/mine/channel/channel-add.vue
new file mode 100644
index 0000000..e38f2f4
--- /dev/null
+++ b/src/views/mine/channel/channel-add.vue
@@ -0,0 +1,223 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-15 16:25:46
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-17 09:38:26
+ * @Description: 新增渠道页面
+ -->
+<template>
+    <div class="channel-detail-box h-100-g">
+        <v-navbar :title="isAdd ? '新增渠道':'渠道详情'" fixed>
+            <div slot='right' v-if="!isAdd" @click="updateChannel">
+                保存
+            </div>
+        </v-navbar>
+        <div class="cell-group">
+            <v-cell :readonly="!isAdd" v-model.trim="form.chanName" max='20' label='渠道名称' icon='iconyonghu' placeholder='请输入渠道名称'></v-cell>
+            <v-cell :readonly="!isAdd" v-model.trim="form.licenseNo"  max='20' label='营业执照号' icon='iconmobanguanliliebiao' placeholder='请输入营业执照号'></v-cell>
+            <v-cell :readonly="!isAdd" v-model.trim="form.priIdNo"  max='18' label='身份证号' icon='iconyinhangka' placeholder='请输入身份证号'></v-cell>
+            <v-cell :value="form.areaText" label='所在地区' icon='icondingwei' isLink readonly  placeholder='请选择' @click.native="isShowArea = true;"></v-cell>
+            <v-cell v-model.trim="form.dtlAddr"  max='30' label='详细地址' icon='icontishi' placeholder='请输入详细地址'></v-cell>
+        </div>
+
+        <div class="cell-group">
+            <v-cell :readonly="!isAdd" v-model.trim="form.priName"  max='6' label='负责人姓名' placeholder='请输入姓名'></v-cell>
+            <v-cell :readonly="!isAdd" v-model.trim="form.priMblNo" type='tel' max='11' label='负责人手机号' placeholder='请输入手机号'></v-cell>
+        </div>
+        <p class="tip" v-if="isAdd">*该手机号将作为登录用户名,密码将通过短信发至手机</p>
+
+        <div class="cell-group" v-if="isAdd">
+            <v-cell v-model.trim="form.priEmail"  max='50' label='联系邮箱' placeholder='请输入邮箱地址'></v-cell>
+        </div>
+
+        <footer class="flex-center-g footer" v-if="isAdd">
+            <van-button class="btn-submit" :color="$store.state.backColor" @click="addChannel">新增渠道</van-button>
+        </footer>
+
+         <footer class="flex-center-g footer" v-else>
+            <van-button class="btn left" @click="openDialog">{{form.freezeStatus?'冻结':'启用'}}渠道</van-button>
+            <van-button class="btn right" :color="$store.state.backColor" @click="go">商户查询</van-button>
+        </footer>
+
+        <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+            <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+        </van-popup>
+
+    </div>
+</template>
+
+<script>
+    import {mapState, mapMutations} from 'vuex';
+    export default {
+        data() {
+            return {
+                isShowArea:false,
+                form:{
+                    areaText:'',//地区文字展示
+                    chanName:'',
+                    licenseNo:'',
+                    priIdNo:'',
+                    dtlAddr:'',
+                    priName:'',
+                    priMblNo:'',
+                    priEmail:'',
+                    provCode: '',
+                    cityCode: '',
+                    areaCode: '',
+                },
+                rule:[
+                    {key:"chanName",message:"请输入渠道名称",type:"isEmpty"},
+                    {key:"chanName",message:"请输入正确的渠道名称",rule:/^[\u4e00-\u9fa50-9a-zA-Z]{1,20}$/},
+                    {key:"licenseNo",message:"请输入营业执照号",type:"isEmpty"},
+                    {key:"licenseNo",message:"请输入正确的营业执照号",rule:/^[0-9a-zA-Z]{1,20}$/},
+                    {key:"priIdNo",message:"请输入身份证号",type:"isEmpty"},
+                    // {key:"priIdNo",message:"请输入正确的身份证号",type:"isIdCard"},
+                    {key:"areaText",message:"请选择地址",type:"isEmpty"},
+                    {key:"dtlAddr",message:"请输入详细地址",type:"isEmpty"},
+                    {key:"dtlAddr",message:"请输入正确的详细地址",rule:/^[\u4e00-\u9fa50-9a-zA-Z]{1,30}$/},
+                    {key:"priName",message:"请输入负责人姓名",type:"isEmpty"},
+                    {key:"priName",message:"请输入正确的负责人姓名",rule:/^[\u4e00-\u9fa50-9a-zA-Z]{1,6}$/},
+                    {key:"priMblNo",message:"请输入负责人手机号",type:"isEmpty"},
+                    {key:"priMblNo",message:"请输入正确的手机号",type:"isTel"},
+                    {key:"priEmail",message:"请输入联系邮箱",type:"isEmpty"},
+                    {key:"priEmail",message:"请输入正确的联系邮箱",type:"isEmail"},
+                ]
+            }
+        },
+        computed:{
+            ...mapState(['areaList']),
+            // 判断是 添加 还是 详情
+            isAdd(){
+                return this.$route.query.isAdd =='1';
+            }
+        },
+        created(){
+            if(!this.isAdd){
+                this.getChannelInfo()
+            }
+        },
+        methods:{
+            go(){
+                 this.$router.push({
+                    path: '/mine/mer-manager',
+                    query: {
+                        chanId: this.form.chanId
+                    }
+                });
+            },
+            //关闭地区弹窗
+            closeAreaModal(){
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            setAreaValue(arr){
+                this.form.areaText = arr[0].name + '-' +arr[1].name +'-'+ arr[2].name;
+                this.form.provCode= arr[0].code;
+                this.form.cityCode= arr[1].code;
+                this.form.areaCode= arr[2].code;
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            // 冻结启用 渠道
+            openDialog(){
+                let {chanId,freezeStatus} = this.form;
+                this.$dialog.confirm({
+                    message: `请问是否确认${freezeStatus ? '冻结' : '启用'}该渠道?`
+                }).then(() => {
+                    let statusType = freezeStatus ? 0 : 1;
+                    this.$api.channSwitchStatus({
+                        orgId: chanId,
+                        orgType: 2,
+                        statusType
+                    }).then((res) => {
+                        let text = statusType ? '启用成功' : '冻结成功';
+                        this.form.freezeStatus = statusType;
+                        this.$notify_success(text)
+                    }).catch((err) => {
+
+                    });
+                }).catch(() => {
+                // on cancel
+                });
+            },
+            // 获取渠道详情
+            getChannelInfo(){
+                this.$api.getChannelInfo(this.$route.query.chanId).then(({body}) => {
+                    this.form = {...body}
+                    this.form.areaText = body.provName + '-' +body.cityName +'-'+ body.areaName;
+                }).catch((err) => {
+
+                });
+            },
+            //更新渠道信息
+            updateChannel(){
+                if(!this.validatorForm()) return
+                this.$api.updateChan(this.form).then((res) => {
+                    this.$notify('保存成功')
+                }).catch((err) => {
+                });
+            },
+            // 验证form参数
+            validatorForm(){
+                return this.$validator(this.form,this.rule).check(item=>{
+                    this.$notify(item.message)
+                })
+            },
+            // 新增渠道
+            addChannel() {
+                if(!this.validatorForm()) return
+                this.$api.addChan(this.form).then(() => {
+                    this.$notify('新增成功')
+                    setTimeout(() => this.$router.go(-1), 1000);
+                });
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .channel-detail-box {
+        background-color: @c-bg-f5;
+        padding-top: 44px;
+        .tip {
+            margin: 10px 0 15px 21px;
+            font-size: @font-12;
+            color: @c-text-999;
+        }
+    }
+
+    .cell-group {
+        margin: 10px 8px 0;
+    }
+
+    .btn-submit {
+        width: 340px;
+        height: 44px;
+        border: none;
+        font-size: @font-16;
+        border-radius: 22px;
+        background-color: @c-bg-default;
+        color: @c-text-fff;
+
+    }
+
+    .footer {
+        margin-top: 20px;
+        padding-bottom: 30px;
+        .btn{
+            width: 170px;
+            height: 44px;
+            border: none;
+            font-size: @font-16;
+            &.left{
+                background-color: @c-bg-eee;
+                color: @c-text-666;
+                border-radius:22px 0px 0px 22px;
+            }
+            &.right{
+            background-color: @c-bg-default;
+                color: @c-text-fff;
+                border-radius:0px 22px 22px 0px;
+            }
+        }
+    }
+</style>
diff --git a/src/views/mine/channel/channel-detail.vue b/src/views/mine/channel/channel-detail.vue
new file mode 100644
index 0000000..a0e88b3
--- /dev/null
+++ b/src/views/mine/channel/channel-detail.vue
@@ -0,0 +1,74 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-15 16:25:46
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-22 15:58:16
+ * @Description: !!!
+ -->
+<template>
+    <div class="channel-detail-box h-100-g">
+        <v-navbar title="渠道信息" fixed rightText='保存'></v-navbar>
+        <div class="cell-group">
+            <v-cell v-model="aa" label='渠道名称' icon='iconyonghu'></v-cell>
+            <v-cell label='营业执照号' icon='iconmobanguanliliebiao'></v-cell>
+            <v-cell label='身份证号' icon='iconyinhangka'></v-cell>
+            <v-cell label='所在地区' icon='icondingwei' isLink></v-cell>
+            <v-cell label='详细地址' icon='icontishi'></v-cell>
+        </div>
+
+        <div class="cell-group">
+            <v-cell label='负责人姓名'></v-cell>
+            <v-cell label='负责人手机号'></v-cell>
+        </div>
+
+        <div class="cell-group">
+            <v-cell label='产品配置' isLink></v-cell>
+        </div>
+
+        <footer class="flex-center-g footer">
+            <van-button class="btn left">冻结渠道</van-button>
+            <van-button class="btn right">商户查询</van-button>
+        </footer>
+    </div>
+</template>
+
+<script>
+    export default {
+        data() {
+            return {
+                aa: '阿里巴巴'
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .channel-detail-box {
+        background-color: @c-bg-f5;
+        padding-top: 44px;
+    }
+
+    .cell-group {
+        margin: 10px 8px 0;
+    }
+
+    .footer{
+        margin-top: 60px;
+        padding-bottom: 30px;
+            .btn{
+        width: 170px;
+        height: 44px;
+        border: none;
+        font-size: @font-16;
+        &.left{
+            background-color: @c-bg-eee;
+            color: @c-text-666;
+            border-radius:22px 0px 0px 22px;
+        }
+        &.right{
+           background-color: @c-bg-default;
+            color: @c-text-fff;
+            border-radius:0px 22px 22px 0px;
+        }
+    }
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/mine/channel/channel.vue b/src/views/mine/channel/channel.vue
new file mode 100644
index 0000000..745aa6a
--- /dev/null
+++ b/src/views/mine/channel/channel.vue
@@ -0,0 +1,153 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-15 15:40:14
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-19 18:28:39
+ * @Description:
+ -->
+<template>
+    <div class="channel-box ">
+        <v-navbar title="渠道管理" fixed></v-navbar>
+        <van-search class="search" placeholder="请输入商户名称/负责人电话" v-model="value" shape='round' />
+        <!-- <div class="list-box-div"> -->
+           
+                <div class="item-box">
+                    <router-link class="channel-item flex-start-g" v-for="(item, index) in calcChanList" :key="index" :to="{path:'/mine/channel-add',query:{chanId:item.chanId}}">
+                        <p class="icon-box flex-center-g" :style="{background:$store.state.backColor}">
+                            <svg class="icon" aria-hidden="true" style="width:25px;height:25px;fill:#fff" @click="$router.back()">
+                                <use xlink:href="#iconyonghu"></use>
+                            </svg>
+                        </p>
+                        <div>
+                            <p class="name">{{item.priName}}</p>
+                            <p class="c-text-666-g font-12-g">{{item.priMblNo}}</p>
+                        </div>
+                    </router-link>
+                </div>
+                <!-- <van-button class="btn" @click="$router.push('/mine/channel-add')">
+                    <div class="inner">
+                        <van-icon name="plus" />
+                        <span class="text">新增</span>
+                    </div>
+                </!-->
+                <v-button-circle icon='iconjia' title='新增' @click="$router.push('/mine/channel-add?isAdd=1')"></v-button-circle>
+           
+        <!-- </div> -->
+    </div>
+</template>
+
+<script>
+import hList from '../../../components/common/h-list';
+export default {
+    components:{
+        hList
+    },
+    data() {
+        return {
+            finished:false,
+            loading:false,
+            value:'',
+            chanList:[]
+        }
+    },
+    computed:{
+        // 根据搜索关键字获取 对应的数据
+        calcChanList(){
+            let v = this.value;
+            let arr = this.chanList.filter(item=>{
+                return item.priName.indexOf(v) > -1 || item.priMblNo.indexOf(v) > -1;
+            })
+            if(arr){
+                return arr
+            }
+            return this.chanList;
+        }
+    },
+    created(){
+        this.init()
+    },
+    methods: {
+        saleOrderLoad(){
+            console.log(343434)
+            this.finished = true
+        },
+        init(){
+            this.$api.getChannel().then((res) => {
+                let {chanList} = res.body;
+                let arr = [];
+                for(let key in chanList){
+                    arr.push(...chanList[key])
+                }
+                this.chanList = arr;
+                //this.chanList = [...arr,...arr,...arr,...arr,...arr,...arr,...arr,...arr,...arr];//调试用
+            }).catch((err) => {
+
+            });
+        },
+        go(){
+            this.$router.push('/mine/channel-detail')
+        }
+    },
+}
+</script>
+<style lang="less" scoped>
+.channel-box{
+    background-color: @c-bg-f5;
+    padding-top: 44px;
+    //padding-bottom: 50px;
+    // .list-box-div{
+    //         overflow: scroll;
+    //         height: 80vh;
+    //     }
+    // .list-box-div::-webkit-scrollbar,.withdrawals-box::-webkit-scrollbar {
+    //     display: none;
+    // }
+    .btn{
+        position: fixed;
+        width:50px;
+        height:50px;
+        padding: 0;
+        right: 8px;
+        bottom: 68px;
+        border-radius:50%;
+        color: @c-text-f5;
+        z-index: @zIndex-50;
+        box-shadow:0px 5px 9px 0px rgba(80,47,183,0.2);
+        background:linear-gradient(0deg,rgba(106,79,188,1),rgba(137,110,219,1));
+        .inner{
+            display: flex;
+            flex-direction: column;
+        }
+        .text{
+            .lh(15px);
+        }
+    }
+}
+.search{
+    margin-top: 10px;
+    padding: 15px 8px;
+}
+.item-box{
+    background-color: @c-bg-fff;
+    padding-bottom: 25px;
+}
+.channel-item{
+    height: 67px;
+    margin: 0 8px 10px;
+    padding-left: 12px;
+    box-shadow:0px 0px 5px 0px rgba(66,61,93,0.08);
+    border-radius:3px;
+    color: @c-text-333;
+    .icon-box{
+        width: 32px;
+        height: 32px;
+        margin-right: 15px;
+        border-radius: 50%;
+        background-color: @c-bg-black;
+    }
+    .name{
+        margin-bottom: 5px;
+        font-weight: bold;
+    }
+}
+</style>
diff --git a/src/views/mine/mer/mer-info.vue b/src/views/mine/mer/mer-info.vue
new file mode 100644
index 0000000..29d1a90
--- /dev/null
+++ b/src/views/mine/mer/mer-info.vue
@@ -0,0 +1,182 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 15:50:40
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-19 16:36:23
+ * @Description: 商户详情页面
+ -->
+<template>
+    <div class="mer-info-box h-100-g">
+        <v-navbar title="商户信息" fixed></v-navbar>
+
+        <div class="content">
+            <div class="cell-group">
+                <v-cell v-model="info.merId" :Show_input="false" label='商户ID' icon='iconyonghu' readonly placeholder='请输入渠道名称'></v-cell>
+                <v-cell v-model="info.merName" :Show_input="false" label='商户名称' icon='iconmobanguanliliebiao' readonly placeholder='请输入营业执照号' @click.native="copyText"></v-cell>
+                <v-cell v-model="info.licenseNo" :Show_input="false" label='营业执照号' icon='iconyinhangka' readonly placeholder='请输入身份证号'></v-cell>
+                <v-cell v-model="Addrs" :Show_input="false" label='所在地区' icon='icondingwei' readonly placeholder='请选择'></v-cell>
+                <v-cell v-model="info.addr.dtlAddr" :Show_input="false" label='详细地址' icon='icontishi' readonly placeholder='请输入详细地址'></v-cell>
+            </div>
+
+            <div class="cell-group">
+                <v-cell v-model="info.legalName" :Show_input="true" label='法人姓名' readonly placeholder='请输入姓名'></v-cell>
+                <v-cell v-model="info.legalIdNo" :Show_input="false" label='法人身份证号' readonly placeholder='请输入手机号'></v-cell>
+            </div>
+
+            <div class="cell-group">
+                <v-cell v-model="info.priName" :Show_input="false" label='负责人姓名' readonly placeholder='请输入姓名'></v-cell>
+                <v-cell v-model="info.priMblNo" :Show_input="false" label='负责人手机号' readonly placeholder='请输入手机号'></v-cell>
+            </div>
+
+            <div class="cell-group" v-if="info.merZfbInfos.length > 0">
+                <v-cell v-for="(item,i) in info.merZfbInfos" :key="i" v-model="item.hbStatusName" :Show_input="false" :label='item.zfbVersionName' readonly></v-cell>
+               
+            </div>
+
+            <div class="cell-group">
+                <v-cell v-if="info.cardNo" :Show_input="false" v-model="info.cardNo" label='银行账户' readonly placeholder='请输入姓名'></v-cell>
+                <v-cell v-if="info.cardName" :Show_input="false" v-model="info.cardName" label='户名' readonly placeholder='请输入手机号'></v-cell>
+                <v-cell v-if="info.cardType" :Show_input="false" v-model="info.cardType" label='账户类型' readonly placeholder='请输入手机号'></v-cell>
+                <v-cell v-if="info.bankName" :Show_input="false" v-model="info.bankName" label='银行名称' readonly placeholder='请输入手机号'></v-cell>
+                <v-cell v-if="info.bankDtlName" :Show_input="false" v-model="info.bankDtlName" label='开户行地址' readonly placeholder='请输入手机号'></v-cell>
+            </div>
+
+            <div class="cell-group" v-if="info.hasPhotos">
+                <!-- $router.push({path:'/relatedpictures',query:{merId:info.merId}}) -->
+                <v-cell :Show_input="false" label='相关照片' @click.native="goNext" isLink readonly placeholder=''></v-cell>
+            </div>
+
+            <footer class="flex-center-g footer">
+                <van-button class="btn left" @click="openDialog">{{info.freezeStatus?'冻结':'启用'}}商户</van-button>
+                <van-button class="btn right" :color="$store.state.backColor" @click="$router.push(`/main/home?id=${info.merId}`)">订单查询</van-button>
+            </footer>
+        </div>
+    </div>
+</template>
+<script>
+    import {_copyToClipboard} from '@/utils/index';
+    export default {
+        data() {
+            return {
+                Addrs:'',
+                info:{
+                    addr:{
+                        dtlAddr:'',
+                        province:{name:''},
+                        city:{name:''},
+                        area:{name:''},
+                    },
+
+                }
+            }
+        },
+        created(){
+            this.init();
+        },
+        methods:{
+            goNext(){
+                console.log(this.info.merZfbInfos)
+                
+                sessionStorage.setItem('td-mer-photo', JSON.stringify(this.info.merZfbInfos))
+                this.$router.push({
+                    path:'/mine/mer-photo-chose',
+                    query:{
+                        merId:this.info.merId
+                    }
+                })
+            },
+            copyText(){
+                _copyToClipboard(this.info.merName)
+                this.$notify('复制成功!')
+            },
+            init(){
+                let obj = {
+                    merId:this.$route.query.merId
+                };
+                this.$api.merDetail(obj).then(res => {
+                    this.info = res.body;
+                    let list = []
+                    res.body.merZfbInfos.forEach((item, index) => {
+                        if(sessionStorage.isddxt == 1){
+                            if(item.zfbVersion == 6 || item.zfbVersion == 7) {
+                                list.push(item)
+                            }
+                        }else{
+                            if(item.zfbVersion != 6 && item.zfbVersion != 7){
+                                list.push(item)
+                            }
+                        }
+                    })
+                    this.info.merZfbInfos = list
+                    let province = this.info.addr.province ||'',
+                        city = this.info.addr.city ||'',
+                        merZfbInfos = this.info.merZfbInfos,
+                        area = this.info.addr.area ||'';
+                    this.Addrs = (province.name || '') +  (city.name || '') + (area.name || '');
+                    console.log(list)
+                });
+            },
+
+            // 冻结启用 商户
+            openDialog(){
+                let {merId,freezeStatus} = this.info;
+                this.$dialog.confirm({
+                    message: `请问是否确认${freezeStatus ? '冻结' : '启用'}该商户?`
+                }).then(() => {
+                    let statusType = freezeStatus ? 0 : 1;
+                    this.$api.channSwitchStatus({
+                        orgId: merId,
+                        orgType: 3,
+                        statusType
+                    }).then((res) => {
+                        let text = statusType ? '启用成功' : '冻结成功';
+                        this.info.freezeStatus = statusType;
+                        this.$notify_success(text)
+                    }).catch((err) => {
+
+                    });
+                }).catch(() => {
+                    // on cancel
+                });
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .mer-info-box {
+        background-color: @c-bg-f5;
+        padding-top: 44px;
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+
+    .footer {
+        margin-top: 30px;
+        padding-bottom: 30px;
+
+        .btn {
+            width: 170px;
+            height: 44px;
+            border: none;
+            font-size: @font-16;
+
+            &.left {
+                background-color: @c-bg-eee;
+                color: @c-text-666;
+                border-radius: 22px 0px 0px 22px;
+            }
+
+            &.right {
+                background-color: @c-bg-default;
+                color: @c-text-fff;
+                border-radius: 0px 22px 22px 0px;
+            }
+        }
+    }
+</style>
diff --git a/src/views/mine/mer/mer-manager.vue b/src/views/mine/mer/mer-manager.vue
new file mode 100644
index 0000000..ecb29ca
--- /dev/null
+++ b/src/views/mine/mer/mer-manager.vue
@@ -0,0 +1,333 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 13:55:57
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-07 11:17:23
+ * @Description:
+ -->
+<template>
+    <div class="mer-manager-box">
+        <v-navbar title="商户管理" fixed >
+            <template v-slot:right >
+                <div class="flex-center-g" @click="isShowFilter = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <van-search class="search" placeholder="请输入商户名称/负责人电话" @blur="onBlur" v-model="value" shape='round' />
+        <!-- <div class="list-box-div"> -->
+            <hList :defScroll='10' :finished='finished' :loading="loading" @scroll="saleOrderLoad">
+                <div class="item-group">
+                    <div class="mer-item flex-between-g" v-for="(item, index) in list" :key="index" @click="goMerDetail(item.merId)">
+                        <div class="flex-start-g">
+                            <div class="icon-box flex-center-g" :style="{background:$store.state.backColor}">
+                                <svg class="icon" aria-hidden="true" style="width:22px;height:22px;fill:#fff;">
+                                    <use xlink:href="#iconshanghuguanliliebiao"></use>
+                                </svg>
+                            </div>
+                            <div>
+                                <p class="name" v-text="item.merName">商户名称</p>
+                                <p class="tel" v-text="item.priMblNo">未配置产品</p>
+                                <p class="tel" v-text="item.hbStatusName"></p>
+                            </div>
+                        </div>
+                        <van-button :style="{background:$store.state.backColor}" class="btn" @click.stop="goTempDetail(item.merId)" v-if="orgType != 2">产品管理</van-button>
+                    </div>
+                </div>
+            </hList>
+        <!-- </div> -->
+        <v-button-circle icon='icondaochu' @click="exportExcel" title='导出'></v-button-circle>
+
+        <van-popup v-model="isShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g" :style="{background:$store.state.backColor, opacity: 0.8}">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" :style="{color:$store.state.backColor}" @click="isShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+
+        <v-filter  v-model="isShowFilter" :areaList="areaList" :hasTime="false" :hasMoney="false" hasCity :belongArr="belongArr" :templateArr="templateArr" @search="init"></v-filter>
+    </div>
+</template>
+
+<script>
+import { mapState,mapGetters } from 'vuex';
+import {calcAreaTwo} from '@/utils/index';
+import hList from '@/components/common/h-list.vue'
+    export default {
+        components:{
+            hList,
+        },
+        data() {
+            return {
+                isShow:false,
+                isShowFilter:false,
+                finished:false,
+                loading:false,
+                value:'',
+                list:[],
+                belongArr:[],
+                templateArr:[],
+
+                querys: {
+                    orderField: null,
+                    order: null,
+                    searchKey: null,
+                },
+                areaList:{},
+                Area:[],
+            }
+        },
+        computed:{
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            // 根据搜索关键字获取 对应的数据
+            calcList(){
+                let v = this.value;
+                let arr = this.list.filter(item=>{
+                    return item.merName.indexOf(v) > -1 || item.priMblNo.indexOf(v) > -1;
+                })
+                if(arr){
+                    return arr
+                }
+                return this.list;
+            },
+            chanId(){
+                return this.$route.query.chanId || '';
+            }
+        },
+        created(){
+            this.saleOrderLoad()
+            //this.init()
+            this.merInit()
+            this.getArea()
+        },
+        methods: {
+            onBlur(){
+                this.$api.merList({
+                    searchKey:this.value
+                }).then(res=>{
+                    this.list = res.body
+                })
+            },
+            saleOrderLoad(params={}){
+                if(this.chanId){
+                    params.chanList = [this.chanId]
+                }
+                if(this.list.length >= 10){
+                    params.merId = this.list[this.list.length-1].merId
+                }
+                this.$api.merList(params).then((res) => {
+                    if(res.body.length < 10){
+                        this.list = [...this.list,...res.body]
+                        this.loading = false
+                        this.finished = true
+                    }else{
+                        this.list = [...this.list,...res.body]
+                        this.loading = false
+                        this.finished = false
+                    }
+                    this.isShowFilter = false;
+                }).catch((err) => {
+
+                });
+            },
+            //跳转到商户详情
+            goMerDetail(merId){
+                this.$router.push({
+                    path:'/mine/mer-info',
+                    query:{
+                        merId
+                    }
+                })
+            },
+            //跳转到模板详情
+            goTempDetail(merId){
+                this.$router.push({
+                    path:'/template/detail',
+                    query:{
+                        merId
+                    }
+                })
+            },
+            parseArea(list,){
+                list.forEach(item=>{
+                    let childList = item.childList;
+                    this.Area.push({
+                        name:item.name,
+                        value:item.code
+                    })
+                    if(Array.isArray(childList)){
+                        this.parseArea(childList)
+                    }
+                })
+            },
+            getArea(){
+                this.$api.getOrgAreaInfo(2).then(res => {
+                    let arr = [];
+                    let list = res.body || [];
+                    this.parseArea(list)
+                    this.areaList = calcAreaTwo(this.Area)
+                    console.log(this.areaList)
+                });
+            },
+            merInit(){
+                this.$api.merInitFilter().then(({body}) => {
+                    let chanList = body.chanList || [];
+                    let templateArr = body.tempList || [];
+                    chanList = chanList.map(val => {
+                        val.name = val.chanName;
+                        val.code = val.chanId;
+                        return val;
+                    });
+                    templateArr = templateArr.map(val => {
+                        val.name = val.tempName;
+                        val.code = val.id;
+                        return val;
+                    });
+                    this.templateArr = templateArr;
+                    if (this.orgType !== 2) {
+                        this.belongArr = chanList;
+                    }
+                });
+            },
+            init(params={}){
+                if(this.chanId){
+                    params.chanList = [this.chanId]
+                }
+                this.$api.merList(params).then((res) => {
+                    this.list = res.body || [];
+                    this.isShowFilter = false;
+                    if(res.body.length < 10){
+                        this.finished = true
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            exportExcel(){
+                if (!this.list.length) {
+                    this.$notify('暂无数据导出');
+                    return;
+                }
+                let obj = {
+                    ...this.querys
+                };
+                this.$api.merExport(obj).then(res => {
+                    this.isShow = true;
+                });
+
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+    // .list-box-div{
+    //         overflow: scroll;
+    //         height: 80vh;
+    //     }
+    // .list-box-div::-webkit-scrollbar,.withdrawals-box::-webkit-scrollbar {
+    //     display: none;
+    // }
+    .mer-manager-box {
+        background-color: @c-bg-f5;
+        padding-top: 44px;
+    }
+
+    .item-group {
+        background-color: @c-bg-fff;
+        padding-bottom: 25px;
+    }
+
+    .search {
+        padding: 15px 8px;
+        margin-top: 10px;
+    }
+
+    .mer-item {
+        margin: 0 8px 10px;
+        box-shadow: 0px 0px 5px 0px rgba(66, 61, 93, 0.08);
+        border-radius: 3px;
+        background: @c-bg-fff;
+        padding: 0 12px;
+        height: 80px;
+
+        .icon-box {
+            height: 32px;
+            width: 32px;
+            margin-right: 15px;
+            border-radius: 50%;
+            background: @c-bg-black;
+        }
+
+        .name {
+            font-weight: bold;
+            max-width: 170px;
+        }
+
+        .tel {
+            font-size: @font-12;
+            color: @c-text-666;
+            margin-top: 5px;
+        }
+
+        .btn {
+            .lh(25px);
+            padding: 0 12px;
+            background: @c-bg-default;
+            border-radius: 13px;
+            color: @c-text-fff;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/mine/mer/mer-photo-chose.vue b/src/views/mine/mer/mer-photo-chose.vue
new file mode 100644
index 0000000..82940e6
--- /dev/null
+++ b/src/views/mine/mer/mer-photo-chose.vue
@@ -0,0 +1,166 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-04-09 16:11:01
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-04-09 16:45:30
+ * @Description: 
+ -->
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-04-03 14:58:33
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-04-08 11:28:40
+ * @Description: 选择通道
+ -->
+<template>
+    <div class="tdxz-div">
+       <van-nav-bar title="选择通道" left-text="返回" left-arrow @click-left="onClickLeft" fixed style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar> 
+        <div class="proudct-box">
+            <div v-for="(e,i) in list" :key="i" @click="goNext(e)">
+                <img :src="e.icon" alt="">
+                <p>{{e.zfbVersionName}}</p>   
+            </div>
+        </div>
+        <van-popup v-model="noOpenShow" class="no-open">
+            <div class="no-open-img">
+                <img src="../../../assets/imgs/openpic.png" alt="">
+            </div>
+            <p>{{ noOpenText }}</p>
+            <van-button type="default" class="no-open-btn" @click="noOpenShow = false" round>确定</van-button>
+        </van-popup>
+    </div>
+</template>
+<script>
+import Vue from 'vue';
+import { NavBar } from 'vant';
+    
+Vue.use(NavBar);
+export default {
+    data() {
+        return {
+            noOpenText: '门店暂未开通此通道', //产品未开通文本内容
+            noOpenShow: false, //产品未开通弹窗控制
+            list:[],//通道列表
+        }
+    },
+    created(){
+        // this.$api.prodZfbVersion().then(res=>{
+        //     this.list = res.body
+        // })
+        this.list = JSON.parse(sessionStorage.getItem('td-mer-photo'))
+        console.log(this.list)
+    },
+    methods:{
+        // 返回上一页
+        onClickLeft() {
+            this.$router.go(-1);
+        },
+        // 跳转
+        goNext(item){
+
+            // var id = this.$route.query.typeId,
+            //     path = '';
+            // if(item.openStatus == 2){
+            //     switch (Number(id)) {
+            //         case 200008:    
+            //             path = '/facepay/calcmoney';
+            //             break
+            //         case 200002:
+            //             path = '/hb-credit-installment';
+            //             break
+            //         case 200009:
+            //             path = '/hbhy-installment';
+            //             break
+            //         case 200010:
+            //             path = '/shtx';
+            //             break
+            //     }
+            // }else{
+            //     this.noOpenShow = true
+            //     return
+            // }
+            if(item.hbStatus != 0){
+                this.$router.push({
+                    path:'/relatedpictures',
+                    query:{
+                        // typeId: this.$route.query.typeId,
+                        // prodId: this.$route.query.prodId,
+                        merId:this.$route.query.merId,
+                        zfbVersion:item.zfbVersion
+                    }
+                })
+            }
+            else{
+                this.noOpenShow = true
+                return
+            }
+            
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+    .tdxz-div{
+        min-height: 100vh;
+        background: #F5F5F7;
+        padding-top: 56px;
+        .proudct-box{
+            width: 359px;
+            margin: auto;
+            box-sizing: border-box;
+            padding:16px 0;
+            // display: flex;
+            // justify-items: space-between;
+            background: #fff;
+            div{
+                display: inline-block;
+                width: 115px;
+                height: 90px;
+                box-shadow:0px 0px 15px 0px rgba(66,61,93,0.08);
+                border-radius:8px;
+                margin: 16px 31px 16px 31px;
+                text-align: center;
+                box-sizing: border-box;
+                padding: 14px 0 18px 0;
+                img{
+                    width: 42px;
+                    height: 42px;
+                }
+                p{
+                    font-size: 13px;
+                    color: #333;
+                }
+            }
+        }
+        .no-open{
+        width: 280px;
+        height: 190px;
+        text-align: center;
+        border-radius: 6px;
+        &-img{
+            width: 100%;
+            margin-top: 13px;
+            img{
+                width: 75px;
+                height: 75px;
+            }
+        }
+        p{
+            font-size: 14px;
+            color: #666666;
+            margin-top: 7px;
+        }
+        &-btn{
+            height: 36px;
+            width: 60%;
+            margin: 0 20%;
+            background: #896EDB;
+            color: #fff;
+            margin-top: 28px;
+            line-height: 36px;
+        }
+    }
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/mine/redEnvelopes/red-envelopes.vue b/src/views/mine/redEnvelopes/red-envelopes.vue
new file mode 100644
index 0000000..ee71e2e
--- /dev/null
+++ b/src/views/mine/redEnvelopes/red-envelopes.vue
@@ -0,0 +1,430 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-10-23 17:26:01
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-04-24 15:06:29
+ * @Description: 
+ -->
+<template>
+  <div class="hb-box">
+    <!-- <van-nav-bar title="红包账户" left-arrow @click-left="onClickLeft" /> -->
+    <v-navbar title="红包账户"></v-navbar>
+    <div class="color-squre">
+      <img src="../../../../static/img/bg.png" style="width:100%;height:100%">
+    </div>
+    <div class="balance-box">
+      <div class="left">
+        <p class="tit">
+          <img src="../../../../static/img/hongbaoxiao.png" />红包余额(元)
+          <!-- <img src="../static/img/hongbaoxiao.png" />红包余额(元) -->
+        </p>
+        <p class="balance">{{this.balance}}</p>
+      </div>
+      <div class="right">
+        <van-button
+          round
+          type="info"
+          size="small"
+          color="#896EDB"
+          style="width:75px;
+                background:rgba(137,110,219,1);
+                box-shadow:0px 5px 7px 0px rgba(137,98,255,0.32);
+                border-radius:14px;
+               margin-top:44px;box-shadow:0px 10px 14px 0px rgba(137,98,255,0.32);border: .02rem solid rgb(137, 110, 219);"
+          @click="goNext"
+        >提现</van-button>
+      </div>
+    </div>
+    <div class="tab">
+      <div class="packet-records" @click="checkPacket" :class="col.clOne">
+        <p>红包记录</p>
+      </div>
+      <div class="withdrawals-record" @click="checkWithdrawals" :class="col.clTwo">
+        <p>提现记录</p>
+      </div>
+      <div class="packet-box" v-if="tabValue=='packet'">
+        <van-list
+          v-model="loading"
+          :finished="finished"
+  finished-text="没有更多了"
+          @load="onLoad"
+        >
+        <div class="content-box" v-for="(item,index) in packet" :key="index">
+          <p>{{item.redPacketTitle}}</p>
+          <p>
+            <span>{{item.redPacketDtl}}</span>
+            <span>{{item.amount}}</span>
+          </p>
+          <p>{{item.creTimeStr}}</p>
+        </div>
+        </van-list>
+      </div>
+      <div class="withdrawals-box" v-if="tabValue=='withdrawals'">
+        <van-list
+          v-model="loadingTwo"
+          :finished="finishedTwo"
+          finished-text="没有更多了"
+          @load="onLoadTwo"
+        >
+        <div class="content-box-two" v-for="(item,index) in withdrawals" :key="index">
+          <div class="left">
+            <p>{{item.expendDesc}}</p>
+            <p>{{item.creTimeStr}}</p>
+          </div>
+          <div class="right">
+            <p>{{item.amount}}</p>
+          </div>
+        </div>
+         </van-list>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import Vue from "vue";
+import { NavBar } from "vant";
+import myApi from "../../../api/index"
+Vue.use(NavBar);
+export default {
+  data() {
+    return {
+      list: [],
+      loading: false,
+      loadingTwo:false,
+      finished: false,
+      finishedTwo:false,
+      balance: "", //红包余额
+      tabValue: "packet", //tab切换控制
+      packet: [
+      ], //红包记录数据
+      withdrawals: [
+      ], //提现记录数据
+      col: {
+        clOne: {
+          checked: true
+        },
+        clTwo: {
+          checked: false
+        }
+      }, //样式控制
+      phoneNumber: "", //账号绑定的支付宝账号
+      state: 2, //是否绑定支付宝
+    };
+  },
+  created(){
+    this.$api.redPacketInit().then((res)=>{
+      //console.log(res)
+      this.balance = res.body.balanceAmount 
+      if(res.body.aliAccount!=null){
+        this.phoneNumber = res.body.aliAccount
+        this.state = 1
+      }
+    })
+  },
+  mounted(){
+    // this.$api.redPacketIncomeList().then((res)=>{
+    //   //console.log(res)
+    //   this.packet = res.body.items
+    // })
+    
+  },
+  updated(){
+    window.onresize
+  },
+  methods: {
+    onLoadTwo(){
+      if(!this.finishedTwo){
+       // 异步更新数据
+       if(this.withdrawals.length<=0){
+         this.$api.redPacketExpendList().then((res)=>{
+          //console.log(res)
+          if(res.body.items.length>0){
+            this.withdrawals = [...res.body.items]
+            // 加载状态结束
+            this.loadingTwo = false;
+          }
+          if(res.body.items.length==0){
+            //console.log(1) 
+            this.loadingTwo = false;
+            this.finishedTwo = true;
+          }
+        })
+       }else{
+         this.$api.redPacketExpendList({
+          incomeId: this.withdrawals[this.withdrawals.length-1].id,
+        }).then((res)=>{
+          //console.log(res)
+          if(res.body.items.length>0){
+            this.withdrawals = [...this.withdrawals,...res.body.items]
+            // 加载状态结束
+            
+            this.loadingTwo = false;
+          }
+          if(res.body.items.length==0){
+            //console.log(1) 
+            this.loadingTwo = false;
+            this.finishedTwo = true;
+          }
+        })
+       }
+        
+      }
+      
+
+    },
+    onLoad() {
+      console.log(1)
+      if(!this.finished){
+       // 异步更新数据
+      if(this.packet.length<=0){
+        this.$api.redPacketIncomeList({}).then((res)=>{
+          //console.log(res)
+          if(res.body.items.length>0){
+            this.packet = [...res.body.items]
+            // 加载状态结束
+            this.loading = false;
+          }
+          if(res.body.items.length==0){
+            //console.log(1) 
+            this.loading = false;
+            this.finished = true;
+          }
+        })
+      }else{
+        this.$api.redPacketIncomeList({
+          incomeId: this.packet[this.packet.length-1].id,
+        }).then((res)=>{
+          //console.log(res)
+          if(res.body.items.length>0){
+            this.packet = [...this.packet,...res.body.items]
+            // 加载状态结束
+            this.loading = false;
+          }
+          if(res.body.items.length==0){
+            //console.log(1) 
+            this.loading = false;
+            this.finished = true;
+          }
+        })
+      }
+        
+      }
+      
+
+    },//滑动加载
+    onClickLeft() {
+      this.$router.go(-1);
+    }, //返回
+    checkPacket() {
+      this.tabValue = "packet";
+      this.col.clOne.checked = true;
+      this.col.clTwo.checked = false;
+    }, //切换红包记录
+    checkWithdrawals() {
+      //console.log('checkWithdrawals')
+      this.$api.redPacketExpendList().then((res)=>{
+      //console.log(res)
+      this.withdrawals = res.body.items
+    })
+      this.tabValue = "withdrawals";
+      this.col.clOne.checked = false;
+      this.col.clTwo.checked = true;
+    }, //切换提现记录
+    goNext() {
+      this.$router.push({
+        name: "withdrawals",
+        params: {
+          phoneNumber: this.phoneNumber,
+          balance: this.balance,
+          state: this.state,
+        }
+      });
+    } //跳转提现
+  }
+};
+</script>
+<style lang="less" scoped>
+.hb-box {
+  & {
+    position: relative;
+    background-color: #f0f1f3;
+    height: 100vh;
+  }
+  .color-squre {
+    width: 100%;
+    height: 130px;
+    // background-image: url("../static/img/bg.png");
+    // background-size: cover;
+  }
+  .balance-box {
+    & {
+      width: 94%;
+      height: 115px;
+      background: rgba(255, 255, 255, 1);
+      box-shadow: 0px 8px 20px 0px rgba(66, 61, 93, 0.05);
+      border-radius: 10px;
+      position: absolute;
+      top: 1.8rem;
+      left: 3%;
+      display: flex;
+    }
+    .left {
+      & {
+        width: 50%;
+      }
+      .tit {
+        color: #333333;
+        font-size: 14px;
+        font-weight: Medium;
+        text-align: center;
+        margin-top: 9px;
+        img {
+          width: 27px;
+          height: 32px;
+          position: relative;
+          top: 15px;
+        }
+      }
+      .balance {
+        color: #333333;
+        font-size: 36px;
+        font-weight: Bold;
+        text-align: center;
+        margin-top: 10px;
+        margin-bottom: 14px;
+      }
+    }
+    .right {
+      & {
+        width: 50%;
+        margin-right: 10px;
+        text-align: center;
+      }
+    }
+  }
+  .tab {
+    & {
+      width: 94%;
+      display: flex;
+      flex-wrap: wrap;
+      margin-top: 1.06rem;
+      margin-left: 3%;
+    }
+    .checked {
+      background-color: white !important;
+      color: #896edb !important;
+    }
+    .packet-box::-webkit-scrollbar,.withdrawals-box::-webkit-scrollbar {
+        display: none;
+    }
+    .packet-records {
+      width: 50%;
+      height: 44px;
+      font-weight: Bold;
+      font-size: 16px;
+      color: #666666;
+      background-color: #fafafa;
+      border-radius: 10px 10px 0px 0px;
+      p {
+        text-align: center;
+        line-height: 44px;
+      }
+    }
+    .withdrawals-record {
+      font-weight: Bold;
+      width: 50%;
+      height: 44px;
+      font-size: 16px;
+      color: #666666;
+      background-color: #fafafa;
+      border-radius: 10px 10px 0px 0px;
+      p {
+        text-align: center;
+        line-height: 44px;
+      }
+    }
+    .packet-box {
+      & {
+        width: 100%;
+        height: 325px;
+        overflow: scroll;
+        background-color: #ffffff;
+        box-sizing: border-box;
+        padding: 8px 24px 24px 24px;
+      }
+      .content-box {
+        border-bottom: 1px solid #eeeeee;
+        box-sizing: border-box;
+        padding: 16px 0 16px 0;
+        p:nth-of-type(1) {
+          font-size: 14px;
+          font-weight: bold;
+          margin-bottom: 5px;
+        }
+        p:nth-of-type(2) {
+          margin-bottom: 10px;
+          span:nth-of-type(1) {
+            display: inline-block;
+            font-size: 12px;
+            color: #666666;
+            width: 50%;
+            text-align: left;
+          }
+          span:nth-of-type(2) {
+            font-size: 18px;
+            color: #ff6666;
+            display: inline-block;
+            text-align: right;
+            width: 48%;
+          }
+        }
+        p:nth-of-type(3) {
+          margin-bottom: 10px;
+          font-size: 12px;
+          color: #666666;
+        }
+      }
+    }
+    .withdrawals-box {
+      & {
+        width: 100%;
+        height: 300px;
+        overflow: scroll;
+        background-color: #ffffff;
+        box-sizing: border-box;
+        padding: 8px 24px 24px 24px;
+      }
+      .content-box-two {
+        border-bottom: 1px solid #eeeeee;
+        box-sizing: border-box;
+        padding: 16px 0 16px 0;
+        display: flex;
+        .left,
+        .right {
+          width: 50%;
+        }
+        .left {
+          p:nth-of-type(1) {
+            margin-bottom: 10px;
+            color: #666666;
+            font-size: 12px;
+          }
+          p:nth-of-type(2) {
+            color: #666666;
+            font-size: 12px;
+          }
+        }
+        .right {
+          box-sizing: border-box;
+          padding-top: 10px;
+          p {
+            color: #666666;
+            font-size: 18px;
+            text-align: right;
+          }
+        }
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/mine/redEnvelopes/withdrawals.vue b/src/views/mine/redEnvelopes/withdrawals.vue
new file mode 100644
index 0000000..b83d3b2
--- /dev/null
+++ b/src/views/mine/redEnvelopes/withdrawals.vue
@@ -0,0 +1,404 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-10-24 15:13:33
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-11-08 15:43:18
+ * @Description: 
+ -->
+<template>
+  <div class="withdrawals-box">
+    <v-navbar title="提现"></v-navbar>
+    <div class="zfb-box">
+      <div class="left">
+        <p>提现到</p>
+      </div>
+      <div class="middle">
+        <i class="iconfont iconzhifubao"></i>
+      </div>
+      <div class="right">
+        <p v-if="sta == 1" style="color:#333333;font-size:14px;margin-bottom:5px;">支付宝账号</p>
+        <p
+          v-if="sta == 1"
+          style="color:#999999;font-size:14px;"
+        >{{this.userNumber}}</p>
+        <p
+          v-if="sta == 2"
+          style="color:#999999;font-size:14px;margin-top:10px"
+          @click="showPopup"
+        >请绑定支付宝账号</p>
+      </div>
+    </div>
+    <van-popup
+      v-model="show"
+      @close="aferClose"
+      class="clearfix"
+      style="width:280px;height:280px;"
+    >
+      <div class="payCode" style="width: 280px;height: 170px;position: relative;">
+        <van-icon name="cross" size="20px" style="position: absolute;right:10px;top:10px;color:#cccccc" @click="close" color="#CCCCCC"/>
+        <img src="../../../../static/img/back.png" style="width:280px;height:170px">
+        <img class="myimg" :src="qrCode" style="width: 110px;height: 110px; position: absolute;
+      top: 45px;
+      left: 85px;
+      z-index: 1000;"/>
+      </div>
+      <div class="prod" style="width: 280px;height: 110px;text-align: center;background-color: white;z-index: 1000;">
+        <p>0.01元</p>
+        <p>请使用支付宝扫描并进行支付</p>
+        <p>红包金额将提现至该支付宝账户</p>
+      </div>
+    </van-popup>
+    <van-popup
+      v-model="showTwo"
+      @close="aferClose"
+      style="width:200px;height:200px;"
+    >
+      <van-icon name="cross" size="20px" style="position: absolute;right:10px;top:10px;color:#cccccc" @click="closeTwo" color="#CCCCCC"/>
+      <p style="text-align:center;margin-top:55px;"><van-icon name="checked" size="56px" color="#896edb"/></p>
+      <p style="font-size:18px;font-weight:550;margin-top:10px;text-align:center">提现成功</p>
+    </van-popup>
+    <div class="money-box">
+      <div class="tit">
+        <p>提现金额</p>
+      </div>
+      <div class="input-box">
+        <span>¥</span>
+        <van-field
+          v-model="value"
+          placeholder="请输入提现金额"
+          style="width:70%;display:inline-block;margin-left:30px;font-size:16px;"
+          :border="false"
+          maxlength="10"
+        />
+        <span @click="allWithd">全部提现</span>
+      </div>
+      <div class="yue">
+        <p>
+          <span>账户余额</span>
+          <span>¥{{this.balanceAmount}}</span>
+          <span>(余额不足10元无法提现)</span>
+        </p>
+      </div>
+    </div>
+    <van-button
+      v-if="balanceAmount>10"
+      round
+      type="info"
+      color="#896EDB"
+      style="width:86%;margin-top:60px;margin-left:7%;background:#896EDB;color:#fff;border: .02rem solid rgb(137, 110, 219);"
+      @click="getWidthrawals"
+    >立即提现</van-button>
+    <van-button
+      v-else
+      disabled
+      round
+      type="info"
+      color="#896EDB"
+      style="width:86%;margin-top:60px;margin-left:7%;background:#896EDB;color:#fff;border: .02rem solid rgb(137, 110, 219);"
+      @click="getWidthrawals"
+    >立即提现</van-button>
+    <p class="notes">注:提现单笔限额为1000元,每日最多可提现3次。</p>
+  </div>
+</template>
+<script>
+import Vue from 'vue';
+import QRCode from "qrcode";
+//import { setInterval } from 'timer';
+import { Notify } from 'vant';
+import { Icon } from 'vant';
+
+Vue.use(Icon);
+Vue.use(Notify);
+export default {
+  data() {
+    return {
+      qrCode: "",
+      params: {}, //路由接收的参数
+      show: false, //弹出层控制
+      showTwo:false,
+      payQrCodeUrl: "",
+      value: "",
+      aliAccount:'',
+      timerTwo:'',//轮训定时器
+      balanceAmount:'',
+      sta:0,
+      userNumber:'',
+    };
+  },
+  created() {
+    this.$api.redPacketInit().then((res)=>{
+      console.log(res)
+      this.balanceAmount = res.body.balanceAmount
+      this.userNumber = res.body.aliAccount
+      if(res.body.aliAccount){
+        this.sta = 1
+      }else{
+        this.sta = 2
+      }
+    })
+    // this.$api.redPacketBindAliInfo().then(res => {
+    //   console.log(1);
+    //   this.payQrCodeUrl = res.body.payQrCodeUrl;
+    //   let url = res.body.payQrCodeUrl;
+    //   console.log(url);
+    //   QRCode.toDataURL(
+    //     url,
+    //     {
+    //       margin: 1,
+    //       width: 100
+    //     },
+    //     (err, url) => {
+    //       //if (err) console.error(err);
+    //       this.qrCode = url;
+    //       console.log(this.qrCode);
+          
+    //     }
+    //   );
+    // });
+  },
+  mounted() {
+    //console.log(this.$route.params)
+    this.params = this.$route.params;
+  },
+  updated(){
+    window.onresize
+  },
+  beforeDestroy() {
+    clearInterval(this.timerTwo);        
+    this.timerTwo = null;
+  },
+  methods: {
+    close(){
+      clearInterval(this.timerTwo)
+      this.timerTwo = ''
+      this.show = false;
+    },//绑定支付宝弹出层关闭按钮
+    closeTwo(){
+      this.showTwo = false
+    },//提现成功关闭按钮
+    aferClose(){
+      clearInterval(this.timerTwo)
+      this.timerTwo = ''
+      this.show = false;
+    },//支付宝绑定弹出层关闭后执行的事件
+    getWidthrawals() {
+      if (this.value <= 10) {
+        Notify({ type: "primary", message: "提现金额需大于10元" });
+      } else if(this.value >= 1000){
+        Notify({ type: "primary", message: "提现金额需小于1000元" });
+      }else {
+        this.$api
+          .redPacketExpend({
+            amount: this.value
+          })
+          .then(res => {
+            console.log(res);
+            if(res.errMsg=='操作成功'){
+              this.showTwo = true
+              this.$api.redPacketInit().then((res)=>{
+                this.balanceAmount = res.body.balanceAmount
+              })
+            }
+          });
+      }
+    }, //提现
+    allWithd() {
+      this.value = this.balanceAmount;
+    }, //全部提现
+    onClickLeft() {
+      this.$router.go(-1);
+    }, //返回按钮
+    showPopup() {
+      this.$api.redPacketBindAliInfo().then(res => {
+      console.log(1);
+      this.payQrCodeUrl = res.body.payQrCodeUrl;
+      let url = res.body.payQrCodeUrl;
+      console.log(url);
+      QRCode.toDataURL(
+        url,
+        {
+          margin: 1,
+          width: 100
+        },
+        (err, url) => {
+          //if (err) console.error(err);
+          this.qrCode = url;
+          console.log(this.qrCode);
+          
+        }
+      );
+    });
+      this.show = true;
+      this.timerFun();
+    }, //弹出层控制
+    timerFun(){
+      var _this = this
+      this.timerTwo = setInterval(()=>{
+        _this.$api.redPacketInit().then((res)=>{
+          if(res.body.aliAccount){
+            clearInterval(_this.timerTwo);
+            _this.timerTwo = ''
+            _this.show = false 
+            Notify({ type: "primary", message: "绑定成功" });
+            _this.userNumber = res.body.aliAccount
+            _this.sta = 1
+            return
+          }else{
+            console.log('未清除')
+            //clearInterval(this.timerTwo);
+            //this.show = false
+            //Notify({ type: "primary", message: "绑定失败,请稍后再试" });
+            //window.location.reload()
+          }
+        },
+        err=>{
+          err,clearInterval(_this.timerTwo); 
+        })
+      },10000)
+    },
+  }
+};
+</script>
+<style lang="less" scoped>
+.withdrawals-box {
+  & {
+   
+    background-color: #f0f1f3;
+    height: 100vh;
+  }
+  .clearfix{
+ *zoom: 1;
+}
+.clearfix:after {
+ clear: both;
+ display: block;
+ visibility: hidden;
+ height: 0;
+ content: ".";
+}
+  .zfb-box {
+    height: 60px;
+    width: 94%;
+    background-color: white;
+    border-radius: 3px;
+    margin-left: 3%;
+    margin-top: 20px;
+    display: flex;
+    .left {
+      width: 30%;
+      box-sizing: border-box;
+      padding: 21px 0 23px 13px;
+
+      p {
+        color: #333333;
+        font-size: 18px;
+        font-weight: Bold;
+        text-align: left;
+      }
+    }
+    .middle {
+      width: 10%;
+      box-sizing: border-box;
+      padding: 12px 0 12px 0;
+      i {
+        font-size: 36px;
+        color: #00a9f2;
+      }
+    }
+    .right {
+      width: 60%;
+      box-sizing: border-box;
+      padding: 15px 0 0 10px;
+    }
+  }
+  .money-box {
+    width: 94%;
+    background-color: white;
+    margin-left: 3%;
+    height: 145px;
+    margin-top: 20px;
+    border-radius: 3px;
+    .tit {
+      height: 50px;
+      box-sizing: border-box;
+      padding: 18px 0 17px 13px;
+      p {
+        color: #333333;
+        font-weight: bold;
+        font-size: 16px;
+      }
+    }
+    .input-box {
+      border-bottom: 1px solid #eeeeee;
+      box-sizing: border-box;
+      padding-left: 13px;
+      padding-right: 12px;
+      vertical-align: middle;
+      position: relative;
+      span:nth-of-type(1) {
+        font-size: 18px;
+        display: inline-block;
+        position: absolute;
+        bottom: 15px;
+        z-index: 1000;
+      }
+      span:nth-of-type(2) {
+        font-size: 14px;
+        color: #896edb;
+        text-decoration: underline;
+        position: absolute;
+        bottom: 15px;
+        z-index: 1000;
+      }
+    }
+    .yue {
+      box-sizing: border-box;
+      padding-left: 13px;
+      padding-top: 16px;
+      p {
+        span:nth-of-type(1),
+        span:nth-of-type(3) {
+          font-size: 12px;
+          color: #999999;
+        }
+        span:nth-of-type(2) {
+          font-size: 12px;
+        }
+      }
+    }
+  }
+  .notes {
+    font-size: 12px;
+    color: #999999;
+    text-align: center;
+    margin-top: 12px;
+  }
+  .payCode {
+    
+    
+    
+    .myimg {
+      position: absolute;
+      top: 45px;
+      left: 85px;
+      z-index: 1000;
+    }
+  }
+  .prod {
+    
+    
+    p:nth-of-type(1) {
+      font-size: 18px;
+      color: #333333;
+      margin-bottom: 20px;
+      margin-top: 25px;
+    }
+    p:nth-of-type(2),
+    p:nth-of-type(3) {
+      font-size: 12px;
+      color: #999999;
+      margin-bottom: 5px;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/mine/setting/merchants-approval.vue b/src/views/mine/setting/merchants-approval.vue
new file mode 100644
index 0000000..fba77aa
--- /dev/null
+++ b/src/views/mine/setting/merchants-approval.vue
@@ -0,0 +1,61 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 15:25:24
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-17 10:02:27
+ * @Description: 设置 —— 商户审批
+ -->
+<template>
+  <div class="merchants-approval h-100-g">
+    <v-navbar title="商户审批" fixed></v-navbar>
+
+    <van-radio-group class="cell-group" @change="Changed" v-model="radio">
+      <v-cell :label="item.name" v-for="(item, index) in list" :key="index">
+        <van-radio slot="v-cell-right" :name="item.code"  :checked-color="$store.state.backColor"></van-radio>
+      </v-cell>
+    </van-radio-group>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "merchants-approval",
+  data() {
+    return {
+      radio: "",
+      list: []
+    };
+  },
+  created() {
+    this.$api.getAuditType().then(({ body }) => {
+        this.radio = body.currAuditType + "";
+        this.list = body.auditTypeList || [];
+      }).catch(err => {});
+  },
+  methods: {
+    Changed(v) {
+      this.$api.setAuditType({auditType: v}).then(({ body }) => {
+          this.radio = body.currAuditType + "";
+          this.list = body.auditTypeList || [];
+        }).catch(err => {});
+    }
+  }
+};
+</script>
+
+<style scoped lang="less">
+.merchants-approval {
+  padding-top: 44px;
+  background-color: @c-f5;
+
+  .cell-group {
+    margin: 10px auto 0 auto;
+    width: 360px;
+  }
+
+  .svg-icon {
+    width: 1.25em;
+    height: 1.25em;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/mine/setting/setting.vue b/src/views/mine/setting/setting.vue
new file mode 100644
index 0000000..f37e3bc
--- /dev/null
+++ b/src/views/mine/setting/setting.vue
@@ -0,0 +1,109 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 13:57:53
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-19 16:42:13
+ * @Description:
+ -->
+
+<template>
+  <div class="setting-box h-100-g">
+    <v-navbar title="设置中心" fixed></v-navbar>
+
+    <div class="cell-group" v-if="orgType===1 || orgType===2">
+      <v-cell label='商户审批' :readonly="true" isLink :placeholder="placeText"
+        @click.native="$router.push('/mine/setting/merchants-approval')">
+      </v-cell>
+    </div>
+
+    <div class="cell-group" v-if="orgType == 3">
+      <v-cell label='商户资料' :readonly="true" isLink @click.native="$router.push(`/setting/mer-date?merId=${orgId}`)"></v-cell>
+    </div>
+    <div class="cell-group">
+      <v-cell label='修改密码' v-if="hasTokenLoc && isLoginByOpenId" :readonly="true" isLink @click.native="$router.push('/user/reset-pwd')"></v-cell>
+      <v-cell label='退出登录' v-if="hasTokenLoc" :readonly="true" isLink :Show_input="false" @click.native="dialogShow = !dialogShow">
+      </v-cell>
+    </div>
+
+
+
+    <van-dialog class="setting-box-dialog" v-model="dialogShow" :confirmButtonColor="$store.state.backColor" show-cancel-button message="确定退出当前账号?"
+      @confirm="LoginOut">
+    </van-dialog>
+  </div>
+</template>
+
+<script>
+  import {
+    SET_SESSION_ID,
+    SET_USER_INFO
+  } from '@/store/mutations-types';
+  import {
+    mapMutations, mapGetters
+  } from 'vuex';
+  export default {
+    name: "setting",
+    data() {
+      return {
+        placeText: '',
+        dialogShow: false,
+      }
+    },
+    computed:{
+      ...mapGetters(['orgType', 'orgId']),
+      hasTokenLoc(){
+        if(localStorage.hjToken){
+          return false
+        }else{
+          return true
+        }
+      },
+      isLoginByOpenId(){
+        if(sessionStorage.isLoginByOpenId == 1){
+          return false
+        }else{
+          return true
+        }
+      }
+    },
+    created(){
+      console.log(this.orgId)
+      console.log(this.orgType)
+      this.$api.getAuditType().then((res) => {
+        this.placeText = res.body.currAuditTypeName;
+      }).catch((err) => {
+
+      });
+    },
+    methods: {
+      ...mapMutations([SET_USER_INFO, SET_SESSION_ID]),
+      LoginOut() {
+        localStorage.removeItem('user_account')
+        localStorage.removeItem('user_pwd')
+        localStorage.removeItem('sib_wx_openId')
+        this.SET_USER_INFO({});
+        this.SET_SESSION_ID('');
+        if(sessionStorage.isddxt==1){
+          this.$router.push('/?platNo=ddxt');
+        }else if(sessionStorage.wxScore==1){
+            this.$router.push('/?wxScore=1');
+        }else{
+          this.$router.push('/');
+        }
+
+      },
+    }
+  }
+</script>
+
+<style scoped lang="less">
+  .setting-box {
+    padding-top: 44px;
+    background-color: @c-bg-f5;
+
+    .cell-group {
+      margin: 10px auto 0 auto;
+      width: 360px;
+    }
+  }
+</style>
diff --git a/src/views/mine/stores/stores-add.vue b/src/views/mine/stores/stores-add.vue
new file mode 100644
index 0000000..701c517
--- /dev/null
+++ b/src/views/mine/stores/stores-add.vue
@@ -0,0 +1,200 @@
+
+<!--
+    新增门店
+-->
+
+<template>
+  <div class="stores-add-box h-100-g">
+
+    <v-navbar title="新增门店" fixed></v-navbar>
+    <div class="cell-group">
+      <v-cell v-model="form.storeName" :max="20" label='门店名称' icon='iconyonghu' placeholder='请输入门店名称'></v-cell>
+      <v-cell  label='所在地区' icon='icondingwei' @click.native="isShowArea = true;" placeholder='请选择'>
+        <div slot="v-cell-right" class="flex-center-g">
+          <div v-if="form.areaText">{{form.areaText}}</div>
+          <div v-else style="color: #a2a2a2">请选择 </div>
+          <svg class="icon" aria-hidden="true" style="width:18px;height:18px;fill:#999;">
+            <use xlink:href="#iconyou"></use>
+          </svg>
+        </div>
+      </v-cell>
+      <v-cell v-model="form.dtlAddr" :max="30" label='详细地址' icon='icontishi' placeholder='请输入详细地址'></v-cell>
+    </div>
+
+    <div class="cell-group">
+      <v-cell v-model="form.priName" :max="6" label='负责人姓名' placeholder='请输入姓名'></v-cell>
+      <v-cell v-model="form.priMblNo" :max="11" type="tel" label='负责人手机号' placeholder='请输入手机号'></v-cell>
+      <v-cell v-model="form.priIdNo" :max="18" label='负责人身份证号' placeholder='请输入身份证号'></v-cell>
+      <v-cell v-model="form.outChanNo" :max="20" label='渠道编码' placeholder='请输入渠道编码'></v-cell>
+    </div>
+    <p class="tip">*该手机号将作为登录用户名,密码将通过短信发至手机</p>
+
+    <div class="cell-group">
+      <v-cell v-model="form.priEmail" :max="50" label='联系邮箱' placeholder='请输入邮箱地址'></v-cell>
+    </div>
+
+    <footer class="flex-center-g footer">
+      <van-button class="btn" @click="addStore">新增门店</van-button>
+    </footer>
+
+
+    <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+      <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+    </van-popup>
+
+  </div>
+</template>
+
+<script>
+  import { mapState } from 'vuex';
+  export default {
+    name: "stores-add",
+    data(){
+      return {
+        isShowArea:false,
+        Btn:false,
+
+        form:{
+          areaText:'',  //地区文字展示
+          storeName:'', //门店名称
+          dtlAddr:'',   //详细地址
+          priName:'',   //负责人姓名
+          priEmail:'',  //联系邮箱
+          priMblNo:'',  //负责人手机
+          priIdNo: '', //身份证号
+          provCode: '',
+          cityCode: '',
+          areaCode: '',
+          outChanNo: '',
+        },
+
+        rule:[
+          {key:"storeName",message:"请输入门店名称",type:"isEmpty"},
+          {key:"areaText",message:"请选择地址",type:"isEmpty"},
+          {key:"dtlAddr",message:"请输入详细地址",type:"isEmpty"},
+          {key:"priName",message:"请输入负责人姓名",type:"isEmpty"},
+          {key:"priName",message:"请输入正确的负责人姓名",rule:/^[\u4e00-\u9fa50-9a-zA-Z]{1,6}$/},
+          {key:"priMblNo",message:"请输入负责人手机号",type:"isEmpty"},
+          {key:"priMblNo",message:"请输入正确的手机号",type:"isTel"},
+          {key:"priIdNo",message:"请输入负责人身份证号",type:"isEmpty"},
+          {key:"priIdNo",message:"请输入正确的身份证号",type:"checkIDCard"},
+          {key:"priEmail",message:"请输入联系邮箱",type:"isEmpty"},
+          {key:"priEmail",message:"请输入正确的联系邮箱",type:"isEmail"},
+        ]
+
+      }
+    },
+    computed:{
+      ...mapState(['areaList'])
+    },
+    created() {
+    },
+    methods:{
+      // 验证form参数
+      validatorForm(){
+          let v = this.$tool;
+          if(v.checkValEmpty(this.form.outChanNo)){
+              v.toast('请输入渠道编码');
+              return false;
+          }
+        return this.$validator(this.form,this.rule).check(item=>{
+          this.$notify(item.message)
+        })
+      },
+
+      //关闭地区弹窗
+      closeAreaModal(){
+        this.isShowArea = false;
+        this.$refs.Area.reset()
+      },
+
+      //保存 地区选择
+      setAreaValue(arr){
+        this.form.areaText = arr[0].name + '-' +arr[1].name +'-'+ arr[2].name;
+        this.form.provCode= arr[0].code;
+        this.form.cityCode= arr[1].code;
+        this.form.areaCode= arr[2].code;
+        this.form.provName= arr[0].name;
+        this.form.cityName= arr[1].name;
+        this.form.areaName= arr[2].name;
+        this.isShowArea = false;
+        this.$refs.Area.reset()
+      },
+
+
+      // 新增门店
+      addStore(){
+        if(!this.validatorForm()) return
+        if(this.Btn)return
+        let list = {
+          storeName: this.form.storeName,
+          addr:{
+            province:{
+              code:this.form.provCode,
+              name:this.form.provName
+            },
+            city:{
+              code:this.form.cityCode,
+              name:this.form.cityName
+            },
+            area:{
+              code:this.form.areaCode,
+              name:this.form.areaName
+            },
+            dtlAddr:this.form.dtlAddr
+          },
+          priName: this.form.priName,
+          priMblNo: this.form.priMblNo,
+          priEmail: this.form.priEmail,
+          priIdNo: this.form.priIdNo,
+          outChanNo: this.form.outChanNo,
+        };
+
+        this.$api.storeAdd(list).then(() => {
+          this.$notify('新增成功');
+          this.Btn = true;
+          setTimeout(() => this.$router.go(-1), 1000);
+        });
+      }
+
+
+
+
+    }
+  }
+</script>
+
+<style scoped lang="less">
+.stores-add-box{
+  background-color: @c-bg-f5;
+  padding-top: 44px;
+  .tip {
+    margin: 10px 0 15px 21px;
+    font-size: @font-12;
+    color: @c-text-999;
+  }
+}
+
+
+.cell-group {
+  margin: 10px 8px 0;
+}
+
+.btn {
+  width: 340px;
+  height: 44px;
+  border: none;
+  font-size: @font-16;
+  border-radius: 22px;
+  background-color: @c-bg-default;
+  color: @c-text-fff;
+
+}
+
+.footer {
+  margin-top: 60px;
+  padding-bottom: 30px;
+}
+
+
+</style>
diff --git a/src/views/mine/stores/stores-detail.vue b/src/views/mine/stores/stores-detail.vue
new file mode 100644
index 0000000..79e80a3
--- /dev/null
+++ b/src/views/mine/stores/stores-detail.vue
@@ -0,0 +1,236 @@
+<template>
+<div class="stores-detail h-100-g">
+
+  <v-navbar title="门店详情" fixed rightText='保存' @right-click="Save"></v-navbar>
+
+  <div class="cell-group">
+    <v-cell v-model="form.storeName" :max="20" label='门店名称' :readonly="true" icon='iconyonghu' placeholder='门店名称'></v-cell>
+    <v-cell  label='所在地区'  icon='icondingwei'  placeholder='所在地区' @click.native="isShowArea = true;">
+      <div slot="v-cell-right" class="flex-center-g">
+        <div>{{form.areaText}}</div>
+        <svg class="icon" aria-hidden="true" style="width:18px;height:18px;fill:#999;">
+          <use xlink:href="#iconyou"></use>
+        </svg>
+      </div>
+    </v-cell>
+    <v-cell v-model="form.dtlAddr" :max="30" label='详细地址'  icon='icontishi' placeholder='详细地址'></v-cell>
+  </div>
+
+
+  <div class="cell-group">
+    <v-cell v-model="form.priName" :max="6" label='负责人姓名' :readonly="true" placeholder='负责人姓名'></v-cell>
+    <v-cell v-model="form.priMblNo" :max="11" type="tel" label='负责人手机号' :readonly="true" placeholder='负责人手机号'></v-cell>
+    <v-cell v-model="form.priEmail" :max="50" label='联系邮箱' :readonly="true" placeholder='联系邮箱'></v-cell>
+    <v-cell v-model="form.priIdNo" :max="18" label='负责人身份证号' :readonly="true" placeholder='负责人身份证号'></v-cell>
+    <v-cell v-model="form.outChanNo" :max="18" label='渠道编码' :readonly="true" placeholder='渠道编码'></v-cell>
+  </div>
+
+
+  <footer class="flex-center-g footer">
+    <van-button class="btn left" @click="freeze">{{ menText }}</van-button>
+    <van-button class="btn right" @click="$router.push('/main/home')">订单查询</van-button>
+  </footer>
+
+
+  <van-dialog
+      class="setting-box-dialog"
+      v-model="dialogShow"
+      show-cancel-button
+      :message='Msg'
+      @confirm="onConfirm"
+  >
+  </van-dialog>
+
+
+  <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+    <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+  </van-popup>
+
+</div>
+</template>
+
+<script>
+  import { mapState } from 'vuex';
+  export default {
+    name: "stores-detail",
+    data(){
+      return {
+        isShowArea:false,
+        dialogShow:false,
+        menText:'',
+        Status:null,
+        Msg:'',
+        Btn:false,
+
+        form:{
+          areaText:'',//地区文字展示
+          storeName:'', //门店名称
+          dtlAddr:'',   //详细地址
+          priName:'',   //负责人姓名
+          priEmail:'',  //联系邮箱
+          priMblNo:'',  //负责人手机
+          priIdNo:'',  //负责人身份证号
+          provCode: '',
+          cityCode: '',
+          areaCode: '',
+          outChanNo:'',
+        },
+
+        rule:[
+          {key:"dtlAddr",message:"请输入详细地址",type:"isEmpty"},
+        ]
+      }
+    },
+    computed:{
+      ...mapState(['areaList'])
+    },
+    created(){
+      this.init();
+    },
+    methods:{
+      init(){
+        this.$api.storeDtl({storeId: this.$route.query.storeId}).then((res) => {
+          let data = res.body,
+              addr = data.addr;
+          this.Status = data.freezeStatus;
+          data.freezeStatus ? this.menText = '冻结门店':this.menText = '启用门店';
+          this.form = {
+            areaText:addr.province.name + '-' + addr.city.name + '-' + addr.area.name,  //地区文字展示
+            storeName:data.storeName, //门店名称
+            dtlAddr:addr.dtlAddr,   //详细地址
+            priName:data.priName,   //负责人姓名
+            priEmail:data.priEmail,  //联系邮箱
+            priMblNo:data.priMblNo,  //负责人手机
+            priIdNo:data.priIdNo,  //负责人身份证号
+            provCode: addr.province.code,
+            cityCode: addr.city.code,
+            areaCode: addr.area.code,
+            provName:addr.province.name,
+            cityName:addr.city.name,
+            areaName:addr.area.name,
+            outChanNo:data.outChanNo
+          }
+        })
+      },
+
+
+      freeze(){
+        this.dialogShow = !this.dialogShow;
+        this.Msg = `请问是否确认${this.Status ? '冻结' : '启用'}该门店?`;
+      },
+
+
+      //冻结/启用  门店
+      onConfirm() {
+        if(this.Btn2){return}
+        this.Btn2 = true;
+        this.$api.channSwitchStatus({
+            orgId: this.$route.query.storeId,
+            orgType: 4,
+            statusType: this.Status ? 0 : 1
+          })
+          .then((res) => {
+            this.Btn2 = false;
+            this.$notify_success(`${ this.Status ? '冻结' : '启用'}门店成功`)
+            this.Status =  this.Status ? 0 : 1;
+            this.menText = this.Status ? '冻结门店' :'启用门店';
+          });
+      },
+
+
+      // 保存门店
+      Save(){
+        if(this.Btn){return}
+        this.Btn = true;
+        let list = {
+          addr:{
+            province:{
+              code:this.form.provCode,
+              name:this.form.provName
+            },
+            city:{
+              code:this.form.cityCode,
+              name:this.form.cityName
+            },
+            area:{
+              code:this.form.areaCode,
+              name:this.form.areaName
+            },
+            dtlAddr:this.form.dtlAddr
+          },
+          storeId:this.$route.query.storeId
+        };
+
+        if(this.$validator(list.addr,this.rule).check(item=>{
+          this.$notify(item.message);
+        })){
+          this.$api.storeEdit(list).then((res) => {
+            this.Btn = false;
+            this.$notify_success('保存成功!');
+          });
+        }
+      },
+
+
+
+      //关闭地区弹窗
+      closeAreaModal(){
+        this.isShowArea = false;
+        this.$refs.Area.reset()
+      },
+
+      //保存 地区选择
+      setAreaValue(arr){
+        this.form.areaText = arr[0].name + '-' +arr[1].name +'-'+ arr[2].name;
+        this.form.provCode= arr[0].code;
+        this.form.cityCode= arr[1].code;
+        this.form.areaCode= arr[2].code;
+        this.isShowArea = false;
+        this.$refs.Area.reset()
+      },
+
+
+
+    }
+  }
+</script>
+
+<style scoped lang="less">
+.stores-detail{
+  background-color: @c-bg-f5;
+  padding-top: 44px;
+
+  .cell-group {
+    margin: 10px 8px 0;
+  }
+
+
+
+
+
+
+  .footer{
+    margin-top: 60px;
+    padding-bottom: 30px;
+    .btn{
+      width: 170px;
+      height: 44px;
+      border: none;
+      font-size: @font-16;
+      &.left{
+        background-color: @c-bg-eee;
+        color: @c-text-666;
+        border-radius:22px 0px 0px 22px;
+      }
+      &.right{
+        background-color: @c-bg-default;
+        color: @c-text-fff;
+        border-radius:0px 22px 22px 0px;
+      }
+    }
+  }
+
+
+
+}
+</style>
diff --git a/src/views/mine/stores/stores.vue b/src/views/mine/stores/stores.vue
new file mode 100644
index 0000000..66fb061
--- /dev/null
+++ b/src/views/mine/stores/stores.vue
@@ -0,0 +1,180 @@
+<!--
+
+  门店管理-主页
+
+-->
+<template>
+  <div class="stores-box h-100-g">
+
+    <v-navbar title="门店管理" fixed></v-navbar>
+    <van-search class="search" placeholder="请输入门店名称/负责人姓名/负责人手机号" v-model="value" shape='round' @search="onSearch"/>
+    <div class="item-box">
+      <van-list
+        v-model="loading"
+        :finished="finished"
+        immediate-check='false'
+        offset="50"
+        finished-text="没有更多了"
+        @load="onLoad"
+      >
+        <div class="stores-item flex-start-g" v-for="(item, index) in list" :key="index" @click="go(item.storeId)">
+          <p class="icon-box flex-center-g">
+            <svg class="icon" aria-hidden="true" style="width:25px;height:25px;fill:#fff" >
+              <use xlink:href="#iconyonghu"></use>
+            </svg>
+          </p>
+          <div>
+            <p class="name" v-text="item.storeName || ''">门店名称</p>
+            <p class="c-text-666-g font-12-g" v-text="item.priMblNo || ''">13586695442</p>
+          </div>
+        </div>
+      </van-list>
+    </div>
+
+    <van-button class="btn" @click="$router.push('/mine/stores-add')">
+      <div class="inner">
+        <van-icon name="plus"/>
+        <span class="text">新增</span>
+      </div>
+    </van-button>
+
+
+  </div>
+</template>
+
+<script>
+  export default {
+    name: "stores",
+    data() {
+      return {
+        value: '',
+        list:[],
+        loading:false,
+        finished:false,
+        storeId:''
+      }
+    },
+    
+    created(){
+      this.init();
+    },
+    methods: {
+      init(){
+        this.loading = true
+        this.$api.storeStoreList({
+          searchKey:this.value,
+          storeId:this.storeId,
+        }).then((res) => {
+          if(res.body.storeList.length < 10){
+            this.list = [...this.list,...res.body.storeList]
+            this.storeId = ''
+            this.finished = true
+            this.loading = false
+          }else{
+            this.list = [...this.list,...res.body.storeList]
+            this.storeId = this.list[this.list.length-1].storeId
+            this.finished = false
+            this.loading = false
+          }
+        })
+      },
+
+
+      go(id) {
+        this.$router.push({path:'/mine/stores-detail',query:{storeId:id}});
+      },
+
+      onLoad(){
+        this.init()
+      },
+      onSearch(val){
+        this.list = []
+        this.loading = true
+        this.$api.storeStoreList({
+          searchKey:this.value,
+        }).then(res=>{
+          if(res.body.storeList.length < 10){
+            this.list = [...this.list,...res.body.storeList]
+            this.storeId = ''
+            this.finished = true
+            this.loading = false
+          }else{
+            this.list = [...this.list,...res.body.storeList]
+            this.storeId = this.list[this.list.length-1].storeId
+            this.finished = false
+            this.loading = false
+          }
+        })
+      }
+
+
+    }
+  }
+</script>
+
+<style scoped lang="less">
+.stores-box {
+
+    background-color: @c-bg-f5;
+    padding-top: 44px;
+
+    .btn {
+      position: fixed;
+      width: 50px;
+      height: 50px;
+      padding: 0;
+      right: 8px;
+      bottom: 68px;
+      border-radius: 50%;
+      color: @c-text-f5;
+      z-index: @zIndex-50;
+      box-shadow: 0px 5px 9px 0px rgba(80, 47, 183, 0.2);
+      background: linear-gradient(0deg, rgba(106, 79, 188, 1), rgba(137, 110, 219, 1));
+
+      .inner {
+        display: flex;
+        flex-direction: column;
+      }
+
+      .text {
+        .lh(15px);
+      }
+    }
+
+    //搜索框
+    .search {
+      margin-top: 10px;
+      padding: 15px 8px;
+    }
+
+
+    .item-box {
+      background-color: @c-bg-fff;
+      padding-bottom: 25px;
+    }
+
+
+    .stores-item {
+      height: 67px;
+      margin: 0 8px 10px;
+      padding-left: 12px;
+      box-shadow: 0px 0px 5px 0px rgba(66, 61, 93, 0.08);
+      border-radius: 3px;
+
+      .icon-box {
+        width: 32px;
+        height: 32px;
+        margin-right: 15px;
+        border-radius: 50%;
+        background-color: @c-bg-black;
+      }
+
+      .name {
+        margin-bottom: 5px;
+        font-weight: bold;
+      }
+    }
+
+
+}
+</style>
diff --git a/src/views/mine/toggle-identity.vue b/src/views/mine/toggle-identity.vue
new file mode 100644
index 0000000..326eea0
--- /dev/null
+++ b/src/views/mine/toggle-identity.vue
@@ -0,0 +1,186 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 09:30:14
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-17 10:02:59
+ * @Description: 切换身份页面
+ -->
+<template>
+    <div class="identity-box">
+        <v-navbar :title="$route.query.title" fixed></v-navbar>
+        <section class="role-box" v-for="(item, index) in roleList" :key="index">
+            <van-radio-group v-if="item.arr.length"  v-model="roleId">
+                <h4 class="title">{{item.title}}</h4>
+                <div class="flex-between-g role-item" v-for="(role, k) in item.arr" :key="k">
+                    <div class="left">
+                        <p class="flex-start-g">
+                            <svg class="icon" aria-hidden="true" style="width:15px;height:15px;">
+                                <use xlink:href="#iconyonghu"></use>
+                            </svg>
+                            <span class="name">{{role.orgName}}</span>
+                        </p>
+                        <p class="flex-start-g">
+                            <svg class="icon" aria-hidden="true"  style="width:15px;height:15px;">
+                                <use xlink:href="#iconshijian"></use>
+                            </svg>
+                            <time class='time'>创建时间:{{role.creTime | timeformat('yyyy-MM-dd HH:mm:ss')}}</time>
+                        </p>
+                    </div>
+                    <div @click="setRole(role)" v-if="role.status == 1 && role.supStatus == 1" >
+                        <van-radio :name="role.id" :checked-color="$store.state.backColor"  />
+                    </div>
+                </div>
+            </van-radio-group>
+        </section>
+        <van-button class="btn-login" :color="$store.state.backColor" @click="getRoleInfo">登录</van-button>
+    </div>
+</template>
+
+<script>
+import { mapActions, mapState } from 'vuex';
+    export default {
+        data() {
+            return {
+                roleList: [],//角色列表
+                roleId: '',//radio的value
+                role:null //当前选中的角色
+            }
+        },
+        computed:{
+            ...mapState(['userinfo'])
+        },
+        created() {
+            this.roleId = this.userinfo.id;
+            if(sessionStorage.isLoginByOpenId == 1){
+                this.roleList = [{
+                    title:'门店',
+                    arr:JSON.parse(localStorage.storeList) 
+                }]
+            }else{
+                this.getRole();
+            }
+            
+        },
+        methods: {
+            ...mapActions(['setUserMenu']),
+            // 设置当前选中的角色
+            setRole(role){
+                this.role = role;
+            },
+            // 获取角色
+            getRole() {
+                this.$api.getRole().then((res) => {
+                    let {
+                        agencyList,
+                        chanList,
+                        merchantList,
+                        storeList
+                    } = res.body;
+                    this.roleList.push({
+                        title:'代理',
+                        arr:agencyList || []
+                    });
+                    this.roleList.push({
+                        title:'渠道',
+                        arr:chanList || []
+                    });
+                    this.roleList.push({
+                        title:'商户',
+                        arr:merchantList || []
+                    });
+                    this.roleList.push({
+                        title:'门店',
+                        arr:storeList || []
+                    });
+
+                }).catch((err) => {
+
+                });
+            },
+            // 获取用户信息
+            getRoleInfo(){
+                if(!this.roleId){
+                     this.$notify('请选择登录角色');
+                    return
+                }
+                this.setUserMenu({
+                    vm:this,
+                    lastLoginMgrId:this.roleId,
+                })
+                // this.$api.getPowerInfo(this.roleId).then((res) => {
+
+                // }).catch((err) => {
+
+                // });
+            }
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .identity-box {
+        background-color: @c-bg-f5;
+        min-height: 100%;
+        padding-top: 44px;
+        padding-bottom: 30px;
+    }
+
+    .role-box {
+        .title {
+            .lh(30px);
+            margin-left: 20px;
+            margin-top: 15px;
+            color: @c-text-999;
+            font-size: @font-14;
+        }
+
+        .role-item {
+            padding: 0 12px;
+            background-color: @c-bg-fff;
+            margin: 0 8px 1px;
+            border-radius: 3px;
+        }
+
+        .left {
+            height: 75px;
+            .flex(center, flex-start, wrap, column);
+
+            p:first-child {
+                margin-bottom: 10px;
+            }
+
+            .icon {
+                margin-right: 8px;
+            }
+        }
+
+        .name {
+            font-size: @font-16;
+            font-weight: bold;
+        }
+
+        .time {
+            font-size: @font-12;
+            color: @c-text-999;
+        }
+
+        .circle {
+            height: 18px;
+            width: 18px;
+            margin-right: 2px;
+            border-radius: 50%;
+            background-color: #fff;
+            border: 2px solid @c-default;
+        }
+    }
+
+    .btn-login {
+        display: block;
+        .lh(44px);
+        width: 320px;
+        margin: 25px auto 0;
+        background-color: @c-bg-default;
+        color: @c-text-fff;
+        border-radius: 22px;
+    }
+</style>
diff --git a/src/views/old/README.md b/src/views/old/README.md
new file mode 100644
index 0000000..3c158a2
--- /dev/null
+++ b/src/views/old/README.md
@@ -0,0 +1,8 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-29 17:35:38
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-29 17:36:04
+ * @Description: 
+ -->
+# 该文件夹下的所有文件都是存老项目拷贝过来的
diff --git a/src/views/old/facepay/README.md b/src/views/old/facepay/README.md
new file mode 100644
index 0000000..2e2de73
--- /dev/null
+++ b/src/views/old/facepay/README.md
@@ -0,0 +1,3 @@
+#   商户收款产品路由页面 
+##  Author:TM
+##  createTime:2019-5-27
\ No newline at end of file
diff --git a/src/views/old/facepay/calcmoney.vue b/src/views/old/facepay/calcmoney.vue
new file mode 100644
index 0000000..2efcadb
--- /dev/null
+++ b/src/views/old/facepay/calcmoney.vue
@@ -0,0 +1,246 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 15:34:12
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-04-07 17:26:01
+ * @Description: 
+ -->
+<template>
+<!-- 商户收款:生成二维码页面 -->
+    <div class="calcmoney-box h-100-g">
+        <van-nav-bar title="商户收款" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+            <div slot="right" class="slot-right font-style" @click="goList">明细</div>
+        </van-nav-bar>
+        <div class="pay-box">
+            <p>收款金额</p>
+            <span class="tag">¥</span>
+            <input v-model="price" autofocus readonly  type="text" class="input-money" placeholder="请输入收款金额" >
+            <p class="icon-box">
+                <span>支持方式:</span>
+                <i class="icon iconfont scene_Staging-zhifubao" style="font-size:25px;color:#06b4fd;"></i>
+            </p>
+        </div>
+        <div class="calc">
+            <ul class="number-box">
+                <li class="number-item" v-for="(item, index) in 9" :key="index" @click="numberClick(item)">{{item}}</li>
+                <li class="number-item" @click="numberClick('.')">.</li>
+                <li class="number-item" @click="numberClick(0)">0</li>
+                <li class="number-item"></li>
+            </ul>
+            <div class="handler-box">
+                <div class="icon-delete" @click="deleteNumber">
+                    <i class="icon iconfont scene_Staging-shanchu" style="font-size:35px;"></i>
+                </div>
+                <div class="icon-submit" @click="submit">
+                    收款
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'facepay_calc',
+        data() {
+            return {
+                price: ''
+            }
+        },
+        methods: {
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+            goList(){
+                let {typeId,prodId} = this.$route.query;
+                this.$router.push(`/order/dmf?typeId=${typeId}&prodId=${prodId}`)
+            },
+            // 删除price最后一位
+            deleteNumber() {
+                this.price = this.price.slice(0, this.price.length - 1)
+            },
+            //提交生成二维码
+            submit() {
+                if(this.price=='0' || this.price=='0.'){
+                    this.$notify_success('收款金额不能为0!')
+                    return
+                }
+                if (!this.price.length) {
+                    this.$notify_success('请输入收款金额!')
+                    return
+                }else{
+                    this.$api.facepay_create({payAmt:+this.price,term:0,zfbVersion:this.$route.query.zfbVersion}).then(res=>{
+                        let url = res.body.payQrCodeUrl;
+                        let id = res.body.orderId;
+                        this.$router.push(`/facepay/code?url=${url}&id=${id}`)
+                    })
+                }
+            },
+            //数字的逻辑输入判断
+            numberClick(v) {
+                let index = this.price.indexOf('.');
+                if (v !== '.') {
+                    if (this.price.length === 8) {
+                        return
+                    }
+                    if (index > -1 && this.price.slice(index + 1, this.price.length).length == 2) {
+                        // 最多输入两位小数
+                        this.$notify_success('最多输入两位小数!')
+                        return
+                    }
+                    if(this.price.length===1 && this.price ==='0'){
+                        return
+                    }
+                } else {
+                    if (!this.price.length) {
+                        return
+                    }
+                    // if (this.price.slice(0, 1) !== '0') {
+                    //     return
+                    // }
+                    if (index > -1) {
+                        return
+                    }
+                }
+                this.price += v;
+            }
+        }
+    }
+
+</script>
+
+<style lang="less" scoped> 
+
+
+    .calcmoney-box{
+        //padding-top: 45px;
+        background-color: #f1f1f1;
+        .font-style{
+            color: #333;
+            font-size:16px;
+        }
+        .pay-box{
+            &{
+                background-color: #fff;
+                width: 96%;
+                height: 210px;
+                margin: auto;
+                margin-top: 15px;
+                box-sizing: border-box;
+                padding: 30px 15px;
+                position: relative;
+                border-radius: 5px;
+            }
+            p:nth-of-type(1){
+                font-size: 14px;
+                color: #333;
+                font-weight: 550;
+            }
+            .tag {
+                position: absolute;
+                left: 4%;
+                top: 66px;
+                font-size: 27px;
+            }
+        }
+        input::-webkit-input-placeholder { /* WebKit browsers 适配谷歌 */
+            font-size: 20px;
+            color:#AFAFAF;
+        }
+        input:-moz-placeholder { /* Mozilla Firefox 4 to 18 适配火狐 */
+            font-size: 20px;
+            color:#AFAFAF;
+        }
+        input::-moz-placeholder { /* Mozilla Firefox 19+ 适配火狐 */
+            font-size: 20px;
+            color:#AFAFAF;
+        }
+    }
+
+    .input-box {
+        padding: 0 15px;
+        color: #bb8b52;
+        padding: 30px 25px;
+        position: relative;
+
+        .tag {
+            position: absolute;
+            left: 40px;
+            top: 50%;
+            transform: translateY(-50%);
+            font-size: 24px;
+        }
+    }
+
+    .icon-box {
+        display: flex;
+        justify-content: flex-start;
+        align-items: center;
+        color: #AFAFAF;
+        margin-top:20px; 
+    }
+
+    .input-money {
+        //color: #bfa073;
+        height: 55px;
+        line-height: 55px;
+        width: 100%;
+        text-align: left;
+        padding-left: 35px;
+        padding-top:14px; 
+        box-sizing: border-box;
+        border: 0;
+        border-bottom: 1px solid #f1f1f1;
+        outline: none;
+        font-size: 22px;
+    }
+
+    .calc {
+        position: fixed;
+        bottom:0;
+        width: 100%;
+        font-size: 24px;
+        text-align: center;
+        background-color: #fff;
+        .icon-delete {
+            height: 140px;
+            line-height: 140px;
+        }
+
+        .icon-submit {
+            height: 140px;
+            line-height: 140px;
+            color: #fff;
+            font-size: 16px;
+            font-weight: 500;
+            background-color: #896FDA;
+        }
+
+        &::after {
+            content: "";
+            clear: both;
+            display: block;
+        }
+    }
+
+    .handler-box {
+        width: 25%;
+        float: left;
+    }
+
+    .number-box {
+        width: 75%;
+        float: left;
+
+        .number-item {
+            width: 33.3333%;
+            float: left;
+            height: 70px;
+            line-height: 70px;
+            box-sizing: border-box;
+            border:1px solid #f1f1f1;
+        }
+    }
+
+</style>
diff --git a/src/views/old/facepay/code.vue b/src/views/old/facepay/code.vue
new file mode 100644
index 0000000..39d1536
--- /dev/null
+++ b/src/views/old/facepay/code.vue
@@ -0,0 +1,135 @@
+<template>
+    <!-- 商户收款:扫描二维码页面 -->
+    <div class="contract-qrcode-page">
+        <x-header title="扫码收款" :left-options="{backText:''}"></x-header>
+        <div class="order-info">
+            <div v-if="qrCodeBase64Url" class='canvasImg'>
+                <img :src="qrCodeBase64Url" alt="qrcode">
+            </div>
+            <div id="QRCode" v-else class='qr-code'>
+                <div class='qeimg'>
+                    <img :src="dataUrl" alt="">
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+    import html2canvas from 'html2canvas';
+    import QRCode from 'qrcode';
+
+    export default {
+        name: 'facepay_code',
+        data() {
+            return {
+                dataUrl: '',
+                qrCodeBase64Url: '',
+                params: '',
+                timeId: null
+            }
+        },
+        computed: {
+            orderId() {
+                let id = this.$route.query.id;
+                return id;
+            }
+        },
+        beforeRouteLeave(to, from, next) {
+            clearInterval(this.timeId);
+            next()
+        },
+        methods: {
+            // 轮询 支付状态
+            search_status() {
+                this.$api.facepay_getStatus(this.orderId).then(res => {
+                    let orderStatus = res.body.orderStatus;
+                    if (orderStatus !== 0) {
+                        if (orderStatus === 1) {
+                            // 成功
+                            this.$router.replace(
+                                `/facepay/details?orderStatus=1&page=facepay_code&orderId=${this.orderId}`)
+                        } else if (orderStatus === 2) {
+                            // 失败
+                            this.$router.replace(
+                                `/facepay/details?orderStatus=2&page=facepay_code&orderId=${this.orderId}`)
+                        }
+                    }
+                })
+            }
+        },
+        created() {
+            QRCode.toDataURL(this.$route.query.url, {
+                    margin: 0,
+                    width: 400
+                },
+                (err, url) => {
+                    this.dataUrl = url;
+                    setTimeout(() => {
+                        html2canvas(document.getElementById('QRCode')).then(
+                            canvas => {
+                                this.qrCodeBase64Url = canvas.toDataURL(
+                                    'image/jpeg'
+                                );
+                                this.timeId = setInterval(() => {
+                                    this.search_status();
+                                }, 2000);
+                            }
+                        );
+                    }, 100);
+                }
+            );
+        }
+    }
+
+</script>
+<style lang="less" scoped>
+
+
+
+    .contract-qrcode-page {
+        .order-info {
+            padding-top: 46px;
+
+            .canvasImg {
+                margin: 0 auto;
+                width: 220px;
+                height: 220px;
+
+                img {
+                    width: 100%;
+                }
+            }
+
+            .notice {
+                padding-top: 40px;
+                text-align: center;
+                color: #666;
+            }
+
+            .qr-code {
+                background: #fff;
+                width: 220px;
+                height: 220px;
+                margin: 0 auto;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                flex-direction: column;
+                border: 4px solid @color-text-three;
+                color: @color-text-three;
+
+                .qeimg {
+                    width: 200px;
+                    height: 200px;
+                    padding: 5px;
+
+                    img {
+                        width: 100%;
+                        height: 100%;
+                    }
+                }
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/facepay/orderDetails.vue b/src/views/old/facepay/orderDetails.vue
new file mode 100644
index 0000000..dd84d46
--- /dev/null
+++ b/src/views/old/facepay/orderDetails.vue
@@ -0,0 +1,175 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 15:34:12
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-11-21 16:19:14
+ * @Description: 
+ -->
+<template>
+    <!-- 商户收款:订单详情页面 -->
+    <div class="orderdetails h-100-g">
+        <x-header title="订单详情" :left-options="{backText:''}">
+            <div v-if="isShowListBtn" slot="right" class="slot-right" @click="$router.push('/facepay/list')">明细</div>
+        </x-header>
+
+        <div class="status" v-if="isShowStatus">
+            <div v-if="isSuccess">
+                <icon type="success" is-msg></icon>
+                <p class="info">交易成功</p>
+                <h3 class="price">¥{{orderInfo.payAmt}}</h3>
+            </div>
+            <div v-else>
+                <icon type="warn" is-msg></icon>
+                <p class="info">订单超时</p>
+            </div>
+        </div>
+
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                订单详情
+            </div>
+            <x-input title="消费金额" readonly :value="(orderInfo.payAmt || '0')+'元'" text-align="right"></x-input>
+            <x-input title="消费时间" readonly :value="$tool.date(orderInfo.creTime, 'YYYY-MM-DD HH:mm:ss')"
+                text-align="right"></x-input>
+            <x-input title="订单号" readonly :value="orderInfo.orderId" text-align="right"></x-input>
+            <x-input title="订单状态" readonly :value="status" text-align="right"></x-input>
+            <x-input title="收银员" readonly :value="orderInfo.mgrName" text-align="right"></x-input>
+            <!-- <cell style="padding: 0.2rem 0.3rem;" v-if="status === '交易成功'">
+                <button class="btn-submit" @click="isShow = true;">退款</button>
+            </cell> -->
+            <cell style="padding: 0.2rem 0.3rem;" v-if="status === '待支付'">
+                <button class="btn-submit"
+                    @click="$router.replace(`/facepay/code?url=${orderInfo.payCode}&id=${orderInfo.orderId}`)">展示二维码</button>
+            </cell>
+        </group>
+
+        <div >
+            <f-confirm v-model="isShow" @on-confirm="refund">
+                <p>是否确认退款</p>
+            </f-confirm>
+            <f-confirm v-model="isShow_success" :show-cancel-button="false">
+                <p>退款成功</p>
+            </f-confirm>
+        </div>
+    </div>
+</template>
+
+<script>
+    import {
+        Confirm,
+        Icon,
+        Cell
+    } from 'vux';
+    export default {
+        name: 'facepay_details',
+        components: {
+            Confirm,
+            Icon,
+            Cell
+        },
+        data() {
+            return {
+                isShow: false,
+                isShow_success: false,
+                isSuccess: false,
+                isShowStatus: false,
+                isShowListBtn: false,
+                orderInfo: {}
+            }
+        },
+        computed: {
+            status() {
+                let v = this.orderInfo.status;
+                switch (v) {
+                    case 0:
+                        return '待支付';
+                    case 1:
+                        return '交易成功';
+                    case 2:
+                        return '订单超时';
+                    case 3:
+                        return '退款成功';
+                }
+            }
+        },
+        created() {
+            let query = this.$route.query,
+                orderStatus = query.orderStatus,
+                page = query.page;
+            if (orderStatus == '1') {
+                this.isSuccess = true;
+            }
+            if (page == 'facepay_code') {
+                this.isShowStatus = true;
+                this.isShowListBtn = true;
+            }
+            this.init();
+        },
+        methods: {
+            init() {
+                this.$api.facepay_orderDetails(this.$route.query.orderId).then(res => {
+                    this.orderInfo = res.body;
+                })
+            },
+            // 退款
+            refund() {
+                this.isShow = false;
+                this.$api.facepay_refund(this.orderInfo.orderId).then(() => {
+                    this.$router.replace('/facepay/details?orderId=' + this.orderInfo.orderId)
+                    location.reload()
+                })
+            }
+        }
+    }
+
+</script>
+
+<style lang="less" scoped>
+    .orderdetails{
+        padding-top: 54px;
+        background-color: #f1f1f1;
+    }
+
+    .title {
+        padding: 14px 12px;
+        font-size: 15px;
+        color: #333;
+
+        .line {
+            display: inline-block;
+            width: 2px;
+            height: 16px;
+            margin-right: 8px;
+            background: @color-text-three;
+            vertical-align: middle;
+            margin-top: -1px;
+        }
+    }
+
+    .status {
+        text-align: center;
+        padding: 15px 0;
+
+        .info {
+            margin-top: 10px;
+        }
+
+        .price {
+            font-size: 26px;
+            color: #bb8b52;
+        }
+    }
+
+    .btn-submit {
+        height: 26px;
+        line-height: 26px;
+        background-color: #fff;
+        padding: 0 15px;
+        outline: none;
+        border: none;
+        color: #e59a99;
+        border: 1px solid #e59a99;
+    }
+
+</style>
diff --git a/src/views/old/facepay/orderList.vue b/src/views/old/facepay/orderList.vue
new file mode 100644
index 0000000..1c0a551
--- /dev/null
+++ b/src/views/old/facepay/orderList.vue
@@ -0,0 +1,160 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 15:34:12
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-05 11:32:13
+ * @Description: 
+ -->
+<template>
+    <!-- 商户收款:订单列表页面 -->
+    <div class="box h-100-g">
+        <x-header title="订单明细" :left-options="{backText:''}">
+            <!-- <div slot="right" class="slot-right">筛选</div> -->
+        </x-header>
+        <section v-if="orderList.length">
+            <h3 class="count">今日成功交易金额:<span class="number">{{countPrice}}</span> 元</h3>
+            <div class="order-item" v-for="(item, index) in orderList" :key="index"
+                @click="$router.push(`/product/dmf-detail?id=${item.orderId}`)">
+                <!-- /product/dmf-detail?id=1251909050004223 -->
+                <group>
+                    <h4 class="title">商户名称:{{item.merName}}</h4>
+                    <div class="price">
+                        <p>支付宝扫码收款</p>
+                        <div>
+                            <p class="num">{{item.payAmt}}</p>
+                            <p v-if="item.status==2" class="fail">{{item.status | getStatus}}</p>
+                            <p v-else-if="item.status==3" class="success">{{item.status | getStatus}}</p>
+                            <p v-else>{{item.status | getStatus}}</p>
+                        </div>
+                    </div>
+                    <footer class="foot flex-44">
+                        <p>{{$tool.date(item.creTime, 'YYYY-MM-DD HH:mm:ss')}}</p>
+                        <p>渠道名称:{{item.chanName}}</p>
+                    </footer>
+                </group>
+            </div>
+        </section>
+        <f-no-data v-else></f-no-data>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'facepay_list',
+        data() {
+            return {
+                orderList: [],
+                countPrice: 0
+            }
+        },
+        created() {
+            this.init()
+        },
+        filters: {
+            getStatus(v) {
+                switch (v) {
+                    case 0:
+                        return '待支付';
+                    case 1:
+                        return '交易成功';
+                    case 2:
+                        return '订单超时';
+                    case 3:
+                        return '退款成功';
+                }
+            }
+        },
+        methods: {
+            getTime(v) {
+                return this.$tool.date(v, 'YYYY-MM-DD hh:ss:mm');
+            },
+            init() {
+                // 查询参数,后期做
+                // "endTime": "2019-05-27T08:31:59.603Z",
+                // "mgrId": 0,
+                // "orderId": 0,
+                // "prodId": 0,
+                // "staTime": "2019-05-27T08:31:59.603Z",
+                // "status": 0
+                // merId
+                this.$api.facepay_orderList({merId:this.$route.query.merId}).then(res => {
+                    let body = res.body;
+                    this.countPrice = body.sumAmt || 0;
+                    this.orderList = body.dmfOrderVoList || [];
+                })
+            }
+        }
+    }
+
+</script>
+
+
+
+<style lang="less" scoped>
+    .box{
+        background-color: #f1f1f1;
+        padding-top: 54px;
+    }
+    .order-item {
+        margin-bottom: 15px;
+
+        .number {
+            color: #bd8e55;
+        }
+    }
+
+    .count {
+        height: 44px;
+        line-height: 44px;
+        padding-left: 15px;
+    }
+
+    .flex-44 {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        height: 44px;
+        line-height: 44px;
+    }
+
+    .title {
+        color: #c6c6c6;
+        font-weight: normal;
+        text-align: right;
+        border-bottom: 1px solid #D9D9D9;
+        padding-right: 15px;
+        height: 44px;
+        line-height: 44px;
+        font-size: 14px;
+    }
+
+    .price {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        height: 90px;
+        padding: 0 15px;
+        text-align: center;
+        color: #5a5a5a;
+        font-weight: 600;
+        font-size: 16px;
+
+        .num {
+            color: #bd8e55;
+            font-size: 20px;
+        }
+        .success{
+            color: #ff7a45;
+        }
+        .fail{
+            color: #f5222d;
+        }
+    }
+
+    .foot {
+        background-color: #f8f5f1;
+        padding: 0 15px;
+        font-size: 14px;
+    }
+
+</style>
diff --git a/src/views/old/merchant/creditStaging.vue b/src/views/old/merchant/creditStaging.vue
new file mode 100644
index 0000000..b04539d
--- /dev/null
+++ b/src/views/old/merchant/creditStaging.vue
@@ -0,0 +1,92 @@
+<!--
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 15:59:31
+ * @Description: 
+ -->
+<template>
+    <div class="creditStaging-page h-100-g">
+        <x-header title="信用卡分期" :left-options="{backText:''}"></x-header>
+        <group>
+            <x-input title="状态"  v-model="typeIdName" text-align='right' readonly></x-input>
+        </group>
+        <f-space></f-space>
+
+        <group>
+            <x-input v-for="i in prodRef.prodSkDtlInfoList" :key="i.term" :title="i.term+'期'" v-model="i.fee" readonly text-align="right">
+                <div slot="right" class="unit">%</div>
+            </x-input>
+        </group>
+        <f-space></f-space>
+    </div>
+</template>
+
+<script>
+    import { mapState } from 'vuex';
+    export default {
+        name: 'creditStaging',
+        data() {
+            return {
+                typeIdName:'',
+                prodRef: {
+                    status:'',
+                    prodSkDtlInfoList: [],
+                    typeIdName:''
+                }
+            };
+        },
+        computed:{
+            ...mapState(['userinfo'])
+        },
+        methods: {
+            init() {
+                let parObj = this.$route.query;
+                parObj.orgId =  this.userinfo.orgId;
+                this.$api.prodRefInit(this.$route.query).then(res => {
+                    this.prodRef = res.body;
+                    if(this.$route.query.typeId==200001){
+                        if(res.body.status){
+                            this.typeIdName = '已分配'
+                        }else{
+                            this.typeIdName = '未分配'
+                        }
+                    }
+                });
+            }
+        },
+        created() {
+            this.init();
+        }
+    };
+</script>
+
+<style lang="less">
+.creditStaging-page {
+    padding-top: 54px;
+    background-color: #f1f1f1;
+
+
+    & /deep/ .weui-switch {
+        width: 44px;
+        height: 24px;
+        &::before {
+            width: 42px;
+            height: 22px;
+        }
+        &::after {
+            width: 22px;
+            height: 22px;
+        }
+    }
+    .unit {
+        margin-left: 5px;
+        color: @color-text-main;
+        font-size: @font-size-medium;
+    }
+    .tips {
+        padding: 12px;
+        font-size: @font-size-small;
+        color: @color-text-three;
+    }
+}
+</style>
diff --git a/src/views/old/merchant/gjzj/baseInfo.vue b/src/views/old/merchant/gjzj/baseInfo.vue
new file mode 100644
index 0000000..a0d5b18
--- /dev/null
+++ b/src/views/old/merchant/gjzj/baseInfo.vue
@@ -0,0 +1,183 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description: 
+ -->
+<template>
+    <div class="open-gjzj-page">
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                基本信息
+            </div>
+            <x-input title='商户名称' v-model.trim="storeInfo.merName" readonly text-align='right'></x-input>
+            <x-input title='营业执照号' v-model.trim="storeInfo.licenseNo" readonly text-align='right'></x-input>
+            <x-input title='地址' v-model.trim="storeInfo.merAddr" readonly text-align='right'></x-input>
+            <x-input title='详细地址' v-model.trim="storeInfo.merDtlAddr" readonly text-align='right'></x-input>
+            <x-input title='营业面积' v-model.trim="storeInfo.merArea" placeholder='请输入' :max='10' text-align='right'>
+            </x-input>
+            <datetime title="成立日期" v-model.trim="storeInfo.foundDate" placeholder='请选择'></datetime>
+            <datetime v-if="isHeyd" v-model="storeInfo.agreeStartTime" format="YYYY-MM-DD" title="协议开始时间"></datetime>
+            <datetime v-if="isHeyd" v-model="storeInfo.agreeEndTime" format="YYYY-MM-DD" title="协议结束时间"></datetime>
+        </group>
+        <f-space></f-space>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                法人信息
+            </div>
+            <x-input title='法人姓名' v-model.trim="storeInfo.legalName" readonly text-align='right'></x-input>
+            <x-input title='法人身份证号' v-model.trim="storeInfo.legalIdNo" readonly text-align='right'></x-input>
+            <x-input title='法人电话' v-model.trim="storeInfo.legalMblNo" placeholder='请输入' :max='11' text-align='right'>
+            </x-input>
+            <x-input title='法人家庭住址' v-model.trim="storeInfo.legalHomeAddr" placeholder='请输入' :max='20'
+                text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                联系人信息
+            </div>
+            <x-input title='联系人姓名' v-model.trim="storeInfo.contactName" placeholder='请输入' :max='8' text-align='right'>
+            </x-input>
+            <x-input title='联系人电话' v-model.trim="storeInfo.contactMblNo" placeholder='请输入' :max='11' text-align='right'>
+            </x-input>
+            <x-input title='联系人职务' v-model.trim="storeInfo.contactDuty" placeholder='请输入' :max='10' text-align='right'>
+            </x-input>
+        </group>
+        <f-space></f-space>
+
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                银行信息
+            </div>
+            <selector title='银行名称' placeholder='请选择' @on-change='handleBankChange' v-model="storeInfo.bankCode"
+                :options='bankList' :value-map="['code','name']" direction='rtl'></selector>
+            <x-input title='开户行' v-model.trim="storeInfo.bankDtlName" placeholder='请输入' :max='20' text-align='right'>
+            </x-input>
+
+            <x-address v-model="calcAddress" title="地址" v-if="isHeyd"  :list="addressList" hide-district placeholder="请选择"  ></x-address>
+
+            <x-input title='户名' v-model.trim="storeInfo.cardName" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='银行账号' v-model.trim="storeInfo.cardNo" placeholder='请输入' :max='30' text-align='right'>
+            </x-input>
+            <selector title='账号类型' placeholder='请选择' @on-change='handleCardTypeChange' v-model="storeInfo.cardType"
+                :options='cardTypeList' :value-map="['code','name']" direction='rtl'></selector>
+            <x-input v-show="storeInfo.cardType==='pu'" v-if="isHeyd" title='开户行行号' v-model.trim="storeInfo.bankNo" :max='20' type="number" placeholder='请输入'
+            text-align='right'></x-input>
+        </group>
+    </div>
+</template>
+
+<script>
+    import {
+        Datetime,
+        XAddress
+    } from 'vux';
+    export default {
+        name: 'huaGjzjOpen',
+        components: {
+            Datetime,
+            XAddress
+        },
+        data() {
+            return {
+
+            };
+        },
+        props: {
+            addressList: {
+                type: Array,
+                default: []
+            },
+            address: {
+                type: Array,
+                default: []
+            },
+            storeInfo: {
+                type: Object
+            },
+            // 银行列表
+            bankList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+            cardTypeList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+            isHeyd: {
+                type: Boolean,
+                default: false
+            }
+        },
+        computed:{
+            calcAddress:{
+                get(){
+                    return this.address || [];
+                },
+                set(newV){
+                    this.$emit('addr-change', newV);
+                }
+            }
+        },
+        methods: {
+            // 处理银行名称的改变
+            handleBankChange(val) {
+                let currentEle = this.bankList.find(item => {
+                    return item.code === val;
+                })
+                // 银行卡姓名
+                this.storeInfo.bankName = currentEle.name;
+            },
+            // 账号类型
+            handleCardTypeChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.cardTypeList)).find((item) => {
+                    return item.code = val;
+                });
+                this.storeInfo.cardTypeName = currentEle.name;
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-gjzj-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/gjzj/open.vue b/src/views/old/merchant/gjzj/open.vue
new file mode 100644
index 0000000..a86a527
--- /dev/null
+++ b/src/views/old/merchant/gjzj/open.vue
@@ -0,0 +1,359 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:20:18
+ * @Description:
+ -->
+<template>
+    <div class="open-gjzj-index">
+        <x-header :title="isHeyd ? '开通智享花':'开通购机直降'" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+        </x-header>
+        <!-- v-show="step === 1"  -->
+        <base-info
+            v-show="step === 1"
+            :cardTypeList="cardTypeList"
+            :bankList="bankList"
+            :isHeyd="isHeyd"
+            :address="address"
+            :addressList="addressList"
+            :storeInfo="storeInfo"
+            @addr-change="setCitycode"
+        >
+        </base-info>
+        <store-pictures v-show="step === 2 && !isHeyd" :storeInfo="storeInfo"></store-pictures>
+        <!-- 海尔云贷的文件上传type + 6 -->
+        <store-pictures v-show="step === 2 && isHeyd" :storeInfo="storeInfo" :filetype="6" ></store-pictures>
+        <!-- <store-pictures  :storeInfo="storeInfo" :filetype="6" ></store-pictures> -->
+        <f-space type="large"></f-space>
+        <f-button @on-click="handleNextStep" fixed>{{ step === 1 ? '下一步' : '提交开通' }}</f-button>
+    </div>
+</template>
+
+<script>
+    import BaseInfo from './baseInfo.vue';
+    import StorePictures from './storePictures.vue';
+    import formCheckAndComt from '@/utils/formCheckAndComb';
+
+    import {
+        dateFormat
+    } from 'vux'
+
+    export default {
+        name: 'gjzjOpen_2',
+        components: {
+            BaseInfo,
+            StorePictures
+        },
+        data() {
+            return {
+                step: 1,
+                stepText: '下一步',
+                bankList: [],
+                cardTypeList: [],
+                addressList:[],
+                address:[],
+                storeInfo: {
+                    //协议开始时间,结束时间(智享花才有)
+                    agreeStartTime:'',
+                    agreeEndTime:'',
+                    provCode:'',//省code
+                    cityCode:'',//市code
+                    bankNo:'',//开户行行号
+
+                    merName: '',
+                    licenseNo: '',
+                    merAddr: '',
+                    merDtlAddr: '',
+                    merArea: '',
+                    foundDate: '',
+                    legalName: '',
+                    legalIdNo: '',
+                    legalMblNo: '',
+                    legalHomeAddr: '',
+                    contactName: '',
+                    contactMblNo: '',
+                    contactDuty: '',
+                    bankCode: '', // 银行code
+                    bankName: '', // 银行名称
+                    bankDtlName: '', // 开户行
+                    cardName: '', // 户名
+                    cardNo: '', // 银行卡号
+                    cardType: '', // 账号类型code
+                    cardTypeName: '', // 账号类型name
+                    licencePhotos: [], // 营业执照
+                    legalCardPhotos: [], // 法人身份证
+                    houseContractPhotos: [], // 房产证和租赁合同
+                    storePhotos: [], // 门店照
+                    mealBillPhotos: [], // 终端商品的定价单
+                    accreditFilePhotos: [], // 授权文件
+                },
+                // 验证开户信息字段
+                storeCheckInfo: [{
+                        key: 'merArea',
+                        tipType: 1,
+                        message: '营业面积'
+                    },
+                    {
+                        key: 'foundDate',
+                        tipType: 2,
+                        message: '成立日期'
+                    },
+
+                    {
+                        key: 'legalMblNo',
+                        tipType: 1,
+                        type: 'tel',
+                        message: '法人电话'
+                    },
+                    {
+                        key: 'legalHomeAddr',
+                        tipType: 1,
+                        message: '法人家庭住址'
+                    },
+                    {
+                        key: 'contactName',
+                        tipType: 1,
+                        type: 'name',
+                        message: '联系人姓名'
+                    },
+                    {
+                        key: 'contactMblNo',
+                        tipType: 1,
+                        type: 'tel',
+                        message: '联系人电话'
+                    },
+                    {
+                        key: 'contactDuty',
+                        tipType: 1,
+                        message: '联系人职务'
+                    },
+                    {
+                        key: 'bankCode',
+                        tipType: 2,
+                        message: '银行名称'
+                    },
+                    {
+                        key: 'bankDtlName',
+                        tipType: 1,
+                        message: '开户行'
+                    },
+                    {
+                        key: 'cardName',
+                        tipType: 1,
+                        message: '户名'
+                    },
+                    {
+                        key: 'cardNo',
+                        tipType: 1,
+                        type:"bankCardNo",
+                        message: '银行账号'
+                    },
+                ],
+                bankNo:''
+            };
+        },
+        computed:{
+            // 通过icon字段判断是智享云还是购机直降
+            isHeyd(){
+                return this.$route.query.icon=='scene_Staging-zxh';
+            }
+        },
+        created(){
+            if(this.isHeyd){
+                this.$api.getArea().then(res => {
+                    this.addressList = res.body.provList;
+                });
+            }
+            this.init();
+        },
+        methods: {
+            // 设置地区code
+            setCitycode(val){
+                this.storeInfo.provCode = val[0];
+                this.storeInfo.cityCode = val[1];
+                this.address = val;
+            },
+            goBackPage() {
+                if (this.step === 2) {
+                    this.step -= 1;
+                } else {
+                    this.$router.push({
+                        path: '/main/productManagement'
+                    });
+                }
+            },
+            // 初始化页面
+            init() {
+                let fn;
+                if(this.isHeyd){
+                    fn = this.$api.heydInitOpen;
+                }else{
+                    fn = this.$api.gjzjOpenInit;
+                }
+                fn().then(res => {
+                    let body = res.body;
+                    this.bankList = body.bankList;
+                    this.cardTypeList = body.cardTypeList;
+                    for (let i in this.storeInfo) {
+                        if(Array.isArray(this.storeInfo[i])){
+                            this.storeInfo[i] = body[i] ? body[i] : [];
+                        }else{
+                            this.storeInfo[i] = body[i] ? body[i] : '';
+                        }
+                    }
+                    if(this.isHeyd && body.cityCode){
+                        this.address.push(body.provCode+'')
+                        this.address.push(body.cityCode+'')
+                    }
+                    this.storeInfo.foundDate = dateFormat(this.storeInfo.foundDate, 'YYYY-MM-DD');
+                });
+            },
+            // 处理点击下一步跳转处理
+            handleNextStep() {
+                // 判断表单字段必填性
+                if (this.step === 1) {
+                    // 智享花增加这两个字段验证
+                    if(this.isHeyd){
+                        let rules = [
+                            {
+                                key: 'agreeStartTime',
+                                tipType: 1,
+                                message: '协议开始时间'
+                            },
+                            {
+                                key: 'agreeEndTime',
+                                tipType: 1,
+                                message: '协议结束时间'
+                            },
+                            {
+                                key: 'cityCode',
+                                tipType: 2,
+                                message: '地区'
+                            }
+                        ]
+                        // 对公时验证开户行行号
+                        if(this.storeInfo.cardType ==='pu'){
+                            rules.push({
+                                key: 'bankNo',
+                                tipType: 1,
+                                message: '开户行行号'
+                            })
+                        }
+                        this.storeCheckInfo.push(...rules)
+                    }
+                    // 判断表单是否必填
+                    if (!formCheckAndComt.checkRequiredField(this.storeCheckInfo,this.storeInfo,this)) {
+                        return false;
+                    }
+                    this.step += 1;
+                } else {
+                    this.handleSubmitOpen();
+                }
+            },
+            // 处理提交
+            handleSubmitOpen() {
+
+                // 需要判断图片的字段
+                let checkPicList = [{
+                        checkField: 'licencePhotos',
+                        msg: '营业执照照片'
+                    },
+                    {
+                        checkField: 'legalCardPhotos',
+                        msg: '法人身份证正反面照片'
+                    },
+                    {
+                        checkField: 'houseContractPhotos',
+                        msg: '房产证或租赁合同'
+                    },
+                    {
+                        checkField: 'storePhotos',
+                        msg: '外景照、门头照片、前台照、内景照'
+                    },
+                    {
+                        checkField: 'mealBillPhotos',
+                        msg: '套餐活动清单、终端商品定价清单'
+                    },
+                    {
+                        checkField: 'accreditFilePhotos',
+                        msg: '运营商授权文件'
+                    },
+                ];
+                // 判断图片是否上传
+                for (let item of checkPicList) {
+                    if (!(this.storeInfo[item.checkField] instanceof Array &&
+                            this.storeInfo[item.checkField].length)) {
+                        this.$notify('请上传' + item.msg);
+
+                        return false;
+                    }
+                }
+
+                // 由于后端初始化返回的图片字段{url: xx, id: 121}, 而此时在提交的时候,我们
+                // 提交图片字段为[id1, id2], 为id的列表
+                let picIdList = {
+                    licencePhotos: [],
+                    legalCardPhotos: [],
+                    houseContractPhotos: [],
+                    storePhotos: [],
+                    mealBillPhotos: [],
+                    accreditFilePhotos: []
+                };
+                for (let i in picIdList) {
+                    if (this.storeInfo[i] instanceof Array &&
+                        this.storeInfo[i].length) {
+                        // 后端图片初始文件id为id.而控件上传id为fieldId,这里需要兼容处理一下
+                        this.storeInfo[i].forEach((item) => {
+                            item.fileId ? picIdList[i].push(item.fileId) :
+                                picIdList[i].push(item.id)
+                        });
+                    }
+                }
+
+
+                // 覆盖submitInfo中的 (agreeStartTime 、agreeEndTime)
+                let time = {
+                    agreeStartTime:this.storeInfo.agreeStartTime.split('-').join(''),
+                    agreeEndTime:this.storeInfo.agreeEndTime.split('-').join('')
+                }
+                let submitInfo = {
+                    ...this.storeInfo,
+                    ...time,
+                    ...picIdList
+                };
+
+
+                let fn;
+                if(this.isHeyd){
+                    // 对私时开户行行号不传值
+                    if(this.storeInfo.cardType ==='pr'){
+                        submitInfo.bankNo = '';
+                    }
+                    fn = this.$api.heydOpen; //海尔云贷接口
+                }else{
+                    fn = this.$api.gjzjOpenOpen;
+                }
+
+                fn(submitInfo).then((res) => {
+                    this.$router.push({
+                        path: '/gjzj/open-result',
+                        // 提交后,默认跳转审核结果页面,状态为开通中
+                        query: {
+                            openStatus: 1,
+                            icon:this.$route.query.icon
+                        }
+                    })
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+.open-gjzj-index{
+            padding-top: 54px;
+        background-color: #f1f1f1;
+}
+</style>
+
diff --git a/src/views/old/merchant/gjzj/openResult.vue b/src/views/old/merchant/gjzj/openResult.vue
new file mode 100644
index 0000000..5f09f6a
--- /dev/null
+++ b/src/views/old/merchant/gjzj/openResult.vue
@@ -0,0 +1,100 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 10:50:04
+ * @Description: 
+ -->
+
+<template>
+    <div class="gjzj-result-page">
+        <x-header :title="isHeyd ? '开通智享花' : '开通购机直降'" :left-options="{backText:'',preventGoBack:true}"
+                  @on-click-back="pageGoBack"></x-header>
+        <div class="status-icon">
+            <i v-if="openStatus === 1"
+               class="iconfont scene_Staging-shenhezhong1"></i>
+            <i v-if="openStatus === 2"
+               class="iconfont scene_Staging-danxuan"></i>
+            <i v-if="openStatus === 3"
+               class="iconfont scene_Staging-shibai1"></i>
+        </div>
+        <div class="tips">
+            <p v-if="openStatus === 1">您的资料已提交成功,请耐心等待审核。</p>
+            <p v-if="openStatus === 2">您已通过审核。</p>
+            <p v-if="openStatus === 3">产品被停用,请联系管理员</p>
+        </div>
+        <f-button @on-click="handleBack">{{ buttonText }}</f-button>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'add-account',
+        data() {
+            return {
+                // 0-待开通,1-开通中,2-已开通,3-开通失败
+                openStatus: 0, // 开通状态
+                buttonText: '返回', // 底部按钮文字
+            };
+        },
+        computed:{
+            isHeyd(){
+                let icon = this.$route.query.icon;
+                if(icon ==='scene_Staging-zxh'){
+                    return true
+                }else{
+                    return false
+                }
+            }
+        },
+        methods: {
+            pageGoBack(){
+                this.$router.push({
+                    path: '/main/productManagement'
+                });
+            },
+            handleBack () {
+                // 如果是在开通中的话,那么底部有重新提交按钮
+                // 点击重新提交,那么用户可以重新填写资料
+                if (this.openStatus === 1) {
+                    this.$router.push({
+                        path: `/gjzj/open?icon=${this.$route.query.icon}`
+                    });
+                } else {
+                    this.$router.push({
+                        path: '/main/productManagement'
+                    });
+                }
+
+            },
+        },
+        created() {
+            this.openStatus = Number(this.$route.query.openStatus);
+            this.buttonText = this.openStatus === 1 ? '重新提交' : '返回';
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .gjzj-result-page {
+        height: 100%;
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        .status-icon {
+            padding-top: 20px;
+            text-align: center;
+        }
+        .iconfont {
+            font-size: 64px;
+            color: #BFA073;
+        }
+        .scene_Staging-shibai1 {
+            color: #F76260;
+        }
+        .tips {
+            color: #999;
+            font-size: 14px;
+            line-height: 1.6;
+            text-align: center;
+        }
+    }
+</style>
diff --git a/src/views/old/merchant/gjzj/storePictures.vue b/src/views/old/merchant/gjzj/storePictures.vue
new file mode 100644
index 0000000..58d94b7
--- /dev/null
+++ b/src/views/old/merchant/gjzj/storePictures.vue
@@ -0,0 +1,71 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:14:44
+ * @Description: 
+ -->
+<template>
+    <div class="gjzj-picture-page">
+        <div class="pic-content">
+            <UploadFile
+                :fileType="9+filetype"
+                :title="'营业执照照片'"
+                :picList="storeInfo.licencePhotos"></UploadFile>
+            <UploadFile
+                :fileType="10+filetype"
+                :title="'法人身份证正反面照片'"
+                :picList="storeInfo.legalCardPhotos"></UploadFile>
+            <UploadFile
+                :fileType="11+filetype"
+                :title="'房产证或租赁合同'"
+                :picList="storeInfo.houseContractPhotos"></UploadFile>
+            <UploadFile
+                :fileType="12+filetype"
+                :title="'外景照、门头照片、前台照、内景照'"
+                :picList="storeInfo.storePhotos"></UploadFile>
+            <UploadFile
+                :fileType="13+filetype"
+                :title="'套餐活动清单、终端商品定价清单'"
+                :picList="storeInfo.mealBillPhotos"></UploadFile>
+            <UploadFile
+                :fileType="14+filetype"
+                :title="'运营商授权文件'"
+                :picList="storeInfo.accreditFilePhotos"></UploadFile>
+        </div>
+    </div>
+</template>
+
+<script>
+    import UploadFile from '@/components/old/upload/uploadImg.vue';
+
+    export default {
+        name: 'gjzjStorePicture',
+        components: {
+            UploadFile
+        },
+        data() {
+            return {
+            };
+        },
+        props: {
+            storeInfo: {
+                type: Object,
+                required: true,
+            },
+            // + 6的是海尔云贷的上传
+            filetype:{
+                type:Number,
+                default:0
+            }
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .gjzj-picture-page {
+        background: @color-white;
+        .pic-content {
+            padding: 0 15px;
+        }
+    }
+</style>
diff --git a/src/views/old/merchant/gzzj/merBaseInfo.vue b/src/views/old/merchant/gzzj/merBaseInfo.vue
new file mode 100644
index 0000000..8427205
--- /dev/null
+++ b/src/views/old/merchant/gzzj/merBaseInfo.vue
@@ -0,0 +1,168 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-page">
+        <group>
+            <x-input title='运营商内部名称' v-model.trim="merInfo.merchantName" placeholder='请输入' :max='100'  text-align='right'></x-input>
+            <x-input title='营业执照号' v-model.trim="merInfo.licenseNo" :max='30' text-align='right'></x-input>
+            <x-input title='营业执照名称' v-model.trim="merInfo.orgName" placeholder='请输入' :max='50'  text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <x-input title='法人名称' v-model.trim="merInfo.legalName" :max='30' placeholder='请输入' text-align='right'></x-input>
+            <x-input title='实控人身份证号' v-model.trim="merInfo.actualCtlIdCardNo" :max='18' placeholder='请输入' text-align='right'></x-input>
+            <x-input title='实控人身份证地址' v-model.trim="merInfo.actualCtl" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='实控人手机号' v-model.trim="merInfo.actualCtlPhone" placeholder='请输入' :max='11' text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <van-field v-model.trim="merInfo.addrText"  clearable :readonly="true" right-icon="arrow" label="省市区" placeholder="                                        请选择"
+                       @click="isShowArea = !isShowArea"  text-align='right'/>
+            <x-input title='详细地址' v-model.trim="merInfo.regDetailAddr" placeholder='请输入' :max='100' text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <x-input title='商户账户名称' v-model.trim="merInfo.acctName" placeholder='请输入' text-align='right' />
+            <selector title='商户银行名称' placeholder='请选择' @on-change='handleBankChange' v-model="merInfo.acctBankname"
+                :options='bankList' :value-map="['code','name']" direction='rtl'></selector>
+            <x-input title='开户支行名称' v-model.trim="merInfo.acctOpenBankname" placeholder='请输入' :max='50' text-align='right'/>
+            <x-input title='开户银行卡号' v-model.trim="merInfo.acctNo" placeholder='请输入' :max='30' text-align='right'/>
+            <x-input title='开户行联行号' v-model.trim="merInfo.acctCnaps" :max='20' placeholder='请输入'
+                     text-align='right'></x-input>
+        </group>
+        <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+            <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+        </van-popup>
+    </div>
+
+</template>
+
+<script>
+    import {calcArea} from '@/utils/index';
+    import {
+        mapState,
+        mapActions
+    } from 'vuex';
+    import {
+        Datetime,
+        XAddress,
+    } from 'vux';
+    export default {
+        name: 'heydMerBase',
+        components: {
+            Datetime,
+            XAddress,
+            ...mapState(['areaList'])
+        },
+        data() {
+            return {
+                areaList:{//地区列表
+                    province_list:{}, //省
+                    city_list:{}, //市
+                    county_list:{}, //地区、县
+                },
+            };
+        },
+        props: {
+            addressList: {
+                type: Array,
+                default: []
+            },
+            isShowArea: {
+                type: Boolean,
+                default: false
+            },
+            merInfo: {
+                type: Object,
+            },
+            // 银行列表
+            bankList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+        },
+        computed:{
+
+        },
+        methods: {
+            ...mapActions(['getArea']),
+            // 获取地区列表
+            getArea() {
+                Vue.prototype.$api.getArea().then((res) => {
+                    let { provList } = res.body;
+                    let obj = calcArea(provList)
+                    this.areaList =  {
+                        province_list:obj.province_list,
+                        city_list:obj.city_list,
+                        county_list:obj.county_list
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            //关闭地区弹窗
+            closeAreaModal() {
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            //保存 地区选择
+            setAreaValue(arr) {
+                this.merInfo.addrText = arr[0].name + '-' + arr[1].name + '-' + arr[2].name;
+                this.merInfo.regProvinceCode = arr[0].code;
+                this.merInfo.regCityCode = arr[1].code;
+                this.merInfo.regDistrictCode = arr[2].code;
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            // 处理银行名称的改变
+            handleBankChange(val) {
+                let currentEle = this.bankList.find(item => {
+                    return item.code === val;
+                })
+            },
+        },
+        created() {
+            this.getArea();
+        },
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/gzzj/merOpen.vue b/src/views/old/merchant/gzzj/merOpen.vue
new file mode 100644
index 0000000..41fa191
--- /dev/null
+++ b/src/views/old/merchant/gzzj/merOpen.vue
@@ -0,0 +1,416 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:20:18
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-index">
+        <x-header :title="'开通公众租机'" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+        </x-header>
+        <!-- v-show="step === 1"  -->
+        <mer-info
+            v-show="step === 1"
+            :merRefList="merRefList"
+            :bankList="bankList"
+            :address="address"
+            :addressList="addressList"
+            :merInfo="merInfo"
+            @addr-change="setCitycode"
+        >
+        </mer-info>
+        <store-info
+                v-show="step === 2"
+                :bizLicenseTypeList="bizLicenseTypeList"
+                :storeInfo="storeInfo"
+        >
+        </store-info>
+        <mgr-info
+                v-show="step === 3"
+                :mgrReqVo="mgrReqVo"
+        >
+        </mgr-info>
+        <f-space type="large"></f-space>
+        <f-button @on-click="handleNextStep" fixed>{{ (step!== 3) ? '下一步' : '提交开通' }}</f-button>
+    </div>
+</template>
+
+<script>
+    import MerInfo from './merBaseInfo.vue';
+    import StoreInfo from './storeBaseInfo.vue';
+    import MgrInfo from './storeBaseMgrInfo.vue';
+    import formCheckAndComt from '@/utils/formCheckAndComb';
+    import {calcArea} from '@/utils/index';
+    import {
+        dateFormat
+    } from 'vux'
+
+    export default {
+        name: 'gzzjMerOpen',
+        components: {
+            MerInfo,
+            StoreInfo,
+            MgrInfo
+        },
+        data() {
+            return {
+                orgType: 0,
+                step: 1,
+                stepText: '下一步',
+                bankList: [],
+                cardTypeList: [],
+                merRefList:[],
+                addressList:[],
+                address:[],
+                bizLicenseTypeList: [{
+                    code: 1,
+                    name: "无",
+                },
+                {
+                    code: 2,
+                    name: "有",
+                }],
+                merInfo: {
+                    acctOpenBankname:'',
+                    merchantName: '',
+                    licenseNo: '',
+                    orgName:'',
+                    actualCtl:'',
+                    actualCtlIdCardNo:'',
+                    actualCtlPhone:'',
+                    addrText:'',
+                    regDetailAddr:'',
+                    acctName:'',
+                    acctBankname:'',
+                    acctNo:'',
+                    acctCnaps:'',
+                    addressList:'',
+                    address:'',
+                    regProvinceCode:'',
+                    regCityCode:'',
+                    regDistrictCode:'',
+                    bankList:'',
+                },
+                storeInfo: {
+                    bizLicenseType:'',
+                    storeName:'',
+                    licenseNo:'',
+                    orgName:'',
+                    storeDetailAddr:'',
+                    legalName:'',
+                    actualCtl:'',
+                    actualCtlPhone:'',
+                    actualCtlIdCardNo:'',
+                    addrText:'',
+                    storeProvinceCode:'',
+                    storeCityCode:'',
+                    storeDistrictCode:'',
+                },
+                mgrReqVo: {
+                    staffName:'',
+                    staffPhone:'',
+                    staffIdcardNo:'',
+                },
+                // 商户开户信息字段
+                merCheckInfo: [
+                    {
+                        key: 'merchantName',
+                        tipType: 1,
+                        message: '运营商内部名称'
+                    },
+                    {
+                        key: 'orgName',
+                        tipType: 1,
+                        message: '营业执照名称'
+                    },
+                    {
+                        key: 'licenseNo',
+                        tipType: 1,
+                        message: '营业执照编号'
+                    },
+                    {
+                        key: 'legalName',
+                        tipType: 1,
+                        message: '法人名称'
+                    },
+                    {
+                        key: 'actualCtl',
+                        tipType: 1,
+                        message: '实控人身份证地址'
+                    },
+                    {
+                        key: 'actualCtlIdCardNo',
+                        tipType: 1,
+                        message: '实控人身份证号'
+                    },
+                    {
+                        key: 'actualCtlPhone',
+                        tipType: 1,
+                        message: '实控人手机号'
+                    },
+                    {
+                        key: 'regDetailAddr',
+                        tipType: 1,
+                        message: '详细地址'
+                    },
+                    {
+                        key: 'acctName',
+                        tipType: 1,
+                        message: '商户账户名称'
+                    },
+                    {
+                        key: 'acctBankname',
+                        tipType: 2,
+                        message: '商户银行名称'
+                    },
+                    {
+                        key: 'acctNo',
+                        tipType: 1,
+                        message: '开户银行卡号'
+                    },
+                    {
+                        key: 'acctOpenBankname',
+                        tipType: 1,
+                        message: '开户支行名称'
+                    },
+                    {
+                        key: 'acctCnaps',
+                        tipType: 1,
+                        message: '开户行联行号'
+                    },
+                    {
+                        key: 'regProvinceCode',
+                        tipType: 1,
+                        message: '省'
+                    },
+                    {
+                        key: 'regCityCode',
+                        tipType: 1,
+                        message: '市'
+                    },
+                    {
+                        key: 'regDistrictCode',
+                        tipType: 1,
+                        message: '区'
+                    },
+                ],
+                // 门店验证信息
+                storeCheckInfo: [
+                    {
+                        key: 'bizLicenseType',
+                        tipType: 2,
+                        message: '商户是否有独立营业执照'
+                    },
+                    {
+                        key: 'storeName',
+                        tipType: 1,
+                        message: '门店名称'
+                    },
+                    {
+                        key: 'actualCtl',
+                        tipType: 1,
+                        message: '门店管理员姓名'
+                    },
+                    {
+                        key: 'actualCtlPhone',
+                        tipType: 1,
+                        message: '门店管理员手机号'
+                    },
+                    {
+                        key: 'actualCtlIdCardNo',
+                        tipType: 1,
+                        message: '门店管理员身份证号'
+                    },
+                ],
+                // 门店验证信息
+                mgrCheckInfo: [
+                    {
+                        key: 'staffName',
+                        tipType: 1,
+                        message: '营业员姓名'
+                    },
+                    {
+                        key: 'staffPhone',
+                        tipType: 1,
+                        message: '营业员电话'
+                    },
+                    {
+                        key: 'staffIdcardNo',
+                        tipType: 1,
+                        message: '营业员身份证号'
+                    },
+                ],
+            };
+        },
+        computed:{
+            // 通过icon字段判断是智享云还是购机直降
+        },
+        created(){
+            this.$api.getArea().then(res => {
+                this.addressList = res.body.provList;
+            });
+            this.init();
+            this.orgType = Number(this.$route.query.orgType);
+        },
+        methods: {
+            // 获取地区列表
+            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) => {
+
+                });
+            },
+            // 设置地区code
+            setCitycode(val){
+                this.merInfo.provCode = val[0];
+                this.merInfo.cityCode = val[1];
+            },
+            goBackPage() {
+                if (this.step === 2 || this.step === 3) {
+                    this.step -= 1;
+                } else {
+                    this.$router.push({
+                        path: '/main/productManagement'
+                    });
+                }
+            },
+            // 初始化页面
+            init() {
+                let fn = this.$api.heydInitOpen;
+                fn().then(res => {
+                    let body = res.body;
+                    this.bankList = body.bankList;
+                    this.cardTypeList = body.acctTypeList;
+                    this.merRefList = body.acctEnpRelList;
+                    for (let i in this.merInfo) {
+                        if(Array.isArray(this.merInfo[i])){
+                            this.merInfo[i] = body[i] ? body[i] : [];
+                            console.log(i+":"+this.merInfo[i]);
+                        }else{
+                            this.merInfo[i] = body[i] ? body[i] : '';
+                        }
+                    }
+                    if(body.cityCode){
+                        this.address.push(body.provCode+'')
+                        this.address.push(body.cityCode+'')
+                    }
+                    this.merInfo.merAddrText = this.merInfo.bizProvinceName +'-'+ this.merInfo.bizCityName +'-'+ this.merInfo.bizDistrictName;
+                    if(this.merInfo.regProvinceName) {
+                        this.merInfo.addrText = this.merInfo.regProvinceName + '-' + this.merInfo.regCityName + '-' + this.merInfo.regDistrictName;
+                    }
+                });
+            },
+            // 处理点击下一步跳转处理
+            handleNextStep() {
+                console.log("step:"+this.step);
+                // 判断表单字段必填性
+                if (this.step === 1) {
+                    if(!formCheckAndComt.checkRequiredField(this.merCheckInfo,this.merInfo,this)){
+                        return false;
+                    }
+                    this.step += 1;
+                }else if (this.step === 2) {
+                    let rules = [
+                    ]
+                    // 对公时验证开户行行号
+                    if(this.storeInfo.bizLicenseType ===2){
+                        rules.push({
+                            key: 'licenseNo',
+                            tipType: 1,
+                            message: '营业执照号'
+                        });
+                        rules.push({
+                            key: 'orgName',
+                            tipType: 1,
+                            message: '营业执照名称'
+                        });
+                        rules.push({
+                            key: 'storeProvinceCode',
+                            tipType: 1,
+                            message: '省份'
+                        });
+                        rules.push({
+                            key: 'storeCityCode',
+                            tipType: 1,
+                            message: '市区'
+                        });
+                        rules.push({
+                            key: 'storeDistrictCode',
+                            tipType: 1,
+                            message: '区域'
+                        });
+                        rules.push({
+                            key: 'storeDetailAddr',
+                            tipType: 1,
+                            message: '门店详细地址'
+                        });
+                        rules.push({
+                            key: 'legalName',
+                            tipType: 1,
+                            message: '法人姓名'
+                        });
+                        rules.push({
+                            key: 'addrText',
+                            tipType: 2,
+                            message: '省市区选择'
+                        });
+                    }
+                    this.storeCheckInfo.push(...rules)
+                    if(!formCheckAndComt.checkRequiredField(this.storeCheckInfo,this.storeInfo,this)){
+                        return false;
+                    }
+                    this.step += 1;
+                }else if (this.step === 3) {
+                    if(!formCheckAndComt.checkRequiredField(this.mgrCheckInfo,this.mgrReqVo,this)){
+                        return false;
+                    }
+                    // 判断表单是否必填
+                    this.handleSubmitOpen();
+                }
+            },
+            // 处理提交
+            handleSubmitOpen() {
+
+                let submitInfo = {
+                    ...this.merInfo,
+                    openStoreInfo:{
+                        ...this.storeInfo,
+                        mgrReqVo:{...this.mgrReqVo}
+                    },
+
+                };
+
+                let fn;
+                fn = this.$api.gzzjOpen; //海尔云贷接口
+                fn(submitInfo).then((res) => {
+                    this.$router.push({
+                        path: '/gzzj/open-result',
+                        // 提交后,默认跳转审核结果页面,状态为开通中
+                        query: {
+                            orgType: this.orgType,
+                            openStatus: 1,
+                            icon:this.$route.query.icon
+                        }
+                    })
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+.open-heyd-index{
+        padding-top: 54px;
+        height:100%;
+        background-color: #f1f1f1;
+}
+</style>
+
diff --git a/src/views/old/merchant/gzzj/merPictures.vue b/src/views/old/merchant/gzzj/merPictures.vue
new file mode 100644
index 0000000..cd14bde
--- /dev/null
+++ b/src/views/old/merchant/gzzj/merPictures.vue
@@ -0,0 +1,55 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:14:44
+ * @Description:
+ -->
+<template>
+    <div class="heyd-picture-page">
+        <div class="pic-content">
+            <UploadFile
+                :fileType="1"
+                :bizLicenseType= "2"
+                :title="'上传营业执照'"
+                :picList="storeInfo.licencePhotos"></UploadFile>
+            <div>
+                <span style="font-size: 15px">上传法人身份证正反面照</span><span style="font-size: 13px;color: #FF6666">(第一张正面,第二张反面)</span>
+            </div>
+            <UploadFile
+                :fileType="2"
+                :bizLicenseType= "2"
+                :title="''"
+                :picList="storeInfo.legalCardPhotos"></UploadFile>
+        </div>
+    </div>
+</template>
+
+<script>
+    import UploadFile from '@/components/old/upload/uploadImgStore.vue';
+
+    export default {
+        name: 'heydMerPicture',
+        components: {
+            UploadFile
+        },
+        data() {
+            return {
+            };
+        },
+        props: {
+            storeInfo: {
+                type: Object,
+                required: true,
+            },
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .heyd-picture-page {
+        background: @color-white;
+        .pic-content {
+            padding: 0 15px;
+        }
+    }
+</style>
diff --git a/src/views/old/merchant/gzzj/mgrBaseInfo.vue b/src/views/old/merchant/gzzj/mgrBaseInfo.vue
new file mode 100644
index 0000000..f3455e7
--- /dev/null
+++ b/src/views/old/merchant/gzzj/mgrBaseInfo.vue
@@ -0,0 +1,79 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-page">
+        <group>
+            <x-input title='营业员姓名' v-model.trim="mgrInfo.staffName" placeholder='请输入'  text-align='right'></x-input>
+            <x-input title='营业员身份证号' v-model.trim="mgrInfo.staffIdcardNo" placeholder='请输入'  text-align='right'></x-input>
+            <x-input title='营业员电话' v-model.trim="mgrInfo.staffPhone" placeholder='请输入' :max='11'  text-align='right'></x-input>
+        </group>
+    </div>
+</template>
+
+<script>
+    import {
+        Datetime,
+        XAddress
+    } from 'vux';
+    export default {
+        name: 'gzzjMgrBase',
+        components: {
+            Datetime,
+            XAddress
+        },
+        data() {
+            return {
+
+            };
+        },
+        props: {
+            mgrInfo: {
+                type: Object
+            },
+        },
+        computed:{
+
+        },
+        methods: {
+
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/gzzj/mgrOpen.vue b/src/views/old/merchant/gzzj/mgrOpen.vue
new file mode 100644
index 0000000..28d3379
--- /dev/null
+++ b/src/views/old/merchant/gzzj/mgrOpen.vue
@@ -0,0 +1,147 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:20:18
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-index">
+        <x-header :title="'开通公众租机'" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+        </x-header>
+        <!-- v-show="step === 1"  -->
+        <mgr-info
+                v-show="step === 1"
+                :mgrInfo="mgrInfo"
+        >
+        </mgr-info>
+        <f-space type="large"></f-space>
+        <!-- <f-button @on-click="handleNextStep" fixed>{{'提交开通'}}</f-button> -->
+        <van-button class="btn" round @click="handleNextStep" >{{'提交开通'}}</van-button>
+    </div>
+</template>
+
+<script>
+    import MgrInfo from './mgrBaseInfo.vue';
+    import formCheckAndComt from '@/utils/formCheckAndComb';
+
+    import {
+        dateFormat
+    } from 'vux'
+
+    export default {
+        name: 'gzzjMgrOpen',
+        components: {
+            MgrInfo,
+        },
+        data() {
+            return {
+                orgType:0,
+                step: 1,
+                stepText: '下一步',
+                mgrInfo: {
+                    staffName: '',
+                    staffPhone: '',
+                    staffIdcardNo:'',
+                },
+                // 验证开户信息字段
+                mgrCheckInfo: [
+                    {
+                        key: 'staffName',
+                        tipType: 1,
+                        message: '营业员姓名'
+                    },
+                    {
+                        key: 'staffPhone',
+                        tipType: 1,
+                        message: '营业员电话'
+                    },
+                    {
+                        key: 'staffIdcardNo',
+                        tipType: 1,
+                        message: '门店管理员身份证号'
+                    },
+                ],
+                bankNo:''
+            };
+        },
+        computed:{
+            // 通过icon字段判断是智享云还是购机直降
+        },
+        created(){
+            this.init();
+            this.orgType = Number(this.$route.query.orgType);
+        },
+        methods: {
+            // 设置地区code
+
+            goBackPage() {
+                if (this.step === 2) {
+                    this.step -= 1;
+                } else {
+                    this.$router.push({
+                        path: '/store/productManage'
+                    });
+                }
+            },
+            // 初始化页面
+            init() {
+            },
+            // 处理点击下一步跳转处理
+            handleNextStep() {
+                // 判断表单字段必填性
+                if (this.step === 1) {
+                    // 智享花增加这两个字段验证
+
+                    // 判断表单是否必填
+                    if (!formCheckAndComt.checkRequiredField(this.mgrCheckInfo,this.mgrInfo,this)) {
+                        return false;
+                    }
+                } else {
+                    this.handleSubmitOpen();
+                }
+                this.handleSubmitOpen();
+            },
+            // 处理提交
+            handleSubmitOpen() {
+                let submitInfo = {
+                    ...this.mgrInfo
+                };
+
+
+                let fn;
+                fn = this.$api.gzzjOpenMgr; //营业员开通接口
+                fn(submitInfo).then((res) => {
+                    this.$router.push({
+                        path: '/gzzj/open-result',
+                        // 提交后,默认跳转审核结果页面,状态为开通中
+                        query: {
+                            orgType: this.orgType,
+                            openStatus: 1,
+                            icon:this.$route.query.icon
+                        }
+                    })
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-index{
+        padding-top: 54px;
+        height:100%;
+        background-color: #f1f1f1;
+    }
+    .btn {
+        position: fixed;
+        bottom: 15px;
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+        }
+</style>
+
diff --git a/src/views/old/merchant/gzzj/openResult.vue b/src/views/old/merchant/gzzj/openResult.vue
new file mode 100644
index 0000000..bad6df9
--- /dev/null
+++ b/src/views/old/merchant/gzzj/openResult.vue
@@ -0,0 +1,168 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 10:50:04
+ * @Description:
+ -->
+
+<template>
+    <div class="gjzj-result-page">
+        <x-header :title="'开通公众租机'" :left-options="{backText:'',preventGoBack:true}"
+                  @on-click-back="pageGoBack"></x-header>
+        <div class="status-icon">
+            <i v-if="openStatus === 1"
+               class="iconfont scene_Staging-shenhezhong1"
+               style="color: #896EDB;"
+                ></i>
+            <i v-if="openStatus === 2"
+                class="iconfont scene_Staging-tijiaochenggong"
+                style="color: #19BE6B;"
+                ></i>
+            <i v-if="openStatus === 3"
+                class="iconfont scene_Staging-tijiaoshibai"
+                style="color: #F76260;"
+               ></i>
+            <i v-if="openStatus === 4"
+                 class="iconfont scene_Staging-tijiaoshibai"
+                 style="color: #F76260;"
+                 ></i>
+    </div>
+        <div class="tips">
+            <p v-if="openStatus === 1">{{ statusType }}审批中</p>
+            <p v-if="openStatus === 2"> {{ statusType }}审批通过</p>
+            <p v-if="openStatus === 3"> {{ statusType}}审批失败</p>
+            <p v-if="openStatus === 4">冻结</p>
+        </div>
+        <van-button round @click="handleBack">{{ buttonText }}</van-button>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'add-account',
+        data() {
+            return {
+                // 0-待开通,1-审批中,2-审批通过,3-审批失败,4-冻结
+                openStatus: 0, // 开通状态
+                orgType:0,
+                buttonText: '返回', // 底部按钮文字
+                statusType: this.$route.query.statusType,
+            };
+        },
+        computed:{
+        },
+        methods: {
+            pageGoBack(){
+                if(this.orgType==3) {
+                    this.$router.push({
+                        path: '/main/productManagement'
+                    });
+                }else if(this.orgType==4){
+                    this.$router.push({
+                        path: '/store/productManage'
+                    });
+                }else if(this.orgType==5){
+                    this.$router.push({
+                        path: '/store/productManage'
+                    });
+                }
+            },
+            handleBack () {
+                // 如果是在开通中的话,那么底部有重新提交按钮
+                // 点击重新提交,那么用户可以重新填写资料
+                if(this.openStatus == 1 || this.openStatus == 2) {
+                    if (this.orgType == 3) {
+                        this.$router.replace({
+                            path: '/main/productManagement'
+                        });
+                        this.$router.go(-1)
+                    } else if (this.orgType == 4) {
+                        this.$router.replace({
+                            path: '/store/productManage'
+                        });
+                        this.$router.go(-1)
+                    } else if (this.orgType == 5) {
+                        this.$router.replace({
+                            path: '/store/productManage'
+                        });
+                        this.$router.go(-1)
+                    }
+                } else if(this.openStatus == 3 || this.openStatus == 4){
+                    if (this.orgType == 3) {
+                        let query = {
+                            typeId:'200017',
+                            openStatus: this.openStatus,
+                            orgType: this.orgType
+                        }
+                        this.$router.push({
+                            path:'/gzzj/merOpen',
+                            query
+                        });
+                    } else if (this.orgType == 4) {
+                        let query = {
+                            typeId:'200017',
+                            openStatus: this.openStatus,
+                            orgType: this.orgType
+                        }
+                        this.$router.push({
+                            path:'/gzzj/storeOpen',
+                            query
+                        });
+                    } else if (this.orgType == 5) {
+                        let query = {
+                            typeId:'200017',
+                            openStatus: this.openStatus,
+                            orgType: this.orgType
+                        }
+                        this.$router.push({
+                            path:'/gzzj/mgrOpen',
+                            query
+                        });
+                    }
+                }
+            },
+        },
+        created() {
+            console.log(this.statusType)
+            this.openStatus = Number(this.$route.query.openStatus);
+            this.orgType = Number(this.$route.query.orgType);
+            if(this.openStatus == 1 || this.openStatus == 2) {
+                this.buttonText = '返回';
+            }else if(this.openStatus == 3 || this.openStatus == 4){
+                this.buttonText = '再次提交';
+            }
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .gjzj-result-page {
+        height: 100%;
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        .status-icon {
+            padding-top: 20px;
+            text-align: center;
+        }
+        .iconfont {
+            font-size: 64px;
+            color: #BFA073;
+        }
+        .scene_Staging-shibai1 {
+            color: #F76260;
+        }
+        .tips {
+            color: #999;
+            font-size: 14px;
+            line-height: 1.6;
+            text-align: center;
+        }
+    }
+    .van-button {
+        width: 90%;
+        margin: 0 5%;
+        margin-top: 60px;
+        color: white !important;
+        background: #896edb;
+        }
+</style>
diff --git a/src/views/old/merchant/gzzj/storeBaseInfo.vue b/src/views/old/merchant/gzzj/storeBaseInfo.vue
new file mode 100644
index 0000000..24e124c
--- /dev/null
+++ b/src/views/old/merchant/gzzj/storeBaseInfo.vue
@@ -0,0 +1,176 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-page">
+        <group>
+            <selector title='商户是否有独立营业执照' placeholder='请选择' @on-change='handleLicenseTypeChange' v-model="storeInfo.bizLicenseType"
+                      :options='bizLicenseTypeList' :value-map="['code','name']" direction='rtl'></selector>
+            <x-input title='门店名称' v-model.trim="storeInfo.storeName" :max='50' placeholder='请输入' text-align='right'></x-input>
+            <x-input v-if="storeInfo.bizLicenseType===2" title='营业执照号' v-model.trim="storeInfo.licenseNo" placeholder='请输入' :max='30' text-align='right'/>
+            <x-input v-if="storeInfo.bizLicenseType===2" title='营业执照名称' v-model.trim="storeInfo.orgName" :max='50' placeholder='请输入'
+                     text-align='right'></x-input>
+            <van-field v-if="storeInfo.bizLicenseType===2" v-model.trim="storeInfo.addrText" clearable :readonly="true" right-icon="arrow" label="省市区"
+                       @click="isShowArea = !isShowArea"  text-align='right'/>
+            <x-input v-if="storeInfo.bizLicenseType===2" title='详细地址' v-model.trim="storeInfo.storeDetailAddr" placeholder='请输入' text-align='right'></x-input>
+            <x-input v-if="storeInfo.bizLicenseType===2" title='法人姓名' v-model.trim="storeInfo.legalName" :max='20' placeholder='请输入'
+                     text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <x-input title='门店管理员姓名' v-model.trim="storeInfo.actualCtl"  :max='30' placeholder='请输入' text-align='right'></x-input>
+            <x-input title='门店管理员手机号' v-model.trim="storeInfo.actualCtlPhone" :max='11' placeholder='请输入' text-align='right'></x-input>
+            <x-input title='门店管理员身份证号' v-model.trim="storeInfo.actualCtlIdCardNo" :max='18' placeholder='请输入' text-align='right'></x-input>
+        </group>
+        <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+            <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {calcArea} from '@/utils/index';
+    import {
+        mapState,
+        mapActions
+    } from 'vuex';
+    import {
+        Datetime,
+        XAddress
+    } from 'vux';
+    export default {
+        name: 'heydStoreBase',
+        components: {
+            Datetime,
+            XAddress,
+            ...mapState(['areaList'])
+        },
+        data() {
+            return {
+                areaList:{//地区列表
+                    province_list:{}, //省
+                    city_list:{}, //市
+                    county_list:{}, //地区、县
+                }
+            };
+        },
+        props: {
+            addressList: {
+                type: Array,
+                default: []
+            },
+            address: {
+                type: Array,
+                default: []
+            },
+            isShowArea: {
+                type: Boolean,
+                default: false
+            },
+            storeInfo: {
+                type: Object
+            },
+            bizLicenseTypeList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+        },
+        computed:{
+            calcAddress:{
+                get(){
+                    return this.address || [];
+                },
+                set(newV){
+                    this.$emit('addr-change', newV);
+                }
+            }
+
+        },
+        created() {
+            this.getArea();
+        },
+        methods: {
+            ...mapActions(['getArea']),
+            // 获取地区列表
+            getArea() {
+                Vue.prototype.$api.getArea().then((res) => {
+                    let { provList } = res.body;
+                    let obj = calcArea(provList);
+                    this.areaList =  {
+                        province_list:obj.province_list,
+                        city_list:obj.city_list,
+                        county_list:obj.county_list
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            //关闭地区弹窗
+            closeAreaModal() {
+                console.log(this.areaList);
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            //保存 地区选择
+            setAreaValue(arr) {
+                this.storeInfo.addrText = arr[0].name + '-' + arr[1].name + '-' + arr[2].name;
+                this.storeInfo.storeProvinceCode = arr[0].code;
+                this.storeInfo.storeCityCode = arr[1].code;
+                this.storeInfo.storeDistrictCode = arr[2].code;
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            // 账号类型
+            handleLicenseTypeChange(val) {
+                let currentEle=JSON.parse(JSON.stringify(this.bizLicenseTypeList)).find(item=>item.code===val)
+                this.storeInfo.bizLicenseType = currentEle.code;
+            },
+            // 账号类型
+            handleLiChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.cardTypeList)).find((item) => {
+                    return item.code = val;
+                });
+                this.storeInfo.acctTypeName = currentEle.name;
+            },
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/gzzj/storeBaseMgrInfo.vue b/src/views/old/merchant/gzzj/storeBaseMgrInfo.vue
new file mode 100644
index 0000000..c29566b
--- /dev/null
+++ b/src/views/old/merchant/gzzj/storeBaseMgrInfo.vue
@@ -0,0 +1,87 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-page">
+        <group>
+            <x-input title='营业员姓名' v-model.trim="mgrReqVo.staffName" placeholder='请输入'  text-align='right'></x-input>
+            <x-input title='营业员身份证号' v-model.trim="mgrReqVo.staffIdcardNo" placeholder='请输入'  text-align='right'></x-input>
+            <x-input title='营业员电话' v-model.trim="mgrReqVo.staffPhone" placeholder='请输入' :max='11'  text-align='right'></x-input>
+        </group>
+    </div>
+</template>
+
+<script>
+    import {
+        Datetime,
+        XAddress
+    } from 'vux';
+    export default {
+        name: 'gzzjStoreMgrBase',
+        components: {
+            Datetime,
+            XAddress
+        },
+        data() {
+            return {
+
+            };
+        },
+        props: {
+            mgrReqVo: {
+                type: Object
+            },
+        },
+        computed:{
+            calcAddress:{
+                get(){
+                    return this.address || [];
+                },
+                set(newV){
+                    this.$emit('addr-change', newV);
+                }
+            }
+
+        },
+        methods: {
+
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/gzzj/storeOpen.vue b/src/views/old/merchant/gzzj/storeOpen.vue
new file mode 100644
index 0000000..992fb0d
--- /dev/null
+++ b/src/views/old/merchant/gzzj/storeOpen.vue
@@ -0,0 +1,278 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:20:18
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-index">
+        <x-header :title="'开通公众租机门店'" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+    </x-header>
+        <!-- v-show="step === 1"  -->
+        <store-info
+                v-show="step === 1"
+                :bizLicenseTypeList="bizLicenseTypeList"
+                :storeInfo="storeInfo"
+        >
+        </store-info>
+        <mgr-info
+                v-show="step === 2"
+                :mgrReqVo="mgrReqVo"
+        >
+        </mgr-info>
+        <!-- <store-pictures  :storeInfo="storeInfo" :filetype="6" ></store-pictures> -->
+        <f-space type="large"></f-space>
+        <!-- <f-button @on-click="handleNextStep" fixed>{{ step !== 3 ? '下一步' : '提交开通' }}</f-button> -->
+        <van-button class="btn" round @click="handleNextStep" fixed>{{ step !== 3 ? '下一步' : '提交开通' }}</van-button>
+    </div>
+</template>
+
+<script>
+    import StoreInfo from './storeBaseInfo.vue';
+    import MgrInfo from './storeBaseMgrInfo.vue';
+    import formCheckAndComt from '@/utils/formCheckAndComb';
+
+    import {
+        dateFormat
+    } from 'vux'
+
+    export default {
+        name: 'gzzjStoreOpen',
+        components: {
+            StoreInfo,
+            MgrInfo
+        },
+        data() {
+            return {
+                orgType:0,
+                step: 1,
+                stepText: '下一步',
+                bizLicenseTypeList: [{
+                    code: 1,
+                    name: "无",
+                },
+                    {
+                        code: 2,
+                        name: "有",
+                    }
+                ],
+                storeInfo: {
+                    bizLicenseType:'',
+                    storeName:'',
+                    licenseNo:'',
+                    orgName:'',
+                    storeDetailAddr:'',
+                    legalName:'',
+                    actualCtl:'',
+                    actualCtlPhone:'',
+                    actualCtlIdCardNo:'',
+                    addrText:'',
+                    storeProvinceCode:'',
+                    storeCityCode:'',
+                    storeDistrictCode:'',
+                },
+                mgrReqVo: {
+                    staffName:'',
+                    staffPhone:'',
+                    staffIdcardNo:'',
+                },
+                // 门店验证信息
+                storeCheckInfo: [
+                    {
+                        key: 'bizLicenseType',
+                        tipType: 2,
+                        message: '商户是否有独立营业执照'
+                    },
+                    {
+                        key: 'storeName',
+                        tipType: 1,
+                        message: '门店名称'
+                    },
+                    {
+                        key: 'actualCtl',
+                        tipType: 1,
+                        message: '门店管理员姓名'
+                    },
+                    {
+                        key: 'actualCtlPhone',
+                        tipType: 1,
+                        message: '门店管理员手机号'
+                    },
+                    {
+                        key: 'actualCtlIdCardNo',
+                        tipType: 1,
+                        message: '门店管理员身份证号'
+                    },
+                ],
+                // 门店验证信息
+                mgrCheckInfo: [
+                    {
+                        key: 'staffName',
+                        tipType: 1,
+                        message: '营业员姓名'
+                    },
+                    {
+                        key: 'staffPhone',
+                        tipType: 1,
+                        message: '营业员电话'
+                    },
+                    {
+                        key: 'staffIdcardNo',
+                        tipType: 1,
+                        message: '营业员身份证号'
+                    },
+                ],
+            };
+        },
+        computed:{
+            // 通过icon字段判断是智享云还是购机直降
+        },
+        created(){
+            this.init();
+            this.orgType = Number(this.$route.query.orgType);
+        },
+        methods: {
+            goBackPage() {
+                if (this.step === 3 || this.step === 2) {
+                    this.step -= 1;
+                } else {
+                    this.$router.replace({
+                        path: '/store/productManage'
+                    });
+                    this.$router.go(-1)
+                }
+            },
+            // 初始化页面
+            init() {
+                let fn = this.$api.gzzjInitStore;
+                fn().then(res => {
+                    let body = res.body;
+                    if(body.mgrReqVo && body.mgrReqVo.staffName){
+                        this.mgrReqVo = body.mgrReqVo;
+                    }
+                    for (let i in this.storeInfo) {
+                        if(Array.isArray(this.storeInfo[i])){
+                            this.storeInfo[i] = body[i] ? body[i] : [];
+                        }else{
+                            this.storeInfo[i] = body[i] ? body[i] : '';
+                        }
+                    }
+                    if(this.storeInfo.storeProvinceCode) {
+                        if(this.storeInfo.regProvinceName && this.storeInfo.regCityName && this.storeInfo.regDistrictName){
+                            this.storeInfo.addrText = this.storeInfo.regProvinceName + '-' + this.storeInfo.regCityName + '-' + this.storeInfo.regDistrictName;
+                        }
+                    }
+                });
+            },
+            // 处理点击下一步跳转处理
+            handleNextStep() {
+                // 判断表单字段必填性
+                if (this.step === 1) {
+                    let rules = [
+                    ]
+                    // 对公时验证开户行行号
+                    if(this.storeInfo.bizLicenseType ===2){
+                        rules.push({
+                            key: 'licenseNo',
+                            tipType: 1,
+                            message: '营业执照号'
+                        });
+                        rules.push({
+                            key: 'orgName',
+                            tipType: 1,
+                            message: '营业执照名称'
+                        });
+                        rules.push({
+                            key: 'storeProvinceCode',
+                            tipType: 1,
+                            message: '省份'
+                        });
+                        rules.push({
+                            key: 'storeCityCode',
+                            tipType: 1,
+                            message: '市区'
+                        });
+                        rules.push({
+                            key: 'storeDistrictCode',
+                            tipType: 1,
+                            message: '区域'
+                        });
+                        rules.push({
+                            key: 'storeDetailAddr',
+                            tipType: 1,
+                            message: '门店详细地址'
+                        });
+                        rules.push({
+                            key: 'legalName',
+                            tipType: 1,
+                            message: '法人姓名'
+                        });
+                        rules.push({
+                            key: 'addrText',
+                            tipType: 2,
+                            message: '省市区选择'
+                        });
+                    }
+                    this.storeCheckInfo.push(...rules)
+                    if(!formCheckAndComt.checkRequiredField(this.storeCheckInfo,this.storeInfo,this)){
+                        return false;
+                    }
+                    // 判断表单是否必填
+                    if (!formCheckAndComt.checkRequiredField(this.storeCheckInfo, this.storeInfo, this)) {
+                        return false;
+                    }
+
+                    this.step += 1;
+                } else if(this.step === 2){
+                    if (!formCheckAndComt.checkRequiredField(this.mgrCheckInfo, this.mgrReqVo, this)) {
+                        return false;
+                    }
+                    this.handleSubmitOpen();
+                }
+            },
+            // 处理提交
+            handleSubmitOpen() {
+                // 处理提交
+                let submitInfo = {
+                    ...this.merInfo,
+                    ...this.storeInfo,
+                    mgrReqVo:{...this.mgrReqVo}
+                };
+
+                let fn;
+                fn = this.$api.gzzjOpenStore; //海尔云贷接口
+                fn(submitInfo).then((res) => {
+                    this.$router.push({
+                        path: '/gzzj/open-result',
+                        // 提交后,默认跳转审核结果页面,状态为开通中
+                        query: {
+                            orgType: this.orgType,
+                            openStatus: 1,
+                            icon:this.$route.query.icon
+                        }
+                    })
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-index{
+        padding-top: 54px;
+        height:100%;
+        background-color: #f1f1f1;
+    }
+    .btn {
+        position: fixed;
+        bottom: 15px;
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+        }
+</style>
+
diff --git a/src/views/old/merchant/gzzj/storePictures.vue b/src/views/old/merchant/gzzj/storePictures.vue
new file mode 100644
index 0000000..2158f79
--- /dev/null
+++ b/src/views/old/merchant/gzzj/storePictures.vue
@@ -0,0 +1,114 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:14:44
+ * @Description:
+ -->
+<template>
+    <div class="heyd-picture-page">
+        <div class="pic-content">
+            <UploadFile
+                :fileType="1"
+                :bizLicenseType="storeInfo.bizLicenseType"
+                :title="'上传营业执照'"
+                :picList="storeInfo.licencePhotos"></UploadFile>
+            <div v-if="storeInfo.bizLicenseType == 2">
+                <span style="font-size: 15px">上传法人身份证正反面照</span><span style="font-size: 13px;color: #FF6666">(第一张正面,第二张反面)</span>
+            </div>
+            <UploadFile
+                :fileType="2"
+                :bizLicenseType="storeInfo.bizLicenseType"
+                :showNum="2"
+                :title="''"
+                :picList="storeInfo.legalCardPhotos"></UploadFile>
+            <div>
+                <p style="font-size: 15px">上传门头照片</p>
+                <p style="font-size: 13px;color: #999999;margin: 10px 0 0 0">(需要体现运营商logo、门店名称、门牌号)</p>
+            </div>
+            <UploadFile
+                :fileType="1"
+                :bizLicenseType= "2"
+                :showNum="1"
+                :title="''"
+                :picList="storeInfo.storeHeadPhotos"></UploadFile>
+            <div>
+                <p style="font-size: 15px">上传店内照片</p>
+                <p style="font-size: 13px;color: #999999;margin: 10px 0 0 0">(至少从4个角度拍摄全景体现店铺面积和主要业务区域,至少包括合约分期业务受理区(若有运营商logo背景,则包含在内)手机终端柜台))</p>
+            </div>
+            <UploadFile
+                :fileType="4"
+                :bizLicenseType= "2"
+                :title="''"
+                :showNum="4"
+                :picList="storeInfo.storeInPhotos"></UploadFile>
+            <div>
+                <p style="font-size: 15px">上传周边照片</p>
+                <p style="font-size: 13px;color: #999999;margin: 10px 0 0 0">(门店外部街景、左右各一张,展示左右至少各一间门店)</p>
+            </div>
+            <UploadFile
+                :fileType="3"
+                :bizLicenseType= "2"
+                :title="''"
+                :showNum="3"
+                :picList="storeInfo.storeAroundPhotos"></UploadFile>
+            <div>
+                <span style="font-size: 15px">授权牌</span><span style="font-size: 13px;color: #FF6666"></span>
+            </div>
+            <UploadFile
+                    :fileType="1"
+                    :bizLicenseType= "2"
+                    :title="''"
+                    :picList="storeInfo.authorizedBrand"></UploadFile>
+            <div>
+                <span style="font-size: 15px">联通系统截图</span>
+            </div>
+            <UploadFile
+                    :fileType="1"
+                    :bizLicenseType= "2"
+                    :title="''"
+                    :picList="storeInfo.sysScreenShot"></UploadFile>
+        </div>
+    </div>
+</template>
+
+<script>
+    import UploadFile from '@/components/old/upload/uploadImgStore.vue';
+
+    export default {
+        name: 'heydStorePicture',
+        components: {
+            UploadFile
+        },
+        data() {
+            return {
+            };
+        },
+        props: {
+            storeInfo: {
+                type: Object,
+                required: true,
+            },
+            // + 6的是海尔云贷的上传
+            filetype:{
+                type:Number,
+                default:0
+            }
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .legal-card-title {
+        padding: 10px 0;
+        font-size: 13px;
+        line-height: 1;
+        color: #333;
+        font-weight: normal;
+    }
+    .heyd-picture-page {
+        background: @color-white;
+        .pic-content {
+            padding: 10px 15px;
+        }
+    }
+</style>
diff --git a/src/views/old/merchant/hb-product.vue b/src/views/old/merchant/hb-product.vue
new file mode 100644
index 0000000..dacc2bc
--- /dev/null
+++ b/src/views/old/merchant/hb-product.vue
@@ -0,0 +1,154 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-04-07 09:40:03
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-06-28 11:21:56
+ * @Description: 产品管理花呗业务页面
+ -->
+<template>
+    <div class="hb-product-box">
+        <van-nav-bar title="产品管理" left-text="返回" left-arrow @click-left="onClickLeft" fixed style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar>
+        <div class="info-box">
+            <div class="info" v-for="(item,i) in productList" :key="i" @click="goNext(item)">
+                <img :src="item.icon" alt="">
+                <p>{{item.typeName}}</p>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+import Vue from 'vue';
+import { NavBar } from 'vant';
+
+Vue.use(NavBar);
+export default {
+    data() {
+        return {
+           productList:[], 
+           openStatus:'',
+        }
+    },
+    created(){
+        
+        if(this.$route.query.openStatus || this.$route.query.openStatus==0){
+            window.sessionStorage.openStatus = this.$route.query.openStatus
+        }
+        
+        this.$api.prodHbProd().then(res=>{
+            this.productList = res.body
+        })
+    },
+    methods:{
+        onClickLeft() {
+            this.$router.push('/main/productManagement');
+        },
+        goNext(item){
+            var path = '',
+                title = '';
+                
+            var {typeId,prodId} = item
+            var query = {
+                    typeId,
+                    prodId,
+                    zfbVersion:this.$route.query.zfbVersion,
+                };
+            
+                if(typeId==='200010'){
+                    switch(Number(window.sessionStorage.openStatus)){
+                        case 0:
+                            path = '/huabei/open';
+                            break;
+                        case 1:
+                        case 3:
+                            path = '/huabei/open-result';
+                            break;
+                        case 2:
+                            path = '/shtx/staging';
+                            break;
+                        default:
+                            path = '/huabei/open';
+                            break;
+                    }
+                    title = '商户贴息'
+                }
+                if(typeId==='200009'){
+                   switch (Number(window.sessionStorage.openStatus)) {
+                        case 0:
+                            path = '/huabei/open';
+                            break;
+                        case 1:
+                        case 3:
+                            path = '/huabei/open-result';
+                            break;
+                        case 2:
+                            path = '/huabei/staging';
+                            break;
+                        default:
+                            path = '/huabei/open';
+                            break;
+                    }
+                    title = '商品消费'
+                }
+                if (typeId === '200002' || typeId === '200008') {
+                    switch (Number(window.sessionStorage.openStatus)) {
+                        case 0:
+                            path = '/huabei/open';
+                            break;
+                        case 1:
+                        case 3:
+                            path = '/huabei/open-result';
+                            break;
+                        case 2:
+                            if(typeId=='200008'){
+                                path = '/huabei/staging_dmf';
+                            }else{
+                                path = '/huabei/staging';
+                            }
+                            break;
+                        default:
+                            path = '/huabei/open';
+                            break;
+                    }
+                    if(typeId==='200002'){
+                        title = '用户付息';
+                    }else{
+                        title = '商户收款';
+                    }
+                }
+            this.$router.push({
+                path:path,
+                query:{
+                    title:title,
+                    ...query
+                }
+            })
+        }
+    },
+}
+</script>
+<style lang="less" scoped>
+    .hb-product-box{
+        background: #F5F5F7;
+        min-height: 100vh;
+        padding-top: 56px;
+        .info-box{
+            background: #fff;
+            width: 96%;
+            margin-left: 2%;
+            padding-bottom: 23px;
+            border-radius:3px;
+            .info{
+                text-align: center;
+                width: 49%;
+                display: inline-block;
+                margin-top: 23px;
+                img{
+                    width: 36px;
+                    height: 36px;
+                }
+            }
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/old/merchant/heyd/merBaseInfo.vue b/src/views/old/merchant/heyd/merBaseInfo.vue
new file mode 100644
index 0000000..8ae33cf
--- /dev/null
+++ b/src/views/old/merchant/heyd/merBaseInfo.vue
@@ -0,0 +1,267 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-page">
+        <group>
+            <x-input title='营业执照号' v-model.trim="storeInfo.licenseNo" readonly text-align='right'></x-input>
+            <x-input title='营业执照名称' v-model.trim="storeInfo.orgName" placeholder='请输入' :max='50'  text-align='right'></x-input>
+            <datetime v-model="storeInfo.issueDate" format="YYYY-MM-DD" title="注册日期" placeholder="请选择"></datetime>
+        </group>
+        <group>
+            <van-field v-model.trim="storeInfo.addrText"  clearable :readonly="true" right-icon="arrow" label="注册省市区" placeholder="                                        请选择"
+                       @click="isShowArea = !isShowArea"  text-align='right'/>
+            <x-input title='注册详细地址' v-model.trim="storeInfo.regDetailAddr" placeholder='请输入' :max='100' text-align='right'></x-input>
+            <x-input title='渠道编码' v-model.trim="storeInfo.outMerchantNo" placeholder='请输入' :max='100'  text-align='right'></x-input>
+            <x-input title='渠道名称' v-model.trim="storeInfo.merchantName" placeholder='请输入' :max='100'  text-align='right'></x-input>
+        </group>
+
+        <f-space></f-space>
+        <group>
+            <x-input title='法人名称' v-model.trim="storeInfo.legalName" readonly text-align='right'></x-input>
+            <x-input title='法人身份证号' v-model.trim="storeInfo.legalIdCardNo" readonly text-align='right'></x-input>
+            <x-input title='法人身份证地址' v-model.trim="storeInfo.legalIdCardAddress" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='法人手机号' v-model.trim="storeInfo.legalPhone" placeholder='请输入' :max='11' text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <x-input title='联系人姓名' v-model.trim="storeInfo.contactName" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='联系人手机号' v-model.trim="storeInfo.contactPhone" placeholder='请输入' :max='11' text-align='right'></x-input>
+            <x-input title='联系人邮箱' v-model="storeInfo.contactEmail" text-align='right' max="50" placeholder="请输入"></x-input>
+            <selector title='与企业关系' placeholder='请选择' @on-change='handleCusRefChange' v-model="storeInfo.objContactReal"
+                      :options='merRefList' :value-map="['code','name']" direction='rtl'></selector>
+        </group>
+        <f-space></f-space>
+        <group>
+            <van-field v-model.trim="storeInfo.merAddrText" clearable :readonly="true" right-icon="arrow" label="经营省市区"
+                       @click="isShowMerArea = !isShowMerArea"  text-align='right'/>
+            <x-input title='经营详细地址' v-model.trim="storeInfo.bizDetailAddr" placeholder='请输入' text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <selector title='商户账号类型' placeholder='请选择' @on-change='handleCardTypeChange' v-model="storeInfo.acctType"
+                      :options='cardTypeList' :value-map="['code','name']" direction='rtl'></selector>
+            <x-input title='商户账户名称' v-model.trim="storeInfo.acctName" placeholder='请输入' text-align='right' />
+            <selector title='商户银行名称' placeholder='请选择' @on-change='handleBankChange' v-model="storeInfo.acctBankname"
+                :options='bankList' :value-map="['code','name']" direction='rtl'></selector>
+            <x-input title='商户银行账号' v-model.trim="storeInfo.acctNo" placeholder='请输入' :max='30' text-align='right'/>
+            <x-input v-if="storeInfo.acctType===1" title='商户开户支行名称' v-model.trim="storeInfo.acctOpenBankname" placeholder='请输入' :max='30' text-align='right'/>
+            <x-input v-if="storeInfo.acctType===1" title='开户行行号' v-model.trim="storeInfo.acctCnaps" :max='20' placeholder='请输入'
+                     text-align='right'></x-input>
+            <selector v-if="storeInfo.acctType===2" title='账户企业关系' placeholder='请选择' @on-change='handleMerRefChange' v-model="storeInfo.acctEnpRel"
+                      :options='merRefList' :value-map="['code','name']" direction='rtl'></selector>
+        </group>
+        <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+            <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+        </van-popup>
+        <van-popup v-model="isShowMerArea" position="bottom" :close-on-click-overlay="false">
+            <van-area ref='Area' :area-list='areaList' @cancel="closeMerAreaModal" @confirm="setMerAreaValue"></van-area>
+        </van-popup>
+    </div>
+
+</template>
+
+<script>
+    import {calcArea} from '@/utils/index';
+    import {
+        mapState,
+        mapActions
+    } from 'vuex';
+    import {
+        Datetime,
+        XAddress,
+    } from 'vux';
+    export default {
+        name: 'heydMerBase',
+        components: {
+            Datetime,
+            XAddress,
+            ...mapState(['areaList'])
+        },
+        data() {
+            return {
+                merValue:'',
+                areaList:{//地区列表
+                    province_list:{}, //省
+                    city_list:{}, //市
+                    county_list:{}, //地区、县
+                },
+                merAreaList:{//地区列表
+                    province_list:{}, //省
+                    city_list:{}, //市
+                    county_list:{}, //地区、县
+                }
+            };
+        },
+        props: {
+            addressList: {
+                type: Array,
+                default: []
+            },
+            address: {
+                type: Array,
+                default: []
+            },
+            isShowArea: {
+                type: Boolean,
+                default: false
+            },
+            isShowMerArea: {
+                type: Boolean,
+                default: false
+            },
+            storeInfo: {
+                type: Object,
+            },
+            // 银行列表
+            bankList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+            cardTypeList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+            merRefList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+        },
+        computed:{
+            calcAddress:{
+                get(){
+                    return this.address || [];
+                },
+                set(newV){
+                    this.$emit('addr-change', newV);
+                }
+            }
+
+        },
+        methods: {
+            ...mapActions(['getArea']),
+            // 获取地区列表
+            getArea() {
+                Vue.prototype.$api.getArea().then((res) => {
+                    let { provList } = res.body;
+                    let obj = calcArea(provList)
+                    this.areaList =  {
+                        province_list:obj.province_list,
+                        city_list:obj.city_list,
+                        county_list:obj.county_list
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            getMerArea() {
+                this.merAreaList = this.areaList;
+            },
+            //关闭地区弹窗
+            closeAreaModal() {
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            //关闭地区弹窗
+            closeMerAreaModal() {
+                this.isShowMerArea = false;
+                this.$refs.Area.reset()
+            },
+            //保存 地区选择
+            setAreaValue(arr) {
+                this.storeInfo.addrText = arr[0].name + '-' + arr[1].name + '-' + arr[2].name;
+                this.storeInfo.regProvinceCode = arr[0].code;
+                this.storeInfo.regCityCode = arr[1].code;
+                this.storeInfo.regDistrictCode = arr[2].code;
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            //经营地保存地区选择
+            setMerAreaValue(arr) {
+                this.storeInfo.merAddrText = arr[0].name + '-' + arr[1].name + '-' + arr[2].name;
+                this.storeInfo.bizProvinceCode = arr[0].code;
+                this.storeInfo.bizProvinceName = arr[0].name;
+                this.storeInfo.bizCityCode = arr[1].code;
+                this.storeInfo.bizCityName = arr[1].name;
+                this.storeInfo.bizDistrictCode = arr[2].code;
+                this.storeInfo.bizDistrictName = arr[2].name;
+                this.isShowMerArea = false;
+                this.$refs.Area.reset()
+            },
+            // 处理银行名称的改变
+            handleBankChange(val) {
+                let currentEle = this.bankList.find(item => {
+                    return item.code === val;
+                })
+            },
+            // 账号类型
+            handleCardTypeChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.cardTypeList)).find((item) => {
+                    return item.code = val;
+                });
+                this.storeInfo.acctTypeName = currentEle.name;
+            },
+            // 商户与账户关系
+            handleMerRefChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.merRefList)).find((item) => {
+                    return item.code = val;
+                });
+                this.storeInfo.acctEnpRelName = currentEle.name;
+            },
+            // 商户与账户关系
+            handleCusRefChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.merRefList)).find((item) => {
+                    return item.code = val;
+                });
+            }
+        },
+        created() {
+            this.getArea();
+            this.getMerArea();
+            this.merAddrValue = this.merAddrText;
+        },
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/heyd/merOpen.vue b/src/views/old/merchant/heyd/merOpen.vue
new file mode 100644
index 0000000..d66efff
--- /dev/null
+++ b/src/views/old/merchant/heyd/merOpen.vue
@@ -0,0 +1,413 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:20:18
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-index">
+        <x-header :title="'开通智享花'" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+        </x-header>
+        <!-- v-show="step === 1"  -->
+        <base-info
+            v-show="step === 1"
+            :cardTypeList="cardTypeList"
+            :merRefList="merRefList"
+            :bankList="bankList"
+            :address="address"
+            :addressList="addressList"
+            :storeInfo="storeInfo"
+            @addr-change="setCitycode"
+        >
+        </base-info>
+        <!-- 海尔云贷的文件上传type + 6 -->
+        <mer-pictures v-show="step === 2" :storeInfo="storeInfo" :filetype="9" ></mer-pictures>
+        <!-- <store-pictures  :storeInfo="storeInfo" :filetype="6" ></store-pictures> -->
+        <f-space type="large"></f-space>
+        <f-button @on-click="handleNextStep" fixed>{{ step === 1 ? '下一步' : '提交开通' }}</f-button>
+    </div>
+</template>
+
+<script>
+    import BaseInfo from './merBaseInfo.vue';
+    import MerPictures from './merPictures.vue';
+    import formCheckAndComt from '@/utils/formCheckAndComb';
+    import {calcArea} from '@/utils/index';
+    import {
+        dateFormat
+    } from 'vux'
+
+    export default {
+        name: 'heydMerOpen',
+        components: {
+            BaseInfo,
+            MerPictures
+        },
+        data() {
+            return {
+                orgType: 0,
+                step: 1,
+                stepText: '下一步',
+                bankList: [],
+                cardTypeList: [],
+                merRefList:[],
+                addressList:[],
+                address:[],
+                storeInfo: {
+                    merName: '',
+                    legalPhone:'',
+                    merAddrText:'',
+                    contactPhone:'',
+                    contactName:'',
+                    acctBankname:'',
+                    orgName:'',
+                    legalIdCardAddress:'',
+                    issueDate:'',
+                    regDetailAddr:'',
+                    addr:{},
+                    isShowArea:false,
+                    regCityCode:'',
+                    regCityName:'',
+                    regDistrictCode:'',
+                    regDistrictName:'',
+                    regProvinceCode:'',
+                    regProvinceName:'',
+                    contactEmail:'',
+                    addrText:'',
+                    bizProvinceCode:'',
+                    bizProvinceName:'',
+                    bizCityCode:'',
+                    bizCityName:'',
+                    bizDistrictCode:'',
+                    bizDistrictName:'',
+                    acctOpenBankname:'',
+                    provCode:'',//省code
+                    cityCode:'',//市code
+                    bankNo:'',//开户行行号
+                    legalIdCardNo:'',
+                    bizDetailAddr:'',
+                    licenseNo: '',
+                    acctCnaps: '',
+                    merAddr: '',
+                    merDtlAddr: '',
+                    merArea: '',
+                    foundDate: '',
+                    legalName: '',
+                    legalIdNo: '',
+                    legalMblNo: '',
+                    legalHomeAddr: '',
+                    outMerchantNo: '',
+                    merchantName: '',
+                    acctName: '', // 户名
+                    acctNo: '', // 银行卡号
+                    acctType: '', // 账号类型code
+                    acctEnpRel:'',//账户企业关系
+                    acctEnpRelName:'',//账户企业关系
+                    acctTypeName: '', // 账号类型name
+                    objContactReal: '',//联系人与企业关系
+                    licencePhotos: [], // 营业执照
+                    legalCardPhotos: [], // 法人身份证
+                    legalCardPhotosF: [], //法人身份证反面
+                    legalCardPhotosZ: [], //法人身份证正面
+                },
+                // 验证开户信息字段
+                storeCheckInfo: [
+                    {
+                        key: 'orgName',
+                        tipType: 1,
+                        message: '营业执照名称'
+                    },
+                    {
+                        key: 'legalPhone',
+                        tipType: 1,
+                        message: '法人手机号'
+                    },
+                    {
+                        key: 'acctBankname',
+                        tipType: 2,
+                        message: '银行名称'
+                    },
+                    {
+                        key: 'acctName',
+                        tipType: 1,
+                        message: '账户名称'
+                    },
+                    {
+                        key: 'acctType',
+                        tipType: 2,
+                        message: '账号类型'
+                    },
+                    {
+                        key: 'contactEmail',
+                        tipType: 1,
+                        type:"isEmail",
+                        message: '联系人邮箱'
+                    },
+                    {
+                        key: 'contactName',
+                        tipType: 1,
+                        message: '联系人手机号'
+                    },
+                    {
+                        key: 'contactPhone',
+                        tipType: 1,
+                        message: '联系人姓名'
+                    },
+                    {
+                        key: 'addrText',
+                        tipType: 2,
+                        message: '省市区'
+                    },
+                    {
+                        key: 'legalIdCardAddress',
+                        tipType: 1,
+                        message: '法人身份证地址'
+                    },
+                    {
+                        key: 'regDetailAddr',
+                        tipType: 1,
+                        message: '注册详细地址'
+                    },
+                    {
+                        key: 'issueDate',
+                        tipType: 2,
+                        message: '注册日期'
+                    },
+                    {
+                        key: 'merchantName',
+                        tipType: 1,
+                        message: '渠道名称'
+                    },
+                    {
+                        key: 'outMerchantNo',
+                        tipType: 1,
+                        message: '渠道编码'
+                    },
+                ],
+                bankNo:''
+            };
+        },
+        computed:{
+            // 通过icon字段判断是智享云还是购机直降
+        },
+        created(){
+            this.$api.getArea().then(res => {
+                this.addressList = res.body.provList;
+            });
+            this.init();
+            this.orgType = Number(this.$route.query.orgType);
+        },
+        methods: {
+            // 获取地区列表
+            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) => {
+
+                });
+            },
+            // 设置地区code
+            setCitycode(val){
+                this.storeInfo.provCode = val[0];
+                this.storeInfo.cityCode = val[1];
+                this.address = val;
+            },
+            goBackPage() {
+                if (this.step === 2) {
+                    this.step -= 1;
+                } else {
+                    this.$router.push({
+                        path: '/main/productManagement'
+                    });
+                }
+            },
+            // 初始化页面
+            init() {
+                let fn = this.$api.heydInitOpen;
+                fn().then(res => {
+                    let body = res.body;
+                    this.bankList = body.bankList;
+                    this.cardTypeList = body.acctTypeList;
+                    this.merRefList = body.acctEnpRelList;
+                    for (let i in this.storeInfo) {
+                        if(Array.isArray(this.storeInfo[i])){
+                            this.storeInfo[i] = body[i] ? body[i] : [];
+                            console.log(i+":"+this.storeInfo[i]);
+                        }else{
+                            this.storeInfo[i] = body[i] ? body[i] : '';
+                        }
+                    }
+                    if(body.cityCode){
+                        this.address.push(body.provCode+'')
+                        this.address.push(body.cityCode+'')
+                    }
+                    this.storeInfo.merAddrText = this.storeInfo.bizProvinceName +'-'+ this.storeInfo.bizCityName +'-'+ this.storeInfo.bizDistrictName;
+                    if(this.storeInfo.regProvinceName) {
+                        this.storeInfo.addrText = this.storeInfo.regProvinceName + '-' + this.storeInfo.regCityName + '-' + this.storeInfo.regDistrictName;
+                    }
+                    if (this.storeInfo.licencePhotos && this.storeInfo.licencePhotos.length) {
+                        let fileId = this.storeInfo.licencePhotos[0];
+                        this.storeInfo.licencePhotos = [];
+                        this.storeInfo.licencePhotos.push({
+                            fileId: fileId,
+                            fileUrl: '/'+fileId
+                        });
+                    }
+                    if (this.storeInfo.legalCardPhotosZ && this.storeInfo.legalCardPhotosZ.length) {
+                        let fileIdZ = this.storeInfo.legalCardPhotosZ[0];
+                        let fileIdF = this.storeInfo.legalCardPhotosF[0];
+                        this.storeInfo.legalCardPhotos = [];
+                        this.storeInfo.legalCardPhotos.push({
+                            fileId: fileIdZ,
+                            fileUrl: '/'+fileIdZ
+                        });
+                        this.storeInfo.legalCardPhotos.push({
+                            fileId: fileIdF,
+                            fileUrl: '/'+fileIdF
+                        });
+                    }
+                });
+            },
+            // 处理点击下一步跳转处理
+            handleNextStep() {
+                // 判断表单字段必填性
+                if (this.step === 1) {
+                    // 智享花增加这两个字段验证
+                    let rules = [
+                    ]
+                    // 对公时验证开户行行号
+                    if(this.storeInfo.acctType ===1){
+                        rules.push({
+                            key: 'acctOpenBankname',
+                            tipType: 1,
+                            message: '开户支行名称'
+                        });
+                        rules.push({
+                            key: 'acctCnaps',
+                            tipType: 1,
+                            message: '开户行行号'
+                        });
+                        rules.push({
+                            key: 'acctNo',
+                            tipType: 1,
+                            message: '银行账号'
+                        });
+                    }
+                    // 对私时验证账户企业关系
+                    if(this.storeInfo.acctType ===2){
+                        rules.push({
+                            key: 'acctEnpRel',
+                            tipType: 2,
+                            message: '账户企业关系'
+                        });
+                        rules.push({
+                            key: 'acctNo',
+                            tipType: 1,
+                            type:"bankCardNo",
+                            message: '银行账号'
+                        });
+                    }
+                    this.storeCheckInfo.push(...rules)
+                    // 判断表单是否必填
+                    if (!formCheckAndComt.checkRequiredField(this.storeCheckInfo,this.storeInfo,this)) {
+                        return false;
+                    }
+                    this.step += 1;
+                } else {
+                    this.handleSubmitOpen();
+                }
+            },
+            // 处理提交
+            handleSubmitOpen() {
+
+                // 需要判断图片的字段
+                let checkPicList = [{
+                        checkField: 'licencePhotos',
+                        msg: '营业执照照片'
+                    },
+                    {
+                        checkField: 'legalCardPhotos',
+                        msg: '法人身份证正反面照片'
+                    },
+                ];
+                // 判断图片是否上传
+                for (let item of checkPicList) {
+                    if (!(this.storeInfo[item.checkField] instanceof Array &&
+                            this.storeInfo[item.checkField].length)) {
+                        this.$notify('请上传' + item.msg);
+                        return false;
+                    }
+                    if (item.checkField == 'legalCardPhotos' && this.storeInfo[item.checkField].length < 2){
+                        this.$notify('请上传' + item.msg);
+                        return false;
+                    }
+                }
+
+                // 由于后端初始化返回的图片字段{url: xx, id: 121}, 而此时在提交的时候,我们
+                // 提交图片字段为[id1, id2], 为id的列表
+                this.storeInfo.legalCardPhotosF = [];
+                this.storeInfo.legalCardPhotosZ = [];
+                let picIdList = {
+                    licencePhotos: [],
+                    legalCardPhotosF: [],
+                    legalCardPhotosZ: [],
+                };
+                picIdList.legalCardPhotosF.push(this.storeInfo.legalCardPhotos[0].fileId);
+                picIdList.legalCardPhotosZ.push(this.storeInfo.legalCardPhotos[1].fileId);
+                for (let i in picIdList) {
+                    if (this.storeInfo[i] instanceof Array &&
+                        this.storeInfo[i].length) {
+                        // 后端图片初始文件id为id.而控件上传id为fieldId,这里需要兼容处理一下
+                        this.storeInfo[i].forEach((item) => {
+                            item.fileId ? picIdList[i].push(item.fileId) :
+                                picIdList[i].push(item.id)
+                        });
+                    }
+                }
+
+                let submitInfo = {
+                    ...this.storeInfo,
+                    ...picIdList
+                };
+
+                let fn;
+                // 对私时开户行行号不传值
+                if(this.storeInfo.acctType === 2){
+                    submitInfo.acctOpenBankname = '';
+                    submitInfo.acctCnaps = '';
+                }
+                if(this.storeInfo.acctType === 1){
+                    submitInfo.acctEnpRel = '';
+                }
+                fn = this.$api.heydOpen; //海尔云贷接口
+                fn(submitInfo).then((res) => {
+                    this.$router.push({
+                        path: '/heyd/open-result',
+                        // 提交后,默认跳转审核结果页面,状态为开通中
+                        query: {
+                            orgType: this.orgType,
+                            openStatus: 1,
+                            icon:this.$route.query.icon
+                        }
+                    })
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+.open-heyd-index{
+        padding-top: 54px;
+        height:100%;
+        background-color: #f1f1f1;
+}
+</style>
+
diff --git a/src/views/old/merchant/heyd/merPictures.vue b/src/views/old/merchant/heyd/merPictures.vue
new file mode 100644
index 0000000..cd14bde
--- /dev/null
+++ b/src/views/old/merchant/heyd/merPictures.vue
@@ -0,0 +1,55 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:14:44
+ * @Description:
+ -->
+<template>
+    <div class="heyd-picture-page">
+        <div class="pic-content">
+            <UploadFile
+                :fileType="1"
+                :bizLicenseType= "2"
+                :title="'上传营业执照'"
+                :picList="storeInfo.licencePhotos"></UploadFile>
+            <div>
+                <span style="font-size: 15px">上传法人身份证正反面照</span><span style="font-size: 13px;color: #FF6666">(第一张正面,第二张反面)</span>
+            </div>
+            <UploadFile
+                :fileType="2"
+                :bizLicenseType= "2"
+                :title="''"
+                :picList="storeInfo.legalCardPhotos"></UploadFile>
+        </div>
+    </div>
+</template>
+
+<script>
+    import UploadFile from '@/components/old/upload/uploadImgStore.vue';
+
+    export default {
+        name: 'heydMerPicture',
+        components: {
+            UploadFile
+        },
+        data() {
+            return {
+            };
+        },
+        props: {
+            storeInfo: {
+                type: Object,
+                required: true,
+            },
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .heyd-picture-page {
+        background: @color-white;
+        .pic-content {
+            padding: 0 15px;
+        }
+    }
+</style>
diff --git a/src/views/old/merchant/heyd/mgrBaseInfo.vue b/src/views/old/merchant/heyd/mgrBaseInfo.vue
new file mode 100644
index 0000000..73b8332
--- /dev/null
+++ b/src/views/old/merchant/heyd/mgrBaseInfo.vue
@@ -0,0 +1,79 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-page">
+        <group>
+            <x-input title='营业员姓名' v-model.trim="storeInfo.staffName" placeholder='请输入营业员姓名'  text-align='right'></x-input>
+            <x-input title='营业员电话' v-model.trim="storeInfo.staffPhone" placeholder='请输入营业员电话' :max='11'  text-align='right'></x-input>
+            <x-input title='营业员职务' v-model.trim="storeInfo.post" placeholder='请输入营业员职务'  text-align='right'></x-input>
+        </group>
+    </div>
+</template>
+
+<script>
+    import {
+        Datetime,
+        XAddress
+    } from 'vux';
+    export default {
+        name: 'heydMgrBase',
+        components: {
+            Datetime,
+            XAddress
+        },
+        data() {
+            return {
+
+            };
+        },
+        props: {
+            storeInfo: {
+                type: Object
+            },
+        },
+        computed:{
+
+        },
+        methods: {
+
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/heyd/mgrOpen.vue b/src/views/old/merchant/heyd/mgrOpen.vue
new file mode 100644
index 0000000..bbfd1fd
--- /dev/null
+++ b/src/views/old/merchant/heyd/mgrOpen.vue
@@ -0,0 +1,154 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:20:18
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-index">
+        <x-header :title="'开通智享花'" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+        </x-header>
+        <!-- v-show="step === 1"  -->
+        <base-info
+                v-show="step === 1"
+                :storeInfo="storeInfo"
+        >
+        </base-info>
+        <f-space type="large"></f-space>
+        <!-- <f-button @on-click="handleNextStep" fixed>{{'提交开通'}}</f-button> -->
+        <van-button class="btn" round @click="handleNextStep" >{{'提交开通'}}</van-button>
+    </div>
+</template>
+
+<script>
+    import BaseInfo from './mgrBaseInfo.vue';
+    import formCheckAndComt from '@/utils/formCheckAndComb';
+
+    import {
+        dateFormat
+    } from 'vux'
+
+    export default {
+        name: 'heydMgrOpen',
+        components: {
+            BaseInfo,
+        },
+        data() {
+            return {
+                orgType:0,
+                step: 1,
+                stepText: '下一步',
+                storeInfo: {
+                    staffName: '',
+                    staffPhone: '',
+                    post:'',
+                },
+                // 验证开户信息字段
+                storeCheckInfo: [
+                    {
+                        key: 'staffName',
+                        tipType: 1,
+                        message: '营业员姓名'
+                    },
+                    {
+                        key: 'staffPhone',
+                        tipType: 1,
+                        message: '营业员电话'
+                    },
+                    {
+                        key: 'post',
+                        tipType: 1,
+                        message: '营业员岗位'
+                    },
+                ],
+                bankNo:''
+            };
+        },
+        computed:{
+            // 通过icon字段判断是智享云还是购机直降
+        },
+        created(){
+            this.init();
+            this.orgType = Number(this.$route.query.orgType);
+        },
+        methods: {
+            // 设置地区code
+
+            goBackPage() {
+                if (this.step === 2) {
+                    this.step -= 1;
+                } else {
+                    this.$router.push({
+                        path: '/store/productManage'
+                    });
+                }
+            },
+            // 初始化页面
+            init() {
+                let fn = this.$api.heydInitMgr;
+                fn().then(res => {
+                    let body = res.body;
+                    for (let i in this.storeInfo) {
+                        this.storeInfo[i] = body[i] ? body[i] : '';
+                    }
+                });
+            },
+            // 处理点击下一步跳转处理
+            handleNextStep() {
+                // 判断表单字段必填性
+                if (this.step === 1) {
+                    // 智享花增加这两个字段验证
+
+                    // 判断表单是否必填
+                    if (!formCheckAndComt.checkRequiredField(this.storeCheckInfo,this.storeInfo,this)) {
+                        return false;
+                    }
+                } else {
+                    this.handleSubmitOpen();
+                }
+                this.handleSubmitOpen();
+            },
+            // 处理提交
+            handleSubmitOpen() {
+                let submitInfo = {
+                    ...this.storeInfo
+                };
+
+
+                let fn;
+                fn = this.$api.heydOpenMgr; //营业员开通接口
+                fn(submitInfo).then((res) => {
+                    this.$router.push({
+                        path: '/heyd/open-result',
+                        // 提交后,默认跳转审核结果页面,状态为开通中
+                        query: {
+                            orgType: this.orgType,
+                            openStatus: 1,
+                            icon:this.$route.query.icon
+                        }
+                    })
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-index{
+        padding-top: 54px;
+        height:100%;
+        background-color: #f1f1f1;
+    }
+    .btn {
+        position: fixed;
+        bottom: 15px;
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+        }
+</style>
+
diff --git a/src/views/old/merchant/heyd/openResult.vue b/src/views/old/merchant/heyd/openResult.vue
new file mode 100644
index 0000000..4adfc0b
--- /dev/null
+++ b/src/views/old/merchant/heyd/openResult.vue
@@ -0,0 +1,168 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 10:50:04
+ * @Description:
+ -->
+
+<template>
+    <div class="gjzj-result-page">
+        <x-header :title="'开通智享花'" :left-options="{backText:'',preventGoBack:true}"
+                  @on-click-back="pageGoBack"></x-header>
+        <div class="status-icon">
+            <i v-if="openStatus === 1"
+               class="iconfont scene_Staging-shenhezhong1"
+               style="color: #896EDB;"
+                ></i>
+            <i v-if="openStatus === 2"
+                class="iconfont scene_Staging-tijiaochenggong"
+                style="color: #19BE6B;"
+                ></i>
+            <i v-if="openStatus === 3"
+                class="iconfont scene_Staging-tijiaoshibai"
+                style="color: #F76260;"
+               ></i>
+            <i v-if="openStatus === 4"
+                 class="iconfont scene_Staging-tijiaoshibai"
+                 style="color: #F76260;"
+                 ></i>
+    </div>
+        <div class="tips">
+            <p v-if="openStatus === 1">{{ statusType }}审批中</p>
+            <p v-if="openStatus === 2"> {{ statusType }}审批通过</p>
+            <p v-if="openStatus === 3"> {{ statusType}}审批失败</p>
+            <p v-if="openStatus === 4">冻结</p>
+        </div>
+        <van-button round @click="handleBack">{{ buttonText }}</van-button>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'add-account',
+        data() {
+            return {
+                // 0-待开通,1-审批中,2-审批通过,3-审批失败,4-冻结
+                openStatus: 0, // 开通状态
+                orgType:0,
+                buttonText: '返回', // 底部按钮文字
+                statusType: this.$route.query.statusType,
+            };
+        },
+        computed:{
+        },
+        methods: {
+            pageGoBack(){
+                if(this.orgType==3) {
+                    this.$router.push({
+                        path: '/main/productManagement'
+                    });
+                }else if(this.orgType==4){
+                    this.$router.push({
+                        path: '/store/productManage'
+                    });
+                }else if(this.orgType==5){
+                    this.$router.push({
+                        path: '/store/productManage'
+                    });
+                }
+            },
+            handleBack () {
+                // 如果是在开通中的话,那么底部有重新提交按钮
+                // 点击重新提交,那么用户可以重新填写资料
+                if(this.openStatus == 1 || this.openStatus == 2) {
+                    if (this.orgType == 3) {
+                        this.$router.replace({
+                            path: '/main/productManagement'
+                        });
+                        this.$router.go(-1)
+                    } else if (this.orgType == 4) {
+                        this.$router.replace({
+                            path: '/store/productManage'
+                        });
+                        this.$router.go(-1)
+                    } else if (this.orgType == 5) {
+                        this.$router.replace({
+                            path: '/store/productManage'
+                        });
+                        this.$router.go(-1)
+                    }
+                } else if(this.openStatus == 3 || this.openStatus == 4){
+                    if (this.orgType == 3) {
+                        let query = {
+                            typeId:'200005',
+                            openStatus: this.openStatus,
+                            orgType: this.orgType
+                        }
+                        this.$router.push({
+                            path:'/heyd/merOpen',
+                            query
+                        });
+                    } else if (this.orgType == 4) {
+                        let query = {
+                            typeId:'200005',
+                            openStatus: this.openStatus,
+                            orgType: this.orgType
+                        }
+                        this.$router.push({
+                            path:'/heyd/storeOpen',
+                            query
+                        });
+                    } else if (this.orgType == 5) {
+                        let query = {
+                            typeId:'200005',
+                            openStatus: this.openStatus,
+                            orgType: this.orgType
+                        }
+                        this.$router.push({
+                            path:'/heyd/mgrOpen',
+                            query
+                        });
+                    }
+                }
+            },
+        },
+        created() {
+            console.log(this.statusType)
+            this.openStatus = Number(this.$route.query.openStatus);
+            this.orgType = Number(this.$route.query.orgType);
+            if(this.openStatus == 1 || this.openStatus == 2) {
+                this.buttonText = '返回';
+            }else if(this.openStatus == 3 || this.openStatus == 4){
+                this.buttonText = '再次提交';
+            }
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .gjzj-result-page {
+        height: 100%;
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        .status-icon {
+            padding-top: 20px;
+            text-align: center;
+        }
+        .iconfont {
+            font-size: 64px;
+            color: #BFA073;
+        }
+        .scene_Staging-shibai1 {
+            color: #F76260;
+        }
+        .tips {
+            color: #999;
+            font-size: 14px;
+            line-height: 1.6;
+            text-align: center;
+        }
+    }
+    .van-button {
+        width: 90%;
+        margin: 0 5%;
+        margin-top: 60px;
+        color: white !important;
+        background: #896edb;
+        }
+</style>
diff --git a/src/views/old/merchant/heyd/storeBaseInfo.vue b/src/views/old/merchant/heyd/storeBaseInfo.vue
new file mode 100644
index 0000000..b9f44a9
--- /dev/null
+++ b/src/views/old/merchant/heyd/storeBaseInfo.vue
@@ -0,0 +1,179 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-page">
+        <group>
+            <x-input title='门店名称' v-model.trim="storeInfo.storeName" readonly text-align='right'></x-input>
+            <x-input title='经营地所在省' v-model.trim="storeInfo.storeProvinceName" readonly text-align='right'></x-input>
+            <x-input title='经营地所在市' v-model.trim="storeInfo.storeCityName" readonly text-align='right'></x-input>
+            <x-input title='经营地所在区' v-model.trim="storeInfo.storeDistrictName" readonly text-align='right'></x-input>
+            <x-input title='经营详细地址' v-model.trim="storeInfo.storeDetailAddr" readonly placeholder='请输入' text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <selector title='营业执照类型' placeholder='请选择' @on-change='handleLicenseTypeChange' v-model="storeInfo.bizLicenseType"
+                      :options='bizLicenseTypeList' :value-map="['code','name']" direction='rtl'></selector>
+            <x-input title='营业执照号' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.licenseNo" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='营业执照名称' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.orgName" placeholder='请输入' :max='50'  text-align='right'></x-input>
+            <datetime v-if="storeInfo.bizLicenseType ===2" v-model="storeInfo.issueDate" format="YYYY-MM-DD" title="注册日期" placeholder="请选择"></datetime>
+        </group>
+        <group>
+            <van-field v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.addrText" clearable :readonly="true" right-icon="arrow" label="注册省市区"
+                       @click="isShowArea = !isShowArea" placeholder="                                        请选择" text-align='right'/>
+            <x-input title='注册详细地址' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.regDetailAddr" placeholder='请输入' :max='100' text-align='right'></x-input>
+            <x-input title='营业厅编码' v-model.trim="storeInfo.outStoreNo" placeholder='请输入' :max='100' text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <x-input title='法人名称' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.legalName"  placeholder='请输入' text-align='right'></x-input>
+            <x-input title='法人身份证号' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.legalIdCardNo" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='法人身份证地址' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.legalIdCardAddress" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='法人手机号' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.legalPhone" placeholder='请输入' :max='11' text-align='right'></x-input>
+        </group>
+        <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+            <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {calcArea} from '@/utils/index';
+    import {
+        mapState,
+        mapActions
+    } from 'vuex';
+    import {
+        Datetime,
+        XAddress
+    } from 'vux';
+    export default {
+        name: 'heydStoreBase',
+        components: {
+            Datetime,
+            XAddress,
+            ...mapState(['areaList'])
+        },
+        data() {
+            return {
+                areaList:{//地区列表
+                    province_list:{}, //省
+                    city_list:{}, //市
+                    county_list:{}, //地区、县
+                }
+            };
+        },
+        props: {
+            addressList: {
+                type: Array,
+                default: []
+            },
+            address: {
+                type: Array,
+                default: []
+            },
+            isShowArea: {
+                type: Boolean,
+                default: false
+            },
+            storeInfo: {
+                type: Object
+            },
+            bizLicenseTypeList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+        },
+        computed:{
+            calcAddress:{
+                get(){
+                    return this.address || [];
+                },
+                set(newV){
+                    this.$emit('addr-change', newV);
+                }
+            }
+
+        },
+        created() {
+            this.getArea();
+        },
+        methods: {
+            ...mapActions(['getArea']),
+            // 获取地区列表
+            getArea() {
+                Vue.prototype.$api.getArea().then((res) => {
+                    let { provList } = res.body;
+                    let obj = calcArea(provList);
+                    this.areaList =  {
+                        province_list:obj.province_list,
+                        city_list:obj.city_list,
+                        county_list:obj.county_list
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            //关闭地区弹窗
+            closeAreaModal() {
+                console.log(this.areaList);
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            //保存 地区选择
+            setAreaValue(arr) {
+                this.storeInfo.addrText = arr[0].name + '-' + arr[1].name + '-' + arr[2].name;
+                this.storeInfo.regProvinceCode = arr[0].code;
+                this.storeInfo.regCityCode = arr[1].code;
+                this.storeInfo.regDistrictCode = arr[2].code;
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            // 账号类型
+            handleLicenseTypeChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.bizLicenseTypeList)).find((item) => {
+                    return item.code = val;
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/heyd/storeBaseMgrInfo.vue b/src/views/old/merchant/heyd/storeBaseMgrInfo.vue
new file mode 100644
index 0000000..d661e5e
--- /dev/null
+++ b/src/views/old/merchant/heyd/storeBaseMgrInfo.vue
@@ -0,0 +1,87 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-page">
+        <group>
+            <x-input title='营业员姓名' v-model.trim="mgrReqVo.staffName" placeholder='请输入'  text-align='right'></x-input>
+            <x-input title='营业员电话' v-model.trim="mgrReqVo.staffPhone" placeholder='请输入' :max='11'  text-align='right'></x-input>
+            <x-input title='营业员职务' v-model.trim="mgrReqVo.post" placeholder='请输入'  text-align='right'></x-input>
+        </group>
+    </div>
+</template>
+
+<script>
+    import {
+        Datetime,
+        XAddress
+    } from 'vux';
+    export default {
+        name: 'heydStoreMgrBase',
+        components: {
+            Datetime,
+            XAddress
+        },
+        data() {
+            return {
+
+            };
+        },
+        props: {
+            mgrReqVo: {
+                type: Object
+            },
+        },
+        computed:{
+            calcAddress:{
+                get(){
+                    return this.address || [];
+                },
+                set(newV){
+                    this.$emit('addr-change', newV);
+                }
+            }
+
+        },
+        methods: {
+
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/heyd/storeOpen.vue b/src/views/old/merchant/heyd/storeOpen.vue
new file mode 100644
index 0000000..a766639
--- /dev/null
+++ b/src/views/old/merchant/heyd/storeOpen.vue
@@ -0,0 +1,459 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:20:18
+ * @Description:
+ -->
+<template>
+    <div class="open-heyd-index">
+        <x-header :title="'开通智享花'" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+    </x-header>
+        <!-- v-show="step === 1"  -->
+        <base-info
+                v-show="step === 1"
+                :bizLicenseTypeList="bizLicenseTypeList"
+                :storeInfo="storeInfo"
+        >
+        </base-info>
+        <mgr-info
+                v-show="step === 2"
+                :mgrReqVo="mgrReqVo"
+        >
+        </mgr-info>
+        <!-- 海尔云贷的文件上传type + 6 -->
+        <store-pictures v-show="step === 3" :storeInfo="storeInfo" :filetype="9" ></store-pictures>
+        <!-- <store-pictures  :storeInfo="storeInfo" :filetype="6" ></store-pictures> -->
+        <f-space type="large"></f-space>
+        <!-- <f-button @on-click="handleNextStep" fixed>{{ step !== 3 ? '下一步' : '提交开通' }}</f-button> -->
+        <van-button class="btn" round @click="handleNextStep" fixed>{{ step !== 3 ? '下一步' : '提交开通' }}</van-button>
+    </div>
+</template>
+
+<script>
+    import BaseInfo from './storeBaseInfo.vue';
+    import MgrInfo from './storeBaseMgrInfo.vue';
+    import StorePictures from './storePictures.vue';
+    import formCheckAndComt from '@/utils/formCheckAndComb';
+
+    import {
+        dateFormat
+    } from 'vux'
+
+    export default {
+        name: 'heydStoreOpen',
+        components: {
+            BaseInfo,
+            StorePictures,
+            MgrInfo
+        },
+        data() {
+            return {
+                orgType:0,
+                step: 1,
+                stepText: '下一步',
+                bizLicenseTypeList: [],
+                mgrReqVo: {
+                    staffName:'',
+                    staffPhone:'',
+                    post:'',
+                },
+                storeInfo: {
+                    legalIdCardAddress:'',
+                    issueDate:'',
+                    regDetailAddr:'',
+                    addr:{},
+                    isShowArea:false,
+                    regCityCode:'',
+                    regDistrictCode:'',
+                    regProvinceCode:'',
+                    storeName: '',
+                    outStoreNo:'',
+                    storeProvinceCode:'',
+                    storeProvinceName:'',
+                    storeCityCode:'',
+                    storeCityName:'',
+                    storeDistrictCode:'',
+                    storeDistrictName:'',
+                    storeDetailAddr:'',
+                    bizLicenseType:'',
+                    licenseNo:'',
+                    orgName:'',
+                    addrText:'',
+                    legalCardPhotosF: [], //法人身份证反面
+                    legalCardPhotosZ: [], //法人身份证正面
+                    legalIdCardNo:'',//省code
+                    legalPhone:'',//市code
+                    legalName:'',
+                    licencePhotos:[], // 营业执照照片
+                    legalCardPhotos: [], // 法人身份证
+                    storeHeadPhotos: [], // 门店图片
+                    storeInPhotos: [], // 店内图片
+                    storeAroundPhotos: [], // 门店周边图片
+                    authorizedBrand: [], // 授权牌
+                    sysScreenShot: [], //联通系统截图
+                },
+                // 验证开户信息字段
+                storeCheckInfo: [
+                    {
+                        key: 'legalPhone',
+                        tipType: 1,
+                        message: '法人手机号'
+                    },
+                    {
+                        key: 'legalIdCardNo',
+                        tipType: 1,
+                        message: '法人身份证'
+                    },
+                    {
+                        key: 'legalName',
+                        tipType: 2,
+                        message: '法人名称'
+                    },
+                    {
+                        key: 'orgName',
+                        tipType: 1,
+                        message: '营业执照名称'
+                    },
+                    {
+                        key: 'bizLicenseType',
+                        tipType: 2,
+                        message: '营业执照类型'
+                    },
+                    {
+                        key: 'addrText',
+                        tipType: 2,
+                        message: '省市区'
+                    },
+                    {
+                        key: 'legalIdCardAddress',
+                        tipType: 1,
+                        message: '法人身份证地址'
+                    },
+                    {
+                        key: 'regDetailAddr',
+                        tipType: 1,
+                        message: '注册详细地址'
+                    },
+                    {
+                        key: 'issueDate',
+                        tipType: 2,
+                        message: '注册日期'
+                    },
+                    {
+                        key: 'outStoreNo',
+                        tipType: 1,
+                        message: '营业厅编码'
+                    },
+                ],// 验证开户信息字段
+                storeCheckInfoForBizType: [
+                    {
+                        key: 'bizLicenseType',
+                        tipType: 2,
+                        message: '营业执照类型'
+                    },
+                ],
+                storeCheckInfoForStaff: [
+                    {
+                        key: 'staffName',
+                        tipType: 1,
+                        message: '营业员姓名'
+                    },
+                    {
+                        key: 'staffPhone',
+                        tipType: 1,
+                        message: '营业员电话'
+                    },
+                    {
+                        key: 'post',
+                        tipType: 1,
+                        message: '营业员职务'
+                    },
+                ],
+                bankNo:''
+            };
+        },
+        computed:{
+            // 通过icon字段判断是智享云还是购机直降
+        },
+        created(){
+            this.init();
+            this.orgType = Number(this.$route.query.orgType);
+        },
+        methods: {
+            goBackPage() {
+                if (this.step === 3 || this.step === 2) {
+                    this.step -= 1;
+                } else {
+                    this.$router.replace({
+                        path: '/store/productManage'
+                    });
+                    this.$router.go(-1)
+                }
+            },
+            // 初始化页面
+            init() {
+                let fn = this.$api.heydInitStore;
+                fn().then(res => {
+                    let body = res.body;
+                    this.bizLicenseTypeList = body.bizLicenseTypeList;
+                    if(body.mgrReqVo && body.mgrReqVo.staffName){
+                        this.mgrReqVo = body.mgrReqVo;
+                    }
+                    for (let i in this.storeInfo) {
+                        if(Array.isArray(this.storeInfo[i])){
+                            this.storeInfo[i] = body[i] ? body[i] : [];
+                        }else{
+                            this.storeInfo[i] = body[i] ? body[i] : '';
+                        }
+                    }
+                    if(this.storeInfo.storeProvinceCode) {
+                        if(this.storeInfo.regProvinceName && this.storeInfo.regCityName && this.storeInfo.regDistrictName){
+                            this.storeInfo.addrText = this.storeInfo.regProvinceName + '-' + this.storeInfo.regCityName + '-' + this.storeInfo.regDistrictName;
+                        }
+                        if (this.storeInfo.licencePhotos && this.storeInfo.licencePhotos !== []) {
+                            this.storeInfo.bizLicenseType = 2;
+                        } else {
+                            this.storeInfo.bizLicenseType = 3;
+                        }
+                    }
+                    if (this.storeInfo.licencePhotos && this.storeInfo.licencePhotos.length) {
+                        let fileId = this.storeInfo.licencePhotos[0];
+                        this.storeInfo.licencePhotos = [];
+                        this.storeInfo.licencePhotos.push({
+                            fileId: fileId,
+                            fileUrl: '/'+fileId
+                        });
+                    }
+                    if (this.storeInfo.legalCardPhotosZ && this.storeInfo.legalCardPhotosZ.length) {
+                        let fileIdZ = this.storeInfo.legalCardPhotosZ[0];
+                        let fileIdF = this.storeInfo.legalCardPhotosF[0];
+                        this.storeInfo.legalCardPhotos = [];
+                        this.storeInfo.legalCardPhotos.push({
+                            fileId: fileIdZ,
+                            fileUrl: '/'+fileIdZ
+                        });
+                        this.storeInfo.legalCardPhotos.push({
+                            fileId: fileIdF,
+                            fileUrl: '/'+fileIdF
+                        });
+                    }
+                    if (this.storeInfo.storeAroundPhotos && this.storeInfo.storeAroundPhotos.length) {
+                        let storeAroundPhotosNew = [];
+                        for (let i in this.storeInfo.storeAroundPhotos) {
+                            let fileId = this.storeInfo.storeAroundPhotos[i];
+                            storeAroundPhotosNew.push({
+                                fileId: fileId,
+                                fileUrl: '/'+fileId
+                            });
+                        }
+                        this.storeInfo.storeAroundPhotos = storeAroundPhotosNew;
+                    }
+                    if (this.storeInfo.storeHeadPhotos && this.storeInfo.storeHeadPhotos.length) {
+                        let fileId = this.storeInfo.storeHeadPhotos[0];
+                        this.storeInfo.storeHeadPhotos = [];
+                        this.storeInfo.storeHeadPhotos.push({
+                            fileId: fileId,
+                            fileUrl: '/'+fileId
+                        });
+                    }
+                    if (this.storeInfo.storeInPhotos && this.storeInfo.storeInPhotos.length) {
+                        let storeInPhotosNew = [];
+                        for (let i in this.storeInfo.storeInPhotos) {
+                            let fileId = this.storeInfo.storeInPhotos[i];
+                            storeInPhotosNew.push({
+                                fileId: fileId,
+                                fileUrl: '/'+fileId
+                            });
+                        }
+                        this.storeInfo.storeInPhotos = storeInPhotosNew;
+                    }
+                    if (this.storeInfo.authorizedBrand && this.storeInfo.authorizedBrand.length) {
+                        let fileId = this.storeInfo.authorizedBrand[0];
+                        this.storeInfo.authorizedBrand = [];
+                        this.storeInfo.authorizedBrand.push({
+                            fileId: fileId,
+                            fileUrl: '/'+fileId
+                        });
+                    }
+                    if (this.storeInfo.sysScreenShot && this.storeInfo.sysScreenShot.length) {
+                        let fileId = this.storeInfo.sysScreenShot[0];
+                        this.storeInfo.sysScreenShot = [];
+                        this.storeInfo.sysScreenShot.push({
+                            fileId: fileId,
+                            fileUrl: '/'+fileId
+                        });
+                    }
+                });
+            },
+            // 处理点击下一步跳转处理
+            handleNextStep() {
+                // 判断表单字段必填性
+                if (this.step === 1) {
+                    // 判断表单是否必填
+                    if(this.storeInfo.bizLicenseType === 2) {
+                        if (!formCheckAndComt.checkRequiredField(this.storeCheckInfo, this.storeInfo, this)) {
+                            return false;
+                        }
+                    }else{
+                        if (!formCheckAndComt.checkRequiredField(this.storeCheckInfoForBizType, this.storeInfo, this)) {
+                            return false;
+                        }
+                    }
+                    this.step += 1;
+                } else if(this.step === 2){
+                    if (!formCheckAndComt.checkRequiredField(this.storeCheckInfoForStaff, this.mgrReqVo, this)) {
+                        return false;
+                    }
+                    this.step += 1;
+                } else {
+                    this.handleSubmitOpen();
+                }
+            },
+            // 处理提交
+            handleSubmitOpen() {
+                let checkPicList = [];
+                if(this.storeInfo.bizLicenseType === 2) {
+                    // 需要判断图片的字段
+                    checkPicList = [{
+                        checkField: 'licencePhotos',
+                        msg: '营业执照照片'
+                    },
+                        {
+                            checkField: 'legalCardPhotos',
+                            msg: '法人身份证正反面照片'
+                        },
+                        {
+                            checkField: 'storeHeadPhotos',
+                            msg: '门头照片'
+                        },
+                        {
+                            checkField: 'storeInPhotos',
+                            msg: '店内照片'
+                        },
+                        {
+                            checkField: 'storeAroundPhotos',
+                            msg: '周边照片'
+                        },
+                    ];
+                }else{
+                    checkPicList = [
+                        {
+                            checkField: 'storeHeadPhotos',
+                            msg: '门头照片'
+                        },
+                        {
+                            checkField: 'storeInPhotos',
+                            msg: '店内照片'
+                        },
+                        {
+                            checkField: 'storeAroundPhotos',
+                            msg: '周边照片'
+                        },
+                    ];
+                }
+                // 判断图片是否上传
+                for (let item of checkPicList) {
+                    if (!(this.storeInfo[item.checkField] instanceof Array &&
+                        this.storeInfo[item.checkField].length)) {
+                        this.$notify('请上传' + item.msg);
+                        return false;
+                    }
+                    if(this.storeInfo.bizLicenseType === 2) {
+                        if (item.checkField == 'legalCardPhotos' && this.storeInfo[item.checkField].length < 2) {
+                            this.$notify('请上传' + item.msg);
+                            return false;
+                        }
+                    }
+                    if (item.checkField == 'storeInPhotos' && this.storeInfo[item.checkField].length < 4){
+                        this.$notify('请上传' + item.msg);
+                        return false;
+                    }
+                    if (item.checkField == 'storeAroundPhotos' && this.storeInfo[item.checkField].length < 3){
+                        this.$notify('请上传' + item.msg);
+                        return false;
+                    }
+                }
+
+                // 由于后端初始化返回的图片字段{url: xx, id: 121}, 而此时在提交的时候,我们
+                // 提交图片字段为[id1, id2], 为id的列表
+                let picIdList = {};
+                this.storeInfo.legalCardPhotosF = [];
+                this.storeInfo.legalCardPhotosZ = [];
+                if(this.storeInfo.bizLicenseType === 2) {
+                    picIdList = {
+                        licencePhotos: [],
+                        legalCardPhotosF: [],
+                        legalCardPhotosZ: [],
+                        storeHeadPhotos: [],
+                        storeInPhotos:[],
+                        storeAroundPhotos:[],
+                        authorizedBrand: [],
+                        sysScreenShot: [],
+                    };
+                    picIdList.legalCardPhotosF.push(this.storeInfo.legalCardPhotos[0].fileId);
+                    picIdList.legalCardPhotosZ.push(this.storeInfo.legalCardPhotos[1].fileId);
+                }else{
+                    picIdList = {
+                        storeHeadPhotos: [],
+                        storeInPhotos:[],
+                        storeAroundPhotos:[],
+                        authorizedBrand: [],
+                        sysScreenShot: [],
+                    };
+                }
+                for (let i in picIdList) {
+                    if (this.storeInfo[i] instanceof Array &&
+                        this.storeInfo[i].length) {
+                        // 后端图片初始文件id为id.而控件上传id为fieldId,这里需要兼容处理一下
+                        this.storeInfo[i].forEach((item) => {
+                            item.fileId ? picIdList[i].push(item.fileId) :
+                                picIdList[i].push(item.id)
+                        });
+                    }
+                }
+                if(this.storeInfo.bizLicenseType !== 2) {
+                    this.storeInfo.licencePhotos = [];
+                }
+                let submitInfo = {
+                    ...this.storeInfo,
+                    ...picIdList,
+                    mgrReqVo:this.mgrReqVo
+                };
+
+                let fn;
+                fn = this.$api.heydOpenStore; //海尔云贷接口
+                fn(submitInfo).then((res) => {
+                    this.$router.push({
+                        path: '/heyd/open-result',
+                        // 提交后,默认跳转审核结果页面,状态为开通中
+                        query: {
+                            orgType:this.orgType,
+                            openStatus: 1,
+                            icon:this.$route.query.icon
+                        }
+                    })
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-heyd-index{
+        padding-top: 54px;
+        height:100%;
+        background-color: #f1f1f1;
+    }
+    .btn {
+        position: fixed;
+        bottom: 15px;
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+        }
+</style>
+
diff --git a/src/views/old/merchant/heyd/storePictures.vue b/src/views/old/merchant/heyd/storePictures.vue
new file mode 100644
index 0000000..2158f79
--- /dev/null
+++ b/src/views/old/merchant/heyd/storePictures.vue
@@ -0,0 +1,114 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:14:44
+ * @Description:
+ -->
+<template>
+    <div class="heyd-picture-page">
+        <div class="pic-content">
+            <UploadFile
+                :fileType="1"
+                :bizLicenseType="storeInfo.bizLicenseType"
+                :title="'上传营业执照'"
+                :picList="storeInfo.licencePhotos"></UploadFile>
+            <div v-if="storeInfo.bizLicenseType == 2">
+                <span style="font-size: 15px">上传法人身份证正反面照</span><span style="font-size: 13px;color: #FF6666">(第一张正面,第二张反面)</span>
+            </div>
+            <UploadFile
+                :fileType="2"
+                :bizLicenseType="storeInfo.bizLicenseType"
+                :showNum="2"
+                :title="''"
+                :picList="storeInfo.legalCardPhotos"></UploadFile>
+            <div>
+                <p style="font-size: 15px">上传门头照片</p>
+                <p style="font-size: 13px;color: #999999;margin: 10px 0 0 0">(需要体现运营商logo、门店名称、门牌号)</p>
+            </div>
+            <UploadFile
+                :fileType="1"
+                :bizLicenseType= "2"
+                :showNum="1"
+                :title="''"
+                :picList="storeInfo.storeHeadPhotos"></UploadFile>
+            <div>
+                <p style="font-size: 15px">上传店内照片</p>
+                <p style="font-size: 13px;color: #999999;margin: 10px 0 0 0">(至少从4个角度拍摄全景体现店铺面积和主要业务区域,至少包括合约分期业务受理区(若有运营商logo背景,则包含在内)手机终端柜台))</p>
+            </div>
+            <UploadFile
+                :fileType="4"
+                :bizLicenseType= "2"
+                :title="''"
+                :showNum="4"
+                :picList="storeInfo.storeInPhotos"></UploadFile>
+            <div>
+                <p style="font-size: 15px">上传周边照片</p>
+                <p style="font-size: 13px;color: #999999;margin: 10px 0 0 0">(门店外部街景、左右各一张,展示左右至少各一间门店)</p>
+            </div>
+            <UploadFile
+                :fileType="3"
+                :bizLicenseType= "2"
+                :title="''"
+                :showNum="3"
+                :picList="storeInfo.storeAroundPhotos"></UploadFile>
+            <div>
+                <span style="font-size: 15px">授权牌</span><span style="font-size: 13px;color: #FF6666"></span>
+            </div>
+            <UploadFile
+                    :fileType="1"
+                    :bizLicenseType= "2"
+                    :title="''"
+                    :picList="storeInfo.authorizedBrand"></UploadFile>
+            <div>
+                <span style="font-size: 15px">联通系统截图</span>
+            </div>
+            <UploadFile
+                    :fileType="1"
+                    :bizLicenseType= "2"
+                    :title="''"
+                    :picList="storeInfo.sysScreenShot"></UploadFile>
+        </div>
+    </div>
+</template>
+
+<script>
+    import UploadFile from '@/components/old/upload/uploadImgStore.vue';
+
+    export default {
+        name: 'heydStorePicture',
+        components: {
+            UploadFile
+        },
+        data() {
+            return {
+            };
+        },
+        props: {
+            storeInfo: {
+                type: Object,
+                required: true,
+            },
+            // + 6的是海尔云贷的上传
+            filetype:{
+                type:Number,
+                default:0
+            }
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .legal-card-title {
+        padding: 10px 0;
+        font-size: 13px;
+        line-height: 1;
+        color: #333;
+        font-weight: normal;
+    }
+    .heyd-picture-page {
+        background: @color-white;
+        .pic-content {
+            padding: 10px 15px;
+        }
+    }
+</style>
diff --git a/src/views/old/merchant/huabei/alipay.vue b/src/views/old/merchant/huabei/alipay.vue
new file mode 100644
index 0000000..82a77a4
--- /dev/null
+++ b/src/views/old/merchant/huabei/alipay.vue
@@ -0,0 +1,298 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-04 15:28:08
+ * @Description: 
+ -->
+/*
+ * @Author: c.y
+ * @Date: 2018-12-24 15:28:12
+ * @Last Modified by: mikey.zhaopeng
+ * @Last Modified time: 2019-11-20 09:52:07
+ * @文件说明:花呗分期--开通花呗--选择个人或者启企业支付宝类型
+ */
+<template>
+  <div class="huabei-alipay-page h-100-g">
+    <x-header
+      :title="'开通' + this.$route.query.title"
+      :left-options="{backText:'',preventGoBack:true}"
+      @on-click-back="pageGoBack()"
+    ></x-header>
+    <group>
+      <popup-picker
+        placeholder="请选择省市区"
+        ref="Area"
+        :title="tit"
+        :data="areaList"
+        :columns="3"
+        v-model="areValue"
+        show-name
+        cancel-text="取消"
+        confirm-text="确定"
+        @on-hide="setAreaValue(true)"
+      ></popup-picker>
+      <x-input
+        title="支付宝账号"
+        :max="40"
+        placeholder="请输入支付宝账号"
+        text-align="right"
+        v-model.trim="alipayInfo.accountNumber"
+      ></x-input>
+      <x-input
+        title="支付宝名称"
+        :max="40"
+        placeholder="请输入支付名称"
+        text-align="right"
+        v-model.trim="alipayInfo.accountName"
+      ></x-input>
+      <x-input
+        title="客服电话"
+        :max="12"
+        placeholder="请输入客服电话"
+        text-align="right"
+        v-model.trim="alipayInfo.servicePhone"
+      ></x-input>
+      <!-- <van-cell @click="showPop=true" title="请选择经营类目:" v-show="isddxt" is-link :value="categoryStr" /> -->
+      <!-- <popup-picker title="请选择经营类目:" v-show="isddxt" :columns="1" :data="mccList" v-model="category" :placeholder="$t('please select')"></popup-picker> -->
+    </group>
+    <f-space></f-space>
+    <f-button @on-click="handleNextStep">下一步</f-button>
+    <!-- <van-popup v-model="showPop" position="bottom" :style="{ height: '30%' }" >
+      <van-picker
+        title="经营类目"
+        value-key="name"
+        show-toolbar
+        :columns="mccList"
+        @confirm="onConfirm"
+        @cancel="onCancel"
+      />
+    </van-popup> -->
+  </div>
+</template>
+
+<script>
+import { mapState } from "vuex";
+import { PopupPicker } from "vux";
+import sysApi from "../../../../api/oldapi";
+import { calcArea } from "@/utils/index";
+export default {
+  components: {
+    PopupPicker
+  },
+  name: "add-account",
+  data() {
+    return {
+      showPop:false,
+      tit: "请选择省市区",
+      areValue: [],
+      category:'',
+      categoryStr:'',
+      areaList: [],
+      // mccList:[],//类目数组
+      showArea: false, // 省市区选择器显示控制
+      addrText: "", //省市区
+      addr: {
+        province: {
+          code: "",
+          name: ""
+        },
+        city: {
+          code: "",
+          name: ""
+        },
+        area: {
+          code: "",
+          name: ""
+        }
+      },
+      alipayInfo: {
+        // addr: '', //省市区
+        accountNumber: "", // 账号
+        accountName: "", // 账号名称
+        servicePhone: "" // 客服电话
+      },
+      aliAreaList: {
+        city_list: {},
+        county_list: {},
+        province_list: {}
+      }
+    };
+  },
+  computed: {
+    ...mapState(["areaList"]),
+    isddxt(){
+      if(sessionStorage.isddxt == 1){
+        return true
+      }else{
+        return false
+      }
+    }
+  },
+  created() {
+    
+    // this.mccList = JSON.parse(sessionStorage.getItem('huabei_mccList')) 
+    // console.log(this.mccList)
+    this.$nextTick(() => {
+      console.log(this.areaList);
+    });
+    this.getMyMation()
+    this.$api.getAliAreaList().then(res => {
+      this.areaList = res.body.provList;
+    });
+  },
+  methods: {
+    onConfirm(val){
+      console.log(val)
+      this.categoryStr = val.name
+      this.category = val.code
+      this.showPop = false
+    },
+    onCancel(){
+      this.showPop = false
+    },
+    //   获取返显资料
+    getMyMation(){
+        if(sessionStorage.getItem('huabei_detailInfo')){
+            console.log(JSON.parse(sessionStorage.getItem('huabei_detailInfo')))
+            var obj = JSON.parse(sessionStorage.getItem('huabei_detailInfo'))
+            if(obj.addr){
+                this.areValue[0] = obj.addr.province.code
+                this.areValue[1] = obj.addr.city.code
+                this.areValue[2] = obj.addr.area.code
+                this.addr = obj.addr
+            }
+            if(obj.aliAccount){
+                this.alipayInfo.accountNumber = obj.aliAccount
+            }
+            if(obj.aliAccountName){
+                this.alipayInfo.accountName = obj.aliAccountName
+            }
+            if(obj.servicePhone){
+                this.alipayInfo.servicePhone = obj.servicePhone  
+            }
+        }
+    },
+    //地区选择确认事件
+    setAreaValue() {
+      this.addrText = this.$refs.Area.getNameValues();
+      this.alipayInfo.addr = this.addr = {
+        province: {
+          code: this.areValue[0],
+          name: this.addrText.split(" ")[0]
+        },
+        city: {
+          code: this.areValue[1],
+          name: this.addrText.split(" ")[1]
+        },
+        area: {
+          code: this.areValue[2],
+          name: this.addrText.split(" ")[2]
+        }
+      };
+      console.log(this.areValue)
+    },
+    // 点击下一步
+    handleNextStep() {
+      console.log(this.addr);
+      if (this.$tool.checkValEmpty(this.addr.area.code)) {
+        this.$notify_success("请选择省市区");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.alipayInfo.accountNumber)) {
+        this.$notify_success("请输入支付宝账号");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.alipayInfo.accountName)) {
+        this.$notify_success("请输入支付宝名称");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.alipayInfo.servicePhone)) {
+        this.$notify_success("请输入客服电话");
+        return false;
+      }
+      var req = / ^[\-]?\d+(\.\d+)?$/
+      if (req.test(this.alipayInfo.servicePhone)) {
+        this.$notify_success("请输入正确客服电话");
+        return false;
+      }
+      // if (this.$tool.checkValEmpty(this.category)&&sessionStorage.isddxt == 1) {
+      //   this.$notify_success("请选择经营类目");
+      //   return false;
+      // }
+      // if (
+      //   !(
+      //     this.$tool.checkPhone(this.alipayInfo.accountNumber) ||
+      //     this.$tool.checkEmail(this.alipayInfo.accountNumber)
+      //   )
+      // ) {
+      //   this.$notify_success("请输入正确的支付宝账号");
+      //   return false;
+      // }
+      // 由于支付宝名称,可以有个人账号或者企业账号,并不知道其具体的规则,所以
+      // 不进行具体规则的效验,只进行必填的验证。
+      // 存在在本地,统一提交开通花呗分期
+
+      sessionStorage.setItem(
+        "huabei_accountNumber",
+        this.alipayInfo.accountNumber
+      );
+      sessionStorage.setItem("huabei_accountName", this.alipayInfo.accountName);
+      sessionStorage.setItem(
+        "huabei_servicePhone",
+        this.alipayInfo.servicePhone
+      );
+      sessionStorage.setItem("huabei_addr", JSON.stringify(this.addr));
+      if(sessionStorage.isddxt == 1){
+        sessionStorage.setItem("huabei_category", JSON.stringify(this.category));
+      }
+      
+
+      this.$router.push({
+        path: "/huabei/store-pictures",
+        query: {
+          ...this.$route.query
+        }
+      });
+    },
+    pageGoBack() {
+      if(this.$route.query.isApp == 1){
+        this.$router.go(-1)
+      }else{
+        if (this.$route.query.typeId) {
+          this.$router.push({
+            path: "/huabei/open",
+            query: { ...this.$route.query }
+          });
+        } else {
+          this.$router.push({ path: "/huabei/open" });
+        }
+      }
+      
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.huabei-alipay-page {
+  padding-top: 54px;
+  background-color: #f1f1f1;
+}
+/deep/.vux-cell-value {
+  color: #333;
+  font-size: 16px;
+}
+.choose {
+  font-size: 14px;
+}
+/deep/.van-cell__value {
+    position: relative;
+    overflow: hidden;
+    color: #333;
+    font-size: 16px;
+    text-align: right;
+    vertical-align: middle;
+    word-wrap: break-word;
+}
+</style>
diff --git a/src/views/old/merchant/huabei/open.vue b/src/views/old/merchant/huabei/open.vue
new file mode 100644
index 0000000..bcd34c5
--- /dev/null
+++ b/src/views/old/merchant/huabei/open.vue
@@ -0,0 +1,178 @@
+<!--
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-04 15:23:51
+ * @Description: 
+ -->
+<template>
+    <div class="open-huabei-page h-100-g">
+        <x-header :title="'开通' + this.$route.query.title" :left-options="{backText:'',preventGoBack:true}"
+                  @on-click-back="pageGoBack"></x-header>
+        <div class="tip">请用支付宝客户端,扫一扫</div>
+        <div class="qrcode-url" v-if="qrCodeUrl">
+            <img :src="qrCodeUrl" alt="">
+        </div>
+        <f-space></f-space>
+        <f-button @on-click="handleNextStep"
+                  :disabled="buttonText === '等待授权'">{{ buttonText }}</f-button>
+
+        <p class="tip">企业类型商户请使用企业支付宝账号扫码授权,个体工商户请使用经营者支付宝账号扫码授权</p>
+    </div>
+</template>
+
+<script>
+    import QRCode from 'qrcode'
+
+    export default {
+        name: 'huaBeiOpen',
+        data() {
+            return {
+                tit:'',
+                isClickNextBtn: false, // 是否点击下一步btn的状态
+                alAccountTypeList: [],
+                qrCodeUrl: '', // 二维码图片地址
+                timeId: '', // 轮询时间id
+                buttonText: '等待授权' // 按钮文字
+            };
+        },
+        created() {
+            console.log(this.$route.query.path)
+            this.qrCodeUrl = '';
+            this.timeId =  '';
+            this.buttonText = '等待授权';
+            this.isClickNextBtn = false;
+            this.init();
+        },
+        mounted(){
+           
+        },
+        methods: {
+            // 点击返回
+            pageGoBack () {
+                if(this.$route.query.isCreateOrderPush || this.$route.query.isApp==1){
+                    this.$router.go(-1)
+                }else{
+                    this.$router.push({
+                        path:'/channel-selection_sh',
+                        query:{
+                            ...this.$route.query
+                        }
+                    })
+                }
+            },
+            // 检查授权
+            checkAuth (isNext) {
+                    // authStatus: 0 未授权   1授权---用户授权后才能执行下一步
+                    this.$api.checkAuth({
+                        zfbVersion:this.$route.query.zfbVersion
+                    }).then((res) => {
+                        if (res.body.authStatus === 1) {
+                            this.buttonText = '下一步';
+                            clearTimeout(this.timeId);
+                            if (isNext && !this.$route.query.isCreateOrderPush) {
+                                this.$router.push({
+                                    path: '/huabei/alipay',
+                                    query: {
+                                       ...this.$route.query
+                                    }
+                                });
+                            }
+                            if(isNext && this.$route.query.isCreateOrderPush){
+                                this.$router.push({
+                                    path:this.$route.query.path,
+                                    query:{
+                                        ...this.$route.query
+                                    }
+                                })
+                            }
+                        } else if(res.body.authStatus === 2){
+                            // 3秒钟,轮询一次
+                            this.$notify_success('请重新进入此页面');
+                        }else {
+                            // 3秒钟,轮询一次
+                            this.timeId = setTimeout(() => {
+                                this.checkAuth();
+                            }, 3000);
+                        }
+                    }, (error) => {
+                        clearTimeout(this.timeId);
+                    });
+                // }
+                
+            },
+            // 获取列表
+            init () {
+                    this.$api.hbOpenInit({
+                        zfbVersion:this.$route.query.zfbVersion
+                    }).then((res) => {
+                        // 这个类型列表(缓存在初始化列表, 等待上传图片的是,支付宝类型)
+                        let alAccountTypeList = res.body.alAccountTypeList || [];
+                        // let mccList = res.body.mccList || []
+                        sessionStorage.setItem('huabei_accountTypeList', JSON.stringify(alAccountTypeList));
+                        sessionStorage.setItem('huabei_mccList',JSON.stringify(res.body.mccList));
+                        // sessionStorage.setItem('huabei_mccList', JSON.stringify(mccList));
+                        // 如果已有开通记录  取值存起来 后面返显
+                        if(res.body.detailInfo){
+                            sessionStorage.setItem('huabei_detailInfo',JSON.stringify(res.body.detailInfo))
+                        }
+                        // 1-图片,2-路径
+                        if (res.body.urlType === 1) {
+                            this.qrCodeUrl = res.body.qrCodeUrl;
+                        } else if (res.body.urlType === 2) {
+                            // 生成图片
+                            QRCode.toDataURL(res.body.qrCodeUrl)
+                                .then(url => {
+                                    this.qrCodeUrl = url;
+                                })
+                                .catch(err => {
+                                    console.error(err)
+                                });
+                        }
+                        // 进入这个页面,就进行授权
+                        this.checkAuth(false);
+                    });
+                // }
+
+                
+               
+            },
+            // 点击下一步
+            handleNextStep () {
+                this.checkAuth(true);
+            }
+        },
+        beforeRouteLeave(to,form,next){
+            clearTimeout(this.timeId);
+            this.qrCodeUrl = null;
+            next();
+        },
+        // destroyed() {
+        //     clearTimeout(this.timeId);
+        //     this.qrCodeUrl = null;
+        // },
+        
+    };
+</script>
+
+<style lang="less">
+    .open-huabei-page {
+        padding-top: 54px;
+        background-color: #f1f1f1;
+
+        .tip {
+            color: #999;
+            text-align: center;
+            font-size: 14px;
+            line-height: 1.6;
+            padding: 14px 8%;
+        }
+        .qrcode-url {
+            text-align: center;
+            img {
+                width: 60%;
+                height: auto;
+                border: 5px solid @color-border-theme;;
+            }
+        }
+    }
+</style>
diff --git a/src/views/old/merchant/huabei/openResult.vue b/src/views/old/merchant/huabei/openResult.vue
new file mode 100644
index 0000000..323c683
--- /dev/null
+++ b/src/views/old/merchant/huabei/openResult.vue
@@ -0,0 +1,237 @@
+/*
+ * @Author: c.y
+ * @Date: 2018-12-24 15:25:57
+ * @Last Modified by: c.y
+ * @Last Modified time: 2019-06-06 15:22:27
+ * @文件说明:开通花呗--审核结果
+ */
+<template>
+  <div class="huabei-result-page">
+    <x-header
+      :title="'开通' + this.$route.query.title"
+      :left-options="{backText:'',preventGoBack:true}"
+      @on-click-back="pageGoBack()"
+    ></x-header>
+    <div class="status-icon">
+      <i v-if="openStatus == 1" class="iconfont scene_Staging-shenhezhong1"></i>
+      <i v-if="openStatus == 2" class="iconfont scene_Staging-danxuan"></i>
+      <i v-if="openStatus == 3" class="iconfont scene_Staging-shibai1"></i>
+      <i v-if="openStatus == 4" class="iconfont scene_Staging-shenhezhong1"></i>
+    </div>
+    <div class="tips">
+      <p v-if="openStatus == 1">审核中</p>
+      <p v-if="openStatus == 2">审核通过</p>
+      <p v-if="openStatus == 3">审核未通过</p>
+      <p v-if="openStatus == 4">人工审核中,请联系客服</p>
+    </div>
+    <div style="padding:0 15px;margin-top:20px;color:#999;" v-if="openStatus != 4">
+      <x-input title="花呗审核备注" v-model="hbAuditRemark" :readonly="true" text-align="right"></x-input>
+    </div>
+    <f-button @on-click="handleBack">{{ buttonText }}</f-button>
+    <f-button v-if="signUrl" @on-click="goSign">去签约</f-button>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "add-account",
+  data() {
+    return {
+      openStatus: 0, // 开通状态
+      buttonText: "", // 底部按钮文字
+      signUrl: null, //签约地址
+      hbAuditRemark: "无", //花呗审核备注
+      timer:"",//定时器
+    };
+  },
+  computed:{
+    isApp(){
+      return Number(this.$route.query.isApp)
+    }
+  },
+  methods: {
+    goSign() {
+      window.location.href = this.signUrl;
+    },
+    pageGoBack() {
+      if(this.isApp==1){
+        this.$router.push({
+          path: "/app/home"
+        });
+      }else{
+        this.$router.push({
+          path: "/main/productManagement"
+        });
+      }
+      
+    },
+    // 1.商户提交开通花呗分期申请后状态:审核中,审核不通过,开通成功。
+    // 2.如果是审核中,点击返回按钮回到“我”的界面;
+    // 3.如果审核失败,底部按钮改为“重新开通”,点击进入产品管理页并可以重新开通花呗分期;
+    // 4.如果开通成功,按钮改为“查看详情”,点击进入花呗详情页面;
+    // 5.如果是审核中,点击返回按钮回到“我”的界面;
+    handleBack() {
+      let jumpUrl = "";
+      switch (this.openStatus) {
+        case 1:
+          if(this.isApp==1){
+            jumpUrl = "/app/home";
+          }else{
+            jumpUrl = "/main/mine";
+          }
+          break;
+        case 2:
+          if(this.isApp==1){
+            if(this.$route.query.prodId == 30000003){
+              jumpUrl = "/app/zfbVersionDetail";
+            }else{
+              jumpUrl = "/app/shskVersionDetail";
+            }
+          }else{
+            if (this.$route.query.title == "花呗分期") {
+              jumpUrl = "/huabei/staging";
+            } else {
+              jumpUrl = "/huabei/staging_dmf";
+            }
+          }
+          break;
+        case 3:
+          if(this.isApp==1){
+            jumpUrl = "/app/home";
+          }else{
+            jumpUrl = "/main/productManagement";
+          }
+          break;
+        case 4:
+          if(this.isApp==1){
+            jumpUrl = "/app/home";
+          }else{
+            jumpUrl = "/main/mine";
+          } 
+      }
+      // 审核未通过3---需要调用--重新开通接口
+      if (this.openStatus === 3) {
+        this.$api.hbOpenReOpen({}).then(res => {
+          this.$router.push({
+            path: jumpUrl,
+            query:{
+              ...this.$route.query
+            }
+          });
+        });
+      } else {
+        this.$router.push({
+          path: jumpUrl,
+          query:{
+            ...this.$route.query
+          }
+        });
+      }
+    },
+    // * 开通状态 mOpenStatus 0-待开户,1-审核中,2-审核通过,3-审核未通过 4-人工审核
+    init() {
+      if (this.$route.query.prodId == "30000011") {
+        this.$api.findXygOpenSts().then(res => {
+          console.log(res);
+          try {
+            this.signUrl = res.body.signUrl || null;
+            this.hbAuditRemark = res.body.hbAuditRemark || "无";
+          } catch (err) {}
+          this.openStatus = res.body.openStatus;
+          console.log("aaa" + this.openStatus);
+          switch (res.body.openStatus) {
+            case 1:
+              this.buttonText = "返回";
+              
+              break;
+            case 2:
+              this.buttonText = "查看详情";
+              clearInterval(this.timer)
+              break;
+            case 3:
+              this.buttonText = "重新开通";
+              clearInterval(this.timer)
+              break;
+            case 4:
+              this.buttonText = "返回";
+              clearInterval(this.timer)
+          }
+          console.log("bbb" + this.buttonText);
+        });
+      } else {
+        this.$api
+          .findOpenSts({
+            zfbVersion: this.$route.query.zfbVersion
+          })
+          .then(res => {
+            console.log(res);
+            try {
+              this.signUrl = res.body.signUrl || null;
+              this.hbAuditRemark = res.body.hbAuditRemark || "无";
+            } catch (err) {}
+            this.openStatus = res.body.openStatus;
+            console.log("aaa" + this.openStatus);
+            switch (res.body.openStatus) {
+              case 1:
+                this.buttonText = "返回";
+               
+                break;
+              case 2:
+                this.buttonText = "查看详情";
+                clearInterval(this.timer)
+                break;
+              case 3:
+                this.buttonText = "重新开通";
+                clearInterval(this.timer)
+                break;
+              case 4:
+                this.buttonText = "返回";
+                clearInterval(this.timer)
+            }
+            console.log("bbb" + this.buttonText);
+          });
+      }
+    }
+  },
+  created() {
+    console.log(this.$route.query.title);
+    this.buttonText = "";
+    this.openStatus = 0;
+    this.init();
+  },
+  mounted(){
+    let _this = this
+    this.timer = setInterval(()=>{
+      _this.init();
+    },5000)
+  },
+  beforeRouteLeave (to, from, next) {
+    // 清除定时器
+    clearInterval(this.timer)
+    next()
+  }
+};
+</script>
+
+<style lang="less">
+.huabei-result-page {
+  padding-top: 45px;
+  .status-icon {
+    padding-top: 20px;
+    text-align: center;
+  }
+  .iconfont {
+    font-size: 64px;
+    color: #bfa073;
+  }
+  .scene_Staging-shibai1 {
+    color: #f76260;
+  }
+  .tips {
+    color: #999;
+    font-size: 14px;
+    line-height: 1.6;
+    text-align: center;
+  }
+}
+</style>
diff --git a/src/views/old/merchant/huabei/staging.vue b/src/views/old/merchant/huabei/staging.vue
new file mode 100644
index 0000000..883c1eb
--- /dev/null
+++ b/src/views/old/merchant/huabei/staging.vue
@@ -0,0 +1,259 @@
+<!--
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-29 14:16:38
+ * @Description: 
+ -->
+<template>
+  <div class="huabei-detail-page">
+    <van-nav-bar
+      :title="this.$route.query.title"
+      left-text="返回"
+      left-arrow
+      @click-left="onClickLeft"
+      fixed
+      style="line-height: 43px;"
+    >
+      <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+    <div class="top-back"></div>
+    <HstagingDetail :infoList="alipayInfo" :rateList="prodRef" :rateListRule="rateListRule" :hasTitle="true"></HstagingDetail>
+
+    <!-- <div class="info-box">
+      <div class="info-box-top">
+        <van-cell
+          :title="alipayInfo.accountType === 1 ? '姓名' : '企业名称'"
+          :value="alipayInfo.accountName"
+          title-class="tit-class"
+          value-class="val-class"
+         
+        />
+        <van-cell
+          title="支付宝账号"
+          :value="alipayInfo.accountNumber"
+          title-class="tit-class"
+          value-class="val-class"
+        />
+        <van-cell
+          title="支付宝类型"
+          :value="alipayInfo.accountTypeName"
+          title-class="tit-class"
+          value-class="val-class"
+        />
+        <van-cell
+          title="商户编号"
+          :value="alipayInfo.merNo"
+          title-class="tit-class"
+          value-class="val-class"
+        />
+        <van-cell
+          title="开通日期"
+          :value="alipayInfo.authTime"
+          title-class="tit-class"
+          value-class="val-class"
+        />
+      </div>
+      <div class="info-box-bottom" v-if="prodRef.length > 1">
+        <div class="left-cr"></div>
+        <div class="right-cr"></div>
+        <div class="rate-title">费率</div>
+          <div class="item" v-for="i in prodRef" :key="i.termName">
+            <span>{{i.termName}}</span>
+            <span>{{i.platRate}} <span v-show="i.termName !== '期数'">%</span></span>
+            <span>{{i.zfbRate}} <span v-show="i.termName !== '期数'">%</span></span>
+        </div>
+      </div>
+    </div> -->
+   
+  </div>
+</template>
+
+<script>
+import HstagingDetail from "@/components/common/h-staging-detail.vue";
+import Vue from "vue";
+import { NavBar } from "vant";
+import { dateFormat } from "vux";
+Vue.use(NavBar);
+export default {
+  name: "add-account",
+  components:{
+    HstagingDetail
+  },
+  data() {
+    return {
+      prodRef: [{termName: '期数', platRate: '智享服务费率', zfbRate: '花呗分期手续费率'}],
+      alipayInfo:[],
+      rateListRule:[{keyName:'termName'},{keyName:'platRate',type:'isRate'},{keyName:'zfbRate',type:'isRate'}]
+    };
+  },
+  methods: {
+    // 返回上一页
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    // 初始化页面
+    init() {
+      if (this.$route.query.prodId == 30000011) {
+        this.$api
+          .merXygPayInfo({
+            prodId: this.$route.query.prodId
+          })
+          .then(res => {
+            this.prodRef = res.body.prodBaseTermInfVo;
+            this.alipayInfo = {
+              accountNumber: res.body.payCode,
+              merNo: res.body.merNo,
+              accountName: res.body.payName,
+              accountType: Number(res.body.payType),
+              authTime: res.body.authTimeStr,
+              accountTypeName: res.body.payType === 1 ? "个人" : "企业"
+            };
+          });
+      } else {
+        this.$api
+          .merPayInfo({
+            zfbVersion: this.$route.query.zfbVersion,
+            prodId: this.$route.query.prodId
+          })
+          .then(res => {
+            this.prodRef = [...this.prodRef, ...res.body.prodBaseTermInfVo]
+            
+            this.alipayInfo = [
+              {
+                title:Number(res.body.payType) === 1 ? '姓名' : '企业名称',
+                value:res.body.payName
+              },
+              {
+                title:'支付宝账号',
+                value:res.body.payCode
+              },
+              {
+                title:'支付宝类型',
+                value:res.body.payType === 1 ? "个人" : "企业"
+              },
+              {
+                title:'商户编号',
+                value:res.body.merNo
+              },
+               {
+                title:'开通日期',
+                value:res.body.authTimeStr
+              },
+            ]
+          });
+      }
+    }
+  },
+  created() {
+    this.init();
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.huabei-detail-page {
+  padding-top: 45px;
+  background: #f5f5f7;
+  min-height: 100vh;
+  /deep/.van-cell__value {
+    position: relative;
+    overflow: visible;
+    text-align: right;
+    vertical-align: middle;
+  }
+  .top-back {
+    width: 100%;
+    height: 140px;
+    background: linear-gradient(
+      180deg,
+      rgba(85, 78, 122, 1),
+      rgba(66, 61, 93, 1)
+    );
+  }
+  .info-box {
+    width: 92%;
+    background: rgba(255, 255, 255, 1);
+    box-shadow: 0px 18px 15px 0px rgba(40, 23, 92, 0.04);
+    border-radius: 3px;
+    position: absolute;
+    top: 96px;
+    left: 4%;
+    .info-box-bottom {
+      box-sizing: border-box;
+      padding: 0 17px 20px 17px;
+      position: relative;
+      background-color: #fff;
+      .left-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: #f5f5f7;
+        top: -7px;
+        left: -7px;
+      }
+      .right-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: #f5f5f7;
+        top: -7px;
+        right: -7px;
+      }
+    }
+      .item {
+        width: 100%;
+        margin-top: 5px;
+        padding: 0 10px;
+        box-sizing: border-box;
+        display: inline-block;
+        background: rgba(249, 247, 252, 1);
+        height: 40px;
+        line-height: 40px;
+        display: flex;
+        justify-content: space-around;
+        span {
+          text-align: center;
+        }
+        span:nth-child(1) {
+          width: 15%;
+        }
+        span:nth-child(2) {
+          width: 40%;
+        }
+        span:nth-child(3) {
+          width: 45%;
+        }
+      }
+  }
+  .tit-class {
+    min-width: 30%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(153, 153, 153, 1);
+  }
+  .val-class {
+    min-width: 69%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(51, 51, 51, 1);
+  }
+  .van-cell:not(:last-child)::after {
+    border-bottom: 0;
+  }
+  .rate-title {
+    padding: 20px 0 0 0;
+    font-size: 14px;
+    color: #999999;
+    font-weight: normal;
+    line-height: 1.6;
+    border-top: 1px dashed #e6e6e6;
+  }
+  .unit {
+    font-size: 14px;
+  }
+}
+</style>
diff --git a/src/views/old/merchant/huabei/staging_dmf.vue b/src/views/old/merchant/huabei/staging_dmf.vue
new file mode 100644
index 0000000..b0c0970
--- /dev/null
+++ b/src/views/old/merchant/huabei/staging_dmf.vue
@@ -0,0 +1,225 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-08 14:08:09
+ * @Description: 
+ -->
+<template>
+  <div class="huabei-detail-page">
+    <van-nav-bar
+      title="商户收款"
+      left-text="返回"
+      left-arrow
+      @click-left="onClickLeft"
+      fixed
+      style="line-height: 43px;"
+    >
+      <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+    <div class="top-back"></div>
+    
+    <div class="info-box">
+      <van-cell
+        :title="alipayInfo.accountType === 1 ? '姓名' : '企业名称'"
+        :value="alipayInfo.accountName"
+        title-class="tit-class"
+        value-class="val-class"
+      />
+      <van-cell
+        title="支付宝账号"
+        :value="alipayInfo.accountNumber"
+        title-class="tit-class"
+        value-class="val-class"
+      />
+      <van-cell
+        title="支付宝类型"
+        :value="alipayInfo.accountTypeName"
+        title-class="tit-class"
+        value-class="val-class"
+      />
+      <van-cell
+        title="商户编号"
+        :value="alipayInfo.merNo"
+        title-class="tit-class"
+        value-class="val-class"
+      />
+      <van-cell
+        title="开通日期"
+        :value="alipayInfo.authTime"
+        title-class="tit-class"
+        value-class="val-class"
+      />
+      <div class="info-box-bottom" >
+      <div class="left-cr"></div>
+      <div class="right-cr"></div>
+      <div class="rate-title">费率</div>
+      <div class="item" v-for="i in payMethods" :key="i.payMethodName">
+        <span>{{i.payMethodName}}</span>
+        <span>{{i.fee}}%</span>
+      </div>
+    </div>
+    </div>
+    <!-- v-if="prodRef.length > 1" -->
+    
+  </div>
+</template>
+
+<script>
+import Vue from "vue";
+import { NavBar } from "vant";
+
+Vue.use(NavBar);
+export default {
+  name: "add-account",
+  data() {
+    return {
+      payMethods:[],
+      alipayInfo: {
+        accountNumber: "", // 账号
+        accountName: "", // 账号名称
+        accountType: "", // 账户类型 1为个人 2为企业
+        accountTypeName: "",
+        merNo: "",
+        authTime: ""
+      }
+    };
+  },
+  methods: {
+    // 返回上一页
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    // 初始化页面
+    init() {
+      this.$api
+        .merPayInfo({
+          zfbVersion: this.$route.query.zfbVersion,
+          prodId: this.$route.query.prodId
+        })
+        .then(res => {
+          this.alipayInfo = {
+            accountNumber: res.body.payCode,
+            merNo: res.body.merNo,
+            accountName: res.body.payName,
+            authTime: res.body.authTimeStr,
+            accountType: Number(res.body.payType),
+            accountTypeName: res.body.payType === 1 ? "个人" : "企业"
+          };
+          this.payMethods = res.body.payMethods
+        });
+    }
+  },
+  created() {
+    this.init();
+  }
+};
+</script>
+
+<style lang="less">
+.huabei-detail-page {
+  padding-top: 45px;
+  position: relative;
+  min-height: 100vh;
+  background: #fafafa;
+  /deep/.van-cell__value {
+    position: relative;
+    overflow: visible;
+    text-align: right;
+    vertical-align: middle;
+  }
+  .top-back {
+    width: 100%;
+    height: 140px;
+    background: linear-gradient(
+      180deg,
+      rgba(85, 78, 122, 1),
+      rgba(66, 61, 93, 1)
+    );
+  }
+  .info-box {
+    width: 92%;
+    height: 227px;
+    background: rgba(255, 255, 255, 1);
+    box-shadow: 0px 18px 15px 0px rgba(40, 23, 92, 0.04);
+    border-radius: 3px;
+    position: absolute;
+    top: 96px;
+    left: 4%;
+  }
+  .tit-class {
+    min-width: 30%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(153, 153, 153, 1);
+  }
+  .val-class {
+    min-width: 69%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(51, 51, 51, 1);
+  }
+  .van-cell:not(:last-child)::after {
+    border-bottom: 0;
+  }
+  .rate-title {
+    padding: 20px 15px 10px;
+    font-size: 16px;
+    color: #333;
+    font-weight: normal;
+    line-height: 1.6;
+  }
+  .unit {
+    font-size: 14px;
+  }
+  .info-box-bottom {
+      border-top: 1px dashed #eee;
+      box-sizing: border-box;
+      padding: 0 17px 20px 17px;
+      position: relative;
+      background-color: #fff;
+      .left-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: #f5f5f7;
+        top: -7px;
+        left: -7px;
+      }
+      .right-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: #f5f5f7;
+        top: -7px;
+        right: -7px;
+      }
+    }
+      .item {
+        width: 100%;
+        margin-top: 5px;
+        padding: 0 10px;
+        box-sizing: border-box;
+        display: inline-block;
+        background: rgba(249, 247, 252, 1);
+        height: 40px;
+        line-height: 40px;
+        display: flex;
+        justify-content: space-around;
+        span {
+          text-align: center;
+        }
+        span:nth-child(1) {
+          width: 45%;
+        }
+        span:nth-child(2) {
+          width: 40%;
+        }
+        
+      }
+}
+</style>
diff --git a/src/views/old/merchant/huabei/staging_hbjl.vue b/src/views/old/merchant/huabei/staging_hbjl.vue
new file mode 100644
index 0000000..390ee9d
--- /dev/null
+++ b/src/views/old/merchant/huabei/staging_hbjl.vue
@@ -0,0 +1,213 @@
+<!--
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-06-12 17:27:17
+ * @Description: 
+ -->
+<template>
+  <div class="hbjl-detail-page">
+    <van-nav-bar
+      title="花呗间联"
+      left-text="返回"
+      left-arrow
+      @click-left="onClickLeft"
+      fixed
+      style="line-height: 43px;"
+    >
+      <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+    <div class="top-back"></div>
+    <div class="info-box">
+      <div class="info-box-top" v-if="alipayInfo.inviteCode">
+        <p>{{alipayInfo.inviteCode}}</p>
+        <p>推广码</p>
+      </div>
+      <div class="info-box-bottom" v-if="prodRef">
+        <!-- <div class="left-cr"></div>
+        <div class="right-cr"></div> -->
+        <!-- <div v-if="prodRef instanceof Array && prodRef.length" class="rate-title">费率</div> -->
+        <div class="trem-box">
+          <div v-for="i in prodRef" :key="i.termName">
+            <template v-if="prodRef instanceof Array && prodRef.length">
+                <span>{{i.term}}期</span>
+                <span>费率:{{i.fee}}%</span>
+                <span>固定收益:{{i.amt}}</span>
+            </template>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import Vue from "vue";
+import { NavBar } from "vant";
+import { dateFormat } from "vux";
+Vue.use(NavBar);
+export default {
+  name: "add-account",
+  data() {
+    return {
+      prodRef: [],
+      alipayInfo: {
+        inviteCode:'',
+      }
+    };
+  },
+  methods: {
+    // 返回上一页
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    // 初始化页面
+    init() {
+      this.$api.prodRefInit({
+        orgId:this.$route.query.orgId,
+        orgType:this.$route.query.orgType,
+        typeId:this.$route.query.typeId
+      }).then(res=>{
+        this.alipayInfo = res.body
+        this.prodRef = res.body.prodSkDtlInfoList
+      })
+      
+    }
+  },
+  created() {
+    this.init();
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.hbjl-detail-page {
+  padding-top: 45px;
+  background: #f5f5f7;
+  min-height: 100vh;
+  /deep/.van-cell__value {
+    position: relative;
+    overflow: visible;
+    text-align: right;
+    vertical-align: middle;
+  }
+  .top-back {
+    width: 100%;
+    height: 140px;
+    background: linear-gradient(
+      180deg,
+      rgba(85, 78, 122, 1),
+      rgba(66, 61, 93, 1)
+    );
+  }
+  .info-box {
+    width: 92%;
+    background: rgba(255, 255, 255, 1);
+    box-shadow: 0px 18px 15px 0px rgba(40, 23, 92, 0.04);
+    border-radius: 3px;
+    position: absolute;
+    top: 96px;
+    left: 4%;
+    .info-box-top{
+      text-align: center;
+      height: 128px;
+      box-sizing: border-box;
+      padding-top: 47px;
+      p:nth-of-type(1){
+        font-size:18px;
+        font-family:PingFang SC;
+        font-weight:bold;
+        color:rgba(51,51,51,1);
+        margin-bottom: 10px;
+      }
+      p:nth-of-type(2){
+        font-size:14px;
+        font-family:PingFang SC;
+        font-weight:500;
+        color:rgba(153,153,153,1);
+      }
+    }
+    .info-box-bottom {
+      box-sizing: border-box;
+      padding: 24px 17px 20px 17px;
+      position: relative;
+      background-color: #fff;
+      border-top:1px dashed #E6E6E6;
+      .left-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: linear-gradient(180deg,#423D5D 50%,#F5F5F7 50%);
+        top: -7px;
+        left: -7px;
+      }
+      .right-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: linear-gradient(180deg,#423D5D 50%,#F5F5F7 50%);
+        top: -7px;
+        right: -7px;
+      }
+    }
+
+    .trem-box {
+      width: 100%;
+      color: #271D5E;
+      box-sizing: border-box;
+      //padding: 0 15px;
+      div{
+          width: 100%;
+          height: 40px;
+          border:1px solid rgba(249,247,252,1);
+          display: flex;
+          line-height: 40px;
+          margin-bottom: 5px;
+          span{
+              display: inline-block;
+              text-align: center;
+          }
+          span:nth-of-type(1){
+              background:rgba(249,247,252,1);
+              width: 20%;
+          }
+          span:nth-of-type(2){
+              width: 40%;
+          }
+          span:nth-of-type(3){
+              width: 40%;
+          }
+      }
+    }
+  }
+  .tit-class {
+    min-width: 30%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(153, 153, 153, 1);
+  }
+  .val-class {
+    min-width: 69%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(51, 51, 51, 1);
+  }
+  .van-cell:not(:last-child)::after {
+    border-bottom: 0;
+  }
+  .rate-title {
+    padding: 20px 0 0 0;
+    font-size: 14px;
+    color: #999999;
+    font-weight: normal;
+    line-height: 1.6;
+    border-top: 1px dashed #e6e6e6;
+  }
+  .unit {
+    font-size: 14px;
+  }
+}
+</style>
diff --git a/src/views/old/merchant/huabei/storePictures.vue b/src/views/old/merchant/huabei/storePictures.vue
new file mode 100644
index 0000000..80f5dbf
--- /dev/null
+++ b/src/views/old/merchant/huabei/storePictures.vue
@@ -0,0 +1,278 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-04 15:30:29
+ * @Description:
+ -->
+/*
+ * @Author: c.y
+ * @Date: 2018-12-24 15:04:57
+ * @Last Modified by: mikey.zhaopeng
+ * @Last Modified time: 2019-11-15 09:02:18
+ * @文件说明:花呗分期--开通花呗--上传门店相关照片
+ */
+<template>
+  <div class="huabei-picture-page">
+    <x-header
+      :title="'开通' + this.$route.query.title"
+      :left-options="{backText:'',preventGoBack:true}"
+      @on-click-back="pageGoBack()"
+    ></x-header>
+    <group v-if="alAccountTypeList instanceof Array && alAccountTypeList.length">
+      <selector
+        :title="isddxt?'商户类型':'支付宝类型'"
+        ref="insTerm"
+        placeholder="请选择"
+        v-model="accountType"
+        :options="alAccountTypeList"
+        :value-map="['code', 'name']"
+        direction="rtl"
+      ></selector>
+    </group>
+    <div class="pic-content">
+      <UploadFile
+        :fileType="0"
+        :title="isddxt && accountType == 3?'民办非企业登记证书':'营业执照'"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.licencePhotos"
+      ></UploadFile>
+      <UploadFile
+        v-if="isddxt && accountType == 3"
+        :fileType="24"
+        :title="'办学许可证'"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.schoolPermit"
+      ></UploadFile>
+      <UploadFile
+        :fileType="2"
+        :title="'身份证正面照'"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.cardFrontPhotos"
+      ></UploadFile>
+      <UploadFile
+        :fileType="3"
+        :title="'身份证反面照'"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.cardBackPhotos"
+      ></UploadFile>
+      <UploadFile
+        :fileType="6"
+        :title="'门店店内照'"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.storeInnerPhotos"
+      ></UploadFile>
+      <UploadFile
+        :fileType="7"
+        :title="'门店招牌照'"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.storeSignPhotos"
+      ></UploadFile>
+    </div>
+    <f-space></f-space>
+    <f-button @on-click="handleOpenHuaBei">提交开通</f-button>
+  </div>
+</template>
+
+<script>
+import UploadFile from "@/components/old/upload/uploadImg";
+
+export default {
+  name: "add-account",
+  components: {
+    UploadFile
+  },
+  data() {
+    return {
+      alAccountTypeList: [],
+      accountType: "", // 选择的账号类型
+      uploadObj: {
+        licencePhotos: [], // 营业执照
+        schoolPermit:[],//办学许可证
+        cardFrontPhotos: [], // 身份证正面照
+        cardBackPhotos: [], // 身份证反面照
+        storeSignPhotos: [], // 门店招牌照
+        storeInnerPhotos: [] // 门店店内照
+      }
+    };
+  },
+  computed:{
+    isddxt(){
+      if(sessionStorage.isddxt == 1 || this.$route.query.zfbVersion == 6){
+        return true
+      }else{
+        return false
+      }
+    }
+  },
+  methods: {
+    pageGoBack() {
+      if(this.$route.query.isApp == 1){
+        this.$router.go(-1)
+      }else{
+        if (this.$route.query.accountType) {
+          this.$router.push({
+            path: "/huabei/alipay",
+            query: { accountType: this.$route.query.accountType,...this.$route.query }
+          });
+        } else {
+          this.$router.push({
+            path: "/huabei/alipay",
+            query: { ...this.$route.query }
+          });
+        }
+      }
+
+    },
+    // 开通花呗
+    handleOpenHuaBei() {
+      if (this.$tool.checkValEmpty(this.accountType)) {
+        this.$tool.toast("请选择支付宝类型");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.licencePhotos)) {
+        let str ;
+        if(this.isddxt){
+          str="请上传营业执照"
+        }else{
+          str="民办非企业登记证书"
+        }
+        this.$tool.toast(str);
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.schoolPermit)&&this.isddxt && this.accountType == 3) {
+        this.$tool.toast("请上传办学许可证");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.cardFrontPhotos)) {
+        this.$tool.toast("请上传身份证正面照");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.cardBackPhotos)) {
+        this.$tool.toast("请上传身份证反面照");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.storeSignPhotos)) {
+        this.$tool.toast("请上传门店招牌照");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.storeInnerPhotos)) {
+        this.$tool.toast("请上传门店店内照");
+        return false;
+      }
+        console.log(this.uploadObj)
+      let picIdList = {
+        licencePhotos: [],
+        schoolPermit:[],
+        cardFrontPhotos: [],
+        cardBackPhotos: [],
+        storeSignPhotos: [],
+        storeInnerPhotos: []
+      };
+
+      for (let i in this.uploadObj) {
+        this.uploadObj[i].forEach(item => {
+          picIdList[i].push(item.id + "");
+        });
+      }
+      console.log(JSON.parse(sessionStorage.getItem("huabei_addr")));
+      let submitInfo = {
+        aliAccount: sessionStorage.getItem("huabei_accountNumber"),
+        aliAccountName: sessionStorage.getItem("huabei_accountName"),
+        servicePhone: sessionStorage.getItem("huabei_servicePhone"),
+        addr: JSON.parse(sessionStorage.getItem("huabei_addr")),
+        aliAccountType: this.accountType,
+        zfbVersion: this.$route.query.zfbVersion,
+        ...picIdList
+      };
+      // if(sessionStorage.isddxt==1){
+      //   submitInfo.mcc = Number(JSON.parse(sessionStorage.getItem('huabei_category')))
+      // }
+      console.log(submitInfo);
+      // if (this.$route.query.typeId == "200011") {
+      //   this.$api.hbOpenXygOpen(submitInfo).then(res => {
+      //     this.$router.push({
+      //       path: "/huabei/open-result",
+      //       query: {
+      //         title: "信用购-花呗分期",
+      //         ...this.$route.query
+      //       }
+      //     });
+      //   });
+      // } else {
+        this.$api.hbOpenOpen(submitInfo).then(res => {
+          this.$router.push({
+            path: "/huabei/open-result",
+            query: {
+              title: "花呗分期",
+              ...this.$route.query
+            }
+          });
+        });
+      // }
+    },
+    //   获取返显资料
+    getMyMation() {
+      if (sessionStorage.getItem("huabei_detailInfo")) {
+        console.log(JSON.parse(sessionStorage.getItem("huabei_detailInfo")));
+        var obj = JSON.parse(sessionStorage.getItem("huabei_detailInfo"));
+        if(obj.aliAccountType){
+            this.accountType = obj.aliAccountType
+        }
+        if(obj.licencePhotos && obj.licencePhotos.length > 0){
+            this.uploadObj.licencePhotos = obj.licencePhotos
+        }
+        if(obj.schoolPermit && obj.schoolPermit.length > 0){
+            this.uploadObj.schoolPermit = obj.schoolPermit
+        }
+        if(obj.cardFrontPhotos && obj.cardFrontPhotos.length > 0){
+            this.uploadObj.cardFrontPhotos = obj.cardFrontPhotos
+        }
+        if(obj.cardBackPhotos && obj.cardBackPhotos.length > 0){
+            this.uploadObj.cardBackPhotos = obj.cardBackPhotos
+        }
+        if(obj.storeSignPhotos && obj.storeSignPhotos.length > 0){
+            this.uploadObj.storeSignPhotos = obj.storeSignPhotos
+        }
+        if(obj.storeInnerPhotos && obj.storeInnerPhotos.length > 0){
+            this.uploadObj.storeInnerPhotos = obj.storeInnerPhotos
+        }
+      }
+    }
+  },
+  created() {
+    if (typeof sessionStorage.huabei_accountTypeList !== "undefined") {
+      this.alAccountTypeList = JSON.parse(
+        sessionStorage.getItem("huabei_accountTypeList")
+      );
+    }
+    //this.getMyMation();
+    this.accountType = "";
+    this.uploadObj = {
+      licencePhotos: [], // 营业执照
+      schoolPermit:[],
+      cardFrontPhotos: [], // 身份证正面照
+      cardBackPhotos: [], // 身份证反面照
+      storeSignPhotos: [], // 门店招牌照
+      storeInnerPhotos: [] // 门店店内照
+    };
+    this.getMyMation();
+  }
+};
+</script>
+
+<style lang="less">
+.huabei-picture-page {
+  padding-top: 45px;
+  background: @color-white;
+  .pic-content {
+    padding: 0 24px;
+  }
+}
+</style>
diff --git a/src/views/old/merchant/lj/ljcreditStaging.vue b/src/views/old/merchant/lj/ljcreditStaging.vue
new file mode 100644
index 0000000..c7eb9fb
--- /dev/null
+++ b/src/views/old/merchant/lj/ljcreditStaging.vue
@@ -0,0 +1,81 @@
+<!--
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 10:11:37
+ * @Description:
+ -->
+<template>
+    <div class="creditStaging-page">
+        <x-header title="手机分期" :left-options="{backText:''}"></x-header>
+        <group>
+            <x-input title="状态" v-model="prodRef.typeIdName" text-align='right' readonly></x-input>
+        </group>
+    </div>
+</template>
+
+<script>
+    import { mapState } from 'vuex';
+export default {
+    name: 'creditStaging',
+    data() {
+        return {
+            prodRef: {
+                status: '',
+                prodSkDtlInfoList: [],
+                typeIdName: ''
+            }
+        };
+    },
+    computed:{
+        ...mapState(['userinfo'])
+    },
+    methods: {
+        init() {
+            let parObj = this.$route.query;
+            parObj.orgId = this.userinfo.orgId;
+            this.$api.prodRefInit(this.$route.query).then(res => {
+                this.prodRef = res.body;
+                if (this.$route.query.typeId == 200003) {
+                    if (res.body.status) {
+                        this.prodRef.typeIdName = '已分配';
+                    } else {
+                        this.prodRef.typeIdName = '未分配';
+                    }
+                }
+            });
+        }
+    },
+    created() {
+        this.init();
+    }
+};
+</script>
+
+<style lang="less" scoped>
+    .creditStaging-page {
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        & /deep/ .weui-switch {
+            width: 44px;
+            height: 24px;
+            &::before {
+                width: 42px;
+                height: 22px;
+            }
+            &::after {
+                width: 22px;
+                height: 22px;
+            }
+        }
+        .unit {
+            margin-left: 5px;
+            color: @color-text-main;
+            font-size: @font-size-medium;
+        }
+        .tips {
+            padding: 12px;
+            font-size: @font-size-small;
+            color: @color-text-three;
+        }
+    }
+</style>
diff --git a/src/views/old/merchant/productManagement.vue b/src/views/old/merchant/productManagement.vue
new file mode 100644
index 0000000..7dd8ff7
--- /dev/null
+++ b/src/views/old/merchant/productManagement.vue
@@ -0,0 +1,407 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-04 14:17:25
+ * @Description:
+ -->
+<template>
+    <div class="productManagement-page">
+        <!-- <x-header title="产品管理" :left-options="{backText:'',showBack:false}"></x-header> -->
+        <van-nav-bar title="产品管理" left-text="返回" left-arrow @click-left="onClickLeft" fixed style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar>
+        <!--<x-header slot="header" title="产品管理" :left-options="{backText:'',preventGoBack:true}"-->
+            <!--@on-click-back="pageGoBack()"></x-header>-->
+        <div class="productManagement-header">
+            <ul class="productManagement-list">
+                <!-- v-if="productList1.length" -->
+                <li class="item"  @click="handleJump(item)" v-for="(item,index) in productList1" :key="index">
+                    <img :src="item.icon" style="width:40px;height:40px"></img>
+                    <p style="margin-top:5px">商户收款</p>
+                </li>
+                <li class="item"  @click="goHbCp" v-if="productList2.length">
+                    <i class="iconfont iconhuabei" style="color:#108FEA;width:20px;height:20px"></i>
+                    <p style="margin-top:5px">花呗分期</p>
+                </li>
+                <li class="item" @click="handleJump(i)" v-for="(i,index) in productList3" :key="index" v-show="productList3.length">
+                    <img class="item-logo" :src="i.icon" :alt="i.typeName">
+                    <p>{{i.typeName}}</p>
+                    <div class="tip-box" :style="i.openStatus==0?{background:'#F2F2F2'}:i.openStatus==1?{background:'#FFF5D9'}:i.openStatus==2?{background:'#E3FAEF'}:i.openStatus==3?{background:'#FCF0F0'}:''">
+                        <p v-if="i.openStatus==2" style="color:#19BE6B;">已开通</p>
+                        <p v-if="i.openStatus==1" style="color:#FFC421;">开通中</p>
+                        <p v-if="i.openStatus==3" style="color:#FF6666;">未通过</p>
+                        <p v-if="i.openStatus==0" style="color:#999999;">未开通</p>
+                    </div>
+                </li>
+            </ul>
+        </div>
+        <f-no-data v-if="(productList2.length == 0) && (productList3.length == 0)"></f-no-data>
+    </div>
+</template>
+
+<script>
+    import { mapState } from 'vuex';
+    import Vue from 'vue';
+    import { NavBar } from 'vant';
+
+    Vue.use(NavBar);
+    export default {
+        name: 'productManagement',
+        data() {
+            return {
+                productList3: [],
+                productList2: [],
+                productList1: []
+            };
+        },
+        created(){
+            this.init();
+        },
+        computed:{
+            ...mapState(['userinfo']),
+        },
+        methods: {
+            goShsk(){
+
+            },
+            goHbCp() {
+                this.$router.push('/hbcp_sh')
+            },
+            onClickLeft() {
+                this.$router.push({
+                    path: '/main/mine'
+                });
+            },
+            handleJump(productItem) {
+                console.log('test', productItem)
+                let {
+                    typeId,
+                    prodId,
+                    openStatus,
+                    zfbVersion
+                } = productItem,
+                path = '',
+                title = '',
+                query = {
+                    typeId,
+                    prodId,
+                    zfbVersion,
+                    openStatus
+                };
+                if(zfbVersion){
+                    path = '/main/hb-product'
+                }
+                if(typeId==='200014'){
+                    switch(openStatus){
+                        case 2 :
+                            path = "/huabei/staging_hbjl";
+                            break;
+                    }
+                    query={
+                        typeId,
+                        orgType: this.userinfo.orgType,
+                        orgId: this.userinfo.orgId
+                    }
+                }
+                if(typeId==='200010'){
+                    switch(openStatus){
+                        case 0:
+                            path = '/huabei/open';
+                            break;
+                        case 1:
+                        case 3:
+                            path = '/huabei/open-result';
+                            break;
+                        case 2:
+                            path = '/shtx/staging';
+                            break;
+                        default:
+                            path = '/huabei/open';
+                            break;
+                    }
+                }
+                if(typeId === '200008'){
+                    path = '/channel-selection_sh';
+                }
+                if(typeId==='200009'){
+                    typeId = '200002'
+                }
+                //  openStatus 1-开通中,2-已开通, 3-未开通
+                //  openStatus 0-待开通  1-开通中,2-已开通, 3-开通失败
+                // typeId 200001 信用卡分期
+
+                if (typeId === '200001') {
+                    path = '/creditStaging';
+                    query = {
+                        typeId,
+                        orgType: this.userinfo.orgType,
+                        orgId: this.userinfo.id
+                    }
+                } else if (typeId === '200002') {
+                    switch (openStatus) {
+                        case 0:
+                            path = '/huabei/open';
+                            break;
+                        case 1:
+                        case 3:
+                            path = '/huabei/open-result';
+                            break;
+                        case 2:
+                            if(typeId=='200008'){
+                                path = '/huabei/staging_dmf';
+                            }else{
+                                path = '/huabei/staging';
+                            }
+                            break;
+                        default:
+                            path = '/huabei/open';
+                            break;
+                    }
+                    if(typeId==='200002'){
+                        title = '花呗分期';
+                    }else{
+                        title = '商户收款';
+                    }
+                } else if (typeId === '200003') {
+                    path = '/ljcreditStaging';
+                    query = {
+                        typeId,
+                        orgType: this.userinfo.orgType,
+                        orgId: this.userinfo.id
+                    }
+                    // 购机直降
+                } else if (typeId === '200004') {
+                    // 0-待开通,1-开通中,2-已开通,3-开通失败
+                    switch (openStatus) {
+                        case 0:
+                            path = '/gjzj/open';
+                            break;
+                        case 1:
+                        case 2:
+                        case 3:
+                            path = '/gjzj/open-result';
+                            break;
+                        default:
+                            path = '/huabei/open';
+                            break;
+                    }
+                    query = {
+                        typeId,
+                        openStatus: openStatus,
+                        icon: productItem.icon,
+                    }
+                }else if (typeId === '200005') {
+                    // 0-待开通,1-开通中,2-已开通,3-开通失败
+                    switch (openStatus) {
+                        case 0:
+                            path = '/heyd/merOpen';
+                            break;
+                        case 1:
+                        case 2:
+                        case 3:
+                            path = '/heyd/open-result';
+                            break;
+                        case 4:
+                            path = '/heyd/open-result';
+                            break;
+                        default:
+                            path = '/heyd/merOpen';
+                            break;
+                    }
+                    query = {
+                        typeId,
+                        openStatus: openStatus,
+                        orgType: this.userinfo.orgType,
+                        icon: productItem.icon,
+                    }
+                }else if (typeId === '200011') {
+                    if(productItem.prodId=='30000012'){
+                        switch (openStatus) {
+                            case 0:
+                                path = '/huabei/open';
+                                break;
+                            case 1:
+                            case 3:
+                                path = '/huabei/open-result';
+                                break;
+                            case 2:
+                                path = '/huabei/staging';
+                                break;
+                            default:
+                                path = '/huabei/open';
+                                break;
+                        }
+                        title = '信用购-花呗分期';
+                        query = {
+                            typeId,
+                            openStatus: openStatus,
+                            orgType: this.userinfo.orgType,
+                            icon: productItem.icon,
+                            prodId:productItem.prodId
+                        }
+                    }else{
+                        // 0-待开通,1-开通中,2-已开通,3-开通失败
+                        switch (openStatus) {
+                            case 0:
+                                path = '/xyg/merOpen';
+                                break;
+                            case 1:
+                            case 2:
+                            case 3:
+                                path = '/xyg/open-result';
+                                break;
+                            case 4:
+                                path = '/xyg/open-result';
+                                break;
+                            default:
+                                path = '/xyg/merOpen';
+                                break;
+                        }
+                        title = '信用购-储蓄卡';
+                        query = {
+                            typeId,
+                            openStatus: openStatus,
+                            orgType: this.userinfo.orgType,
+                            icon: productItem.icon,
+                            prodId:productItem.prodId
+                        }
+                    }
+
+                }else if (typeId === '200017') {
+                    // 0-待开通,1-开通中,2-已开通,3-开通失败
+                    switch (openStatus) {
+                        case 0:
+                            path = '/gzzj/merOpen';
+                            break;
+                        case 1:
+                        case 2:
+                        case 3:
+                            path = '/gzzj/open-result';
+                            break;
+                        case 4:
+                            path = '/gzzj/open-result';
+                            break;
+                        default:
+                            path = '/gzzj/merOpen';
+                            break;
+                    }
+                    query = {
+                        typeId,
+                        openStatus: openStatus,
+                        orgType: this.userinfo.orgType,
+                        icon: productItem.icon,
+                    }
+                }
+                query.title = title;
+                this.$router.push({
+                    path,
+                    query
+                });
+            },
+            //初始化
+            init() {
+                this.$api.prodManagerInit().then(res => {
+                    this.productList3 = [...res.body.prodTypeRespVoList3];
+                    this.productList2 = [...res.body.prodTypeRespVoList2];
+                    this.productList1 = []
+                    this.productList2.forEach(item=>{
+                        if(item.prodId == 30000008){
+                            this.productList1.push(item)
+                        }
+                    })
+                    console.log(this.productList1)
+                    localStorage.setItem('hbcp_sh', JSON.stringify(res.body.prodTypeRespVoList2))
+                });
+            }
+        },
+    };
+
+</script>
+
+<style lang="less">
+
+    .item-logo{
+        display: block-line;
+        vertical-align: middle;
+        width: 45px;
+        height: 45px;
+        margin-left: auto;
+    }
+    .productManagement-page {
+        // padding-top: 54px;
+        background-color: #F5F5F7;
+        min-height: 100vh;
+        // padding-top: 44px;
+
+        .productManagement-header {
+            height: 100%;
+            background: #F5F5F7;
+            //margin-top: 50px;
+            padding-top: 50px;
+            .productManagement-list {
+                box-sizing: border-box;
+                padding:0 25px 50px;
+                border-radius:3px;
+                overflow: hidden;
+                height: 100%;
+                width: 359px;
+                margin: auto;
+                background: #fff;
+                display: flex;
+                flex-wrap: wrap;
+                justify-content: space-between;
+                .item{
+                    position: relative;
+                    margin-top: 28px;
+                    width:35vw;
+                    height:80px;
+                    background:rgba(255,255,255,1);
+                    box-shadow:0px 0px 15px 0px rgba(66,61,93,0.08);
+                    border-radius:8px;
+                    .tip-box{
+                        position: absolute;
+                        width:45px;
+                        height:16px;
+                        line-height: 16px;
+                        border-radius:8px 0px 0px 8px;
+                        top: 7px;
+                        right: 0;
+                        p{
+                            font-size: 10px;
+                        }
+                    }
+                }
+                .open{
+                    color:#19BE6B;
+                    margin-top: 8px;
+                }
+                .notOpen{
+                    color:#ED4014;
+                    margin-top: 8px;
+                }
+                .iconfont {
+                    font-size: 36px;
+                    color: @color-text-placeholder;
+                }
+
+                .usable {
+                    color: @color-text-three  !important;
+                }
+
+                li {
+                    list-style: none;
+                    float: left;
+                    width: 49%;
+                    text-align: center;
+                    padding-top: 20px;
+
+                    p {
+                        font-size: @font-size-small;
+                    }
+                }
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/shtx/open.vue b/src/views/old/merchant/shtx/open.vue
new file mode 100644
index 0000000..d39141b
--- /dev/null
+++ b/src/views/old/merchant/shtx/open.vue
@@ -0,0 +1,140 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-09-26 15:50:59
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-26 15:50:59
+ * @Description: 
+ -->
+<template>
+    <div class="open-huabei-page h-100-g">
+        <x-header :title="'开通' + this.$route.query.title" :left-options="{backText:'',preventGoBack:true}"
+                  @on-click-back="pageGoBack"></x-header>
+        <div class="tip">请用支付宝客户端,扫一扫</div>
+        <div class="qrcode-url" v-if="qrCodeUrl">
+            <img :src="qrCodeUrl" alt="">
+        </div>
+        <f-space></f-space>
+        <f-button @on-click="handleNextStep"
+                  :disabled="buttonText === '等待授权'">{{ buttonText }}</f-button>
+    </div>
+</template>
+
+<script>
+    import QRCode from 'qrcode'
+
+    export default {
+        name: 'huaBeiOpen',
+        data() {
+            return {
+                isClickNextBtn: false, // 是否点击下一步btn的状态
+                alAccountTypeList: [],
+                qrCodeUrl: '', // 二维码图片地址
+                timeId: '', // 轮询时间id
+                buttonText: '等待授权' // 按钮文字
+            };
+        },
+        methods: {
+            // 点击返回
+            pageGoBack () {
+                this.$router.push({
+                    path: '/main/productManagement'
+                });
+            },
+            // 检查授权
+            checkAuth (isNext) {
+                // authStatus: 0 未授权   1授权---用户授权后才能执行下一步
+                this.$api.checkAuth({}).then((res) => {
+                    if (res.body.authStatus === 1) {
+                        this.buttonText = '下一步';
+                        clearTimeout(this.timeId);
+                        if (isNext) {
+                            this.$router.push({
+                                path: '/huabei/alipay',
+                                query: {
+                                    typeId: this.$route.query.typeId, // 产品typeId
+                                }
+                            });
+                        }
+                    } else if(res.body.authStatus === 2){
+                        // 3秒钟,轮询一次
+                        this.$notify_success('请重新进入此页面');
+                    }else {
+                        // 3秒钟,轮询一次
+                        this.timeId = setTimeout(() => {
+                            this.checkAuth();
+                        }, 3000);
+                    }
+                }, (error) => {
+                    clearTimeout(this.timeId);
+                });
+            },
+            // 获取列表
+            init () {
+                this.$api.hbOpenInit({}).then((res) => {
+                    // 这个类型列表(缓存在初始化列表, 等待上传图片的是,支付宝类型)
+                    let alAccountTypeList = res.body.alAccountTypeList || [];
+                    sessionStorage.setItem('huabei_accountTypeList', JSON.stringify(alAccountTypeList));
+                    // 1-图片,2-路径
+                    if (res.body.urlType === 1) {
+                        this.qrCodeUrl = res.body.qrCodeUrl;
+                    } else if (res.body.urlType === 2) {
+                        // 生成图片
+                        QRCode.toDataURL(res.body.qrCodeUrl)
+                            .then(url => {
+                                this.qrCodeUrl = url;
+                            })
+                            .catch(err => {
+                                console.error(err)
+                            });
+                    }
+
+                });
+                // 进入这个页面,就进行授权
+                this.checkAuth(false);
+            },
+            // 点击下一步
+            handleNextStep () {
+                this.checkAuth(true);
+            }
+        },
+        beforeRouteLeave(to,form,next){
+            clearTimeout(this.timeId);
+            this.qrCodeUrl = null;
+            next();
+        },
+        // destroyed() {
+        //     clearTimeout(this.timeId);
+        //     this.qrCodeUrl = null;
+        // },
+        created() {
+            this.qrCodeUrl = '';
+            this.timeId =  '';
+            this.buttonText = '等待授权';
+            this.isClickNextBtn = false;
+            this.init();
+        }
+    };
+</script>
+
+<style lang="less">
+    .open-huabei-page {
+        padding-top: 54px;
+        background-color: #f1f1f1;
+
+        .tip {
+            color: #999;
+            text-align: center;
+            font-size: 14px;
+            line-height: 1.6;
+            padding: 14px 0;
+        }
+        .qrcode-url {
+            text-align: center;
+            img {
+                width: 60%;
+                height: auto;
+                border: 5px solid @color-border-theme;;
+            }
+        }
+    }
+</style>
diff --git a/src/views/old/merchant/shtx/staging.vue b/src/views/old/merchant/shtx/staging.vue
new file mode 100644
index 0000000..f9158ad
--- /dev/null
+++ b/src/views/old/merchant/shtx/staging.vue
@@ -0,0 +1,268 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-09-26 15:29:46
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-06-28 11:17:36
+ * @Description: 
+ -->
+<template>
+  <div class="huabei-detail-page">
+    <van-nav-bar
+      :title="this.$route.query.title"
+      left-text="返回"
+      left-arrow
+      @click-left="onClickLeft"
+      fixed
+      style="line-height: 43px;"
+    >
+      <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+    <div class="top-back"></div>
+    <div class="info-box">
+      <div class="info-box-top">
+        <van-cell
+          :title="alipayInfo.accountType === 1 ? '姓名' : '企业名称'"
+          :value="alipayInfo.accountName"
+          title-class="tit-class"
+          value-class="val-class"
+        />
+        <van-cell
+          title="支付宝账号"
+          :value="alipayInfo.accountNumber"
+          title-class="tit-class"
+          value-class="val-class"
+        />
+        <van-cell
+          title="支付宝类型"
+          :value="alipayInfo.accountTypeName"
+          title-class="tit-class"
+          value-class="val-class"
+        />
+        <van-cell
+          title="商户编号"
+          :value="alipayInfo.merNo"
+          title-class="tit-class"
+          value-class="val-class"
+        />
+        <van-cell
+          title="开通日期"
+          :value="alipayInfo.authTime"
+          title-class="tit-class"
+          value-class="val-class"
+        />
+      </div>
+      <div class="info-box-bottom" v-if="prodRef.length > 1">
+        <div class="left-cr"></div>
+        <div class="right-cr"></div>
+        <div class="rate-title">费率</div>
+          <div class="item" v-for="i in prodRef" :key="i.termName">
+            <span>{{i.termName}}</span>
+            <span>{{i.platRate}} <span v-show="i.termName !== '期数'">%</span></span>
+            <span>{{i.zfbRate}} <span v-show="i.termName !== '期数'">%</span></span>
+        </div>
+      </div>
+    </div>
+    <!-- <x-header title="商户贴息"  :left-options="{backText:''}"></x-header>
+        <group>
+            <x-input title="支付宝类型"
+                     :max="20"
+                     text-align="right"
+                     readonly
+                     v-model.trim="alipayInfo.accountTypeName"></x-input>
+            <x-input title="支付宝账号"
+                     readonly
+                     text-align="right"
+                     v-model.trim="alipayInfo.accountNumber"></x-input>
+            <x-input :title="alipayInfo.accountType === 1 ? '姓名' : '企业名称'"
+                     :max="20"
+                     readonly
+                     text-align="right"
+                     v-model.trim="alipayInfo.accountName"></x-input>
+            <x-input :title="'商户编号'"
+                     :max="20"
+                     readonly
+                     text-align="right"
+                     v-model.trim="alipayInfo.merNo"></x-input>
+        </group>
+        <div v-if="prodRef instanceof Array && prodRef.length" class="rate-title">费率</div>
+        <group v-if="prodRef instanceof Array && prodRef.length">
+            <x-input v-for="i in prodRef"
+                     :key="i.termName"
+                     :title="i.termName"
+                     v-model="i.rate"
+                     readonly
+                     text-align="right">
+                <div slot="right" class="unit">&nbsp;%</div>
+            </x-input>
+    </group>-->
+  </div>
+</template>
+
+<script>
+export default {
+  name: "add-account",
+  data() {
+    return {
+      prodRef: [{termName: '期数', platRate: '智享服务费率', zfbRate: '花呗分期手续费率'}],
+      alipayInfo: {
+        accountNumber: "", // 账号
+        accountName: "", // 账号名称
+        accountType: "", // 账户类型 1为个人 2为企业
+        accountTypeName: "",
+        merNo: "",
+        authTime: ""
+      }
+    };
+  },
+  methods: {
+    // 返回上一页
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    // 初始化页面
+    init() {
+      this.$api
+        .merPayInfo({
+          zfbVersion: this.$route.query.zfbVersion,
+          prodId: this.$route.query.prodId
+        })
+        .then(res => {
+          this.prodRef = [...this.prodRef, ...res.body.prodBaseTermInfVo]
+          this.alipayInfo = {
+            accountNumber: res.body.payCode,
+            merNo: res.body.merNo,
+            accountName: res.body.payName,
+            authTime: res.body.authTimeStr,
+            accountType: Number(res.body.payType),
+            accountTypeName: res.body.payType === 1 ? "个人" : "企业"
+          };
+        });
+    }
+  },
+  created() {
+    this.init();
+  }
+};
+</script>
+
+<style lang="less">
+.huabei-detail-page {
+  padding-top: 45px;
+  background: #f5f5f7;
+  min-height: 100vh;
+  /deep/.van-cell__value {
+    position: relative;
+    overflow: visible;
+    text-align: right;
+    vertical-align: middle;
+  }
+  .top-back {
+    width: 100%;
+    height: 140px;
+    background: linear-gradient(
+      180deg,
+      rgba(85, 78, 122, 1),
+      rgba(66, 61, 93, 1)
+    );
+  }
+  .info-box {
+    width: 92%;
+    background: rgba(255, 255, 255, 1);
+    box-shadow: 0px 18px 15px 0px rgba(40, 23, 92, 0.04);
+    border-radius: 3px;
+    position: absolute;
+    top: 96px;
+    left: 4%;
+    .info-box-bottom {
+      box-sizing: border-box;
+      padding: 0 17px 20px 17px;
+      position: relative;
+      background-color: #fff;
+      .left-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: #f5f5f7;
+        top: -7px;
+        left: -7px;
+      }
+      .right-cr {
+        position: absolute;
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: #f5f5f7;
+        top: -7px;
+        right: -7px;
+      }
+    }
+
+      .item {
+        width: 100%;
+        margin-top: 5px;
+        padding: 0 10px;
+        box-sizing: border-box;
+        display: inline-block;
+        background: rgba(249, 247, 252, 1);
+        height: 40px;
+        line-height: 40px;
+        display: flex;
+        justify-content: space-around;
+        span {
+          text-align: center;
+        }
+        span:nth-child(1) {
+          width: 15%;
+        }
+        span:nth-child(2) {
+          width: 40%;
+        }
+        span:nth-child(3) {
+          width: 45%;
+        }
+      }
+  }
+  .tit-class {
+    min-width: 30%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(153, 153, 153, 1);
+  }
+  .val-class {
+    min-width: 69%;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 500;
+    color: rgba(51, 51, 51, 1);
+  }
+  .van-cell:not(:last-child)::after {
+    border-bottom: 0;
+  }
+  .rate-title {
+    padding: 20px 0 0 0;
+    font-size: 14px;
+    color: #999999;
+    font-weight: normal;
+    line-height: 1.6;
+    border-top: 1px dashed #e6e6e6;
+  }
+  .unit {
+    font-size: 14px;
+  }
+}
+// .huabei-detail-page {
+//   padding-top: 45px;
+//     .rate-title {
+//         padding: 20px 15px 10px;
+//         font-size: 16px;
+//         color: #333;
+//         font-weight: normal;
+//         line-height: 1.6;
+//     }
+//     .unit {
+//         font-size: 14px;
+//     }
+// }
+</style>
diff --git a/src/views/old/merchant/tonglian/open.vue b/src/views/old/merchant/tonglian/open.vue
new file mode 100644
index 0000000..4296ca0
--- /dev/null
+++ b/src/views/old/merchant/tonglian/open.vue
@@ -0,0 +1,215 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-08-10 14:02:37
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-10-23 09:47:15
+ * @Description: 通联通道开通
+-->
+<template>
+  <div class="tonglian-open-page">
+    <v-navbar title="开通通联通道"></v-navbar>
+    <div class="info-box">
+      <van-cell-group>
+        <van-field
+          label-class="label-class"
+          label-width="200px"
+          input-align="right"
+          maxlength="11"
+          disabled
+          v-model="legalMblNo"
+          label="法人手机号"
+        />
+        <van-field
+          v-model="authCode"
+          input-align="right"
+          center
+          clearable
+          maxlength="6"
+          label="验证码"
+          placeholder="请输入短信验证码"
+        >
+          <template #button>
+            <button class="code-btn" :disabled="btnDis" @click="getCode">{{btnText}}</button>
+          </template>
+        </van-field>
+      </van-cell-group>
+    </div>
+    <p style="font-size:12px;color:#666;padding:20px 1vw">您正在开通网商银行订单账款服务,开通后可使用智享收银台钱包服务。请点击合同查看并确认后勾选以提交申请。</p>
+   
+    <van-checkbox v-model="checked" icon-size="16px" checked-color="#896EDB" style="padding:0 2vw">
+      <span style="font-size:12px;color:#896EDB" @click.stop="ShowAgreen = true">《网商银行订单账款合同》</span>
+    </van-checkbox>
+        
+     
+   
+   
+    <van-button
+      round
+      size="large"
+      @click="goNext"
+      color="#896EDB"
+      style="width:86vw;margin-left:7vw;margin-top:60px"
+    >提交申请</van-button>
+    <van-popup v-model="ShowAgreen">
+      <div class="agreenBox">
+        <div class="agreen-html" v-html="Agreend"></div>
+          <div class="close-agreen" @click="ShowAgreen = false">
+            <van-icon name="close" />
+          </div>
+        </div>
+    </van-popup>
+  </div>
+</template>
+<script>
+import Vue from "vue";
+import { Field, Toast } from "vant";
+import { mapState } from "vuex";
+Vue.use(Toast);
+Vue.use(Field);
+export default {
+  data() {
+    return {
+      btnDis: false,
+      btnText: "发送验证码",
+      authCode: "",
+      timer: "",
+      hasGetCode:1,
+      ShowAgreen:true,
+      checked:'',
+    };
+  },
+  computed: {
+    ...mapState(['userinfo']),
+    legalMblNo() {
+      return JSON.parse(sessionStorage.getItem(`sib_tl_openInfo_${this.userinfo.orgId}`)).detailInfo
+        .legalMblNo;
+    },
+  },
+  created(){
+    this.Agreend = agreement4
+  },
+  methods: {
+    /**
+     * @description:下一步跳转
+     * @return void
+     * **/
+    goNext() {
+      if(this.authCode==''){
+        Toast.fail('请输入验证码');
+        return  false
+      }
+      if(!this.checked){
+        Toast.fail('请阅读并勾选《网商银行订单账款合同》');
+        return  false
+      }
+      let obj = JSON.parse(sessionStorage.getItem(`sib_tl_openInfo_${this.userinfo.orgId}`));
+     
+      let picIdList = {
+        licencePhotos: obj.detailInfo.licencePhotos,
+        cardFrontPhotos: obj.detailInfo.cardFrontPhotos,
+        cardBackPhotos: obj.detailInfo.cardBackPhotos,
+        handCardPhotos: obj.detailInfo.handCardPhotos,
+        storeInnerPhotos: obj.detailInfo.storeInnerPhotos,
+        storeSignPhotos: obj.detailInfo.storeSignPhotos,
+        industryLicensePhotos: obj.detailInfo.industryLicensePhotos
+      };
+      // for (let i in this.uploadObj) {
+      //   this.uploadObj[i].forEach(item => {
+      //     picIdList[i].push(item.id + "");
+      //   });
+      // }
+      if(this.hasGetCode==2){
+        this.$api
+        .tltMerOpenOpen({
+          ...obj.detailInfo,
+          authCode:this.authCode
+        })
+        .then((res) => {
+          sessionStorage.removeItem(`sib_tl_openInfo_${this.userinfo.orgId}`)
+          sessionStorage.removeItem(`sib_tl_pic_${this.userinfo.orgId}`)
+          this.$router.push({
+            path: "/tonglian/open-result",
+            query: {
+              ...this.$route.query,
+              nck:true
+            },
+          });
+        });
+      }else{
+        Toast.fail('请获取验证码');
+      }
+      
+    },
+    /**
+     * @description:获取验证码
+     * @return void
+     * **/
+    getCode() {
+      this.$api
+        .tltMerOpenSendSmsCode({
+          mblNo: this.legalMblNo,
+        })
+        .then((res) => {
+          this.hasGetCode = 2
+          this.btnDis = true;
+          this.btnText = 60;
+          this.timer = setInterval(() => {
+            if (this.btnText == 1) {
+              this.btnText = "重新获取";
+              this.btnDis = false;
+              clearInterval(this.timer);
+            } else {
+              this.btnText = --this.btnText;
+            }
+          }, 1000);
+        });
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+.tonglian-open-page {
+  & {
+    min-height: 100vh;
+    background: #f5f5f7;
+  }
+  /deep/.label-class{
+    font-size: 16px;
+    color: #333;
+  }
+  .info-box {
+    margin-top: 10px;
+    width: 98vw;
+    margin-left: 1vw;
+  }
+  .code-btn {
+    border: 0;
+    border-left: 1px solid #e6e6e6;
+    background: #fff;
+    outline: none;
+    color: #896edb;
+    padding-right: 0;
+    text-align: right;
+  }
+  .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>
\ No newline at end of file
diff --git a/src/views/old/merchant/tonglian/openResult.vue b/src/views/old/merchant/tonglian/openResult.vue
new file mode 100644
index 0000000..848a400
--- /dev/null
+++ b/src/views/old/merchant/tonglian/openResult.vue
@@ -0,0 +1,327 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-08-10 15:48:30
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-04 15:45:07
+ * @Description: 
+-->
+<template>
+  <div class="tonglian-open-res-page">
+    <!-- <v-navbar title="开通通联通道"></v-navbar> -->
+    <van-nav-bar
+      title="开通通联通道"
+      left-arrow
+      @click-left="onClickLeft"
+      fixed
+      style="line-height: 43px"
+    >
+      <i
+        class="iconfont iconzuojiantou"
+        slot="left"
+        style="font-size: 25px"
+      ></i>
+    </van-nav-bar>
+    <div class="res-box" v-show="showContent || $route.query.nck">
+      <img
+        v-if="status == 0"
+        src="../../../../../static/img/post_agree.png"
+        alt="提交成功"
+      />
+      <img
+        v-if="status == 1 || status == 4"
+        src="../../../../../static/img/img_refuse.png"
+        alt="审核失败或签约失败"
+      />
+      <img
+        v-if="status == 2 || status == 6"
+        src="../../../../../static/img/img_auditing.png"
+        alt="审核中"
+      />
+      <img
+        v-if="status == 3 || status == 7"
+        src="../../../../../static/img/img_agree.png"
+        alt="审核通过"
+      />
+      <img
+        v-if="status == 5"
+        src="../../../../../static/img/img_reupload.png"
+        alt="图片不清晰"
+      />
+      <img
+        v-if="status == 8"
+        src="../../../../../static/img/paying.png"
+        alt="打款中"
+      />
+      <p>{{ openResText }}</p>
+      <p v-if="status == 8" style="padding: 0 15%;line-height:20px">我们将向您的对公结算银行卡进行一笔小额转账以确保银行卡信息准确无误</p>
+      <p v-if="status == 0 || status == 5">{{ tipText }}</p>
+      <!-- || status != 7 && verificationDone == 'done' -->
+      <button @click="getRefresh" v-if="status != 7 && status != 8">
+        {{ btnTextOfFunction }}
+      </button>
+      <button v-if="status == 0 || status == 7" @click="goNext">
+        {{ btnTextOfRouter }}
+      </button>
+      <div class="dk-bankNo" v-if="status==8">
+        <p>打款银行卡号:{{bankCard}}</p>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import Vue from 'vue';
+import { Dialog,Toast } from 'vant';
+
+// 全局注册
+Vue.use(Toast);
+Vue.use(Dialog);
+export default {
+  data() {
+    return {
+      uploadFileTypes:[],//动态显示数组
+      timer:'',//跳转定时器
+      timer2:"",
+      show:false,
+      showContent: false,
+      openResText: "",//状态文字解释
+      btnTextOfRouter: "",
+      btnTextOfFunction: "",
+      tipText: "",
+      status: '', //开通状态0-提交成功,1-审核失败,2-初审中,3-初审通过 4-签约失败 5-图片不清晰 6-终审中 7-审核成功 打款中-8 9-打款验证
+      merType:"",//商户类型
+      canGoverification:1, //是否可以前往打款验证  0-不是  1-是
+      verificationDone:'',
+      bankCard:'',//打款银行卡号
+    };
+  },
+  created() {
+    this.verificationDone = this.$route.query.verificationDone
+    this.getStatus();
+  },
+  methods: {
+    /**
+     * @description 打款验证失败弹窗确认
+     * @returns void
+     * **/ 
+    onconfirm(){
+      this.$router.push({
+        path:'/tonglian/verification'
+      })
+    },
+    onClickLeft(){
+      if(this.$route.query.isApp == 1){
+        this.$router.push({
+            path:'/app/home'
+        });
+      }else{
+        this.$router.push({
+            path:'/main/mine'
+        });
+      }
+        
+    },
+    /**
+     * @description:去首页
+     * @returns void
+     * **/
+    goNext() {
+      if(this.$route.query.isApp == 1){
+        this.$router.push("/app/home");
+      }else{
+        this.$router.push("/main/mine");
+      }
+    },
+    /**
+     * @description:刷新按钮
+     * @return void
+     * **/
+    getRefresh() {
+      if (this.status == 0 || this.status == 2) {
+        this.getStatus();
+      } else if (this.status == 3) {
+        // 跳转签约页面
+        this.$api.tltMerOpenQueryElectUrl().then(res=>{
+          window.location.href = res.body
+        })
+      } else if (this.status == 1) {
+        this.$api.tltMerOpenReOpenMer().then(res=>{
+            this.$router.push("/tonglian/startOpen");
+        })
+      } else if (this.status == 5) {
+        this.$router.push({
+            path:"/tonglian/store-pictures",
+            query:{
+                merType:this.merType,
+                isUploadAgain:1,
+                zfbVersion: 5,
+                uploadFileTypes:JSON.stringify(this.uploadFileTypes)
+            }
+        });
+      } else if (this.status == 4) {
+        // 跳转签约页面重新签约
+        this.$api.tltMerOpenQueryElectUrl().then(res=>{
+            window.location.href = res.body
+        })
+      }else if (this.status == 6) {
+        this.getStatus();
+      } else if (this.status == 7) {
+        // 跳转办单页面
+        if(this.$route.query.isApp == 1){
+          this.$router.push("/app/home");
+        }else{
+          this.$router.push("/main/mine");
+        }
+        
+      }
+    },
+    /**
+     * @description:获取状态
+     * @return void
+     * **/
+    getStatus() {
+      clearInterval(this.timer)
+      this.$api
+        .tltMerOpenFindOpenSts()
+        .then((res) => {
+          this.merType = res.body.merType
+          this.status = res.body.pageNum
+          this.uploadFileTypes = res.body.uploadFileTypes
+          this.canGoverification = res.body.payStatus
+          
+          switch (this.status) {
+            case 0:
+              this.openResText = "提交成功";
+              this.tipText = "申请已提交请耐心等待";
+              this.btnTextOfFunction = "刷新";
+              this.btnTextOfRouter = "返回首页";
+              break;
+            case 1:
+              this.openResText = "审核失败";
+              this.btnTextOfFunction = "重新开通";
+              break;
+            case 2:
+              this.openResText = "初审中";
+              this.btnTextOfFunction = "刷新";
+              break;
+            case 3:
+              this.openResText = "审核通过";
+              this.btnTextOfFunction = "去签约";
+              break;
+            case 4:
+              this.openResText = "签约失败";
+              this.btnTextOfFunction = "重新签约";
+              break;
+            case 5:
+              this.openResText = "图片不清晰";
+              this.tipText = "请重新上传图片";
+              this.btnTextOfFunction = "上传图片";
+              break;
+            case 6:
+              this.openResText = "终审中";
+              this.btnTextOfFunction = "刷新";
+              break;
+            case 7:
+              this.openResText = "审核通过";
+              this.btnTextOfRouter = "返回首页";
+              break;
+            case 8:
+              this.bankCard = res.body.bankCard
+              this.openResText = "打款中,请稍后"
+              this.timer = setInterval(()=>{
+                this.getStatus()
+              },5000)
+              break;
+            case 9:
+              this.$router.push({
+                path:'/tonglian/verification',
+                query:{
+                  ...this.$route.query
+                }
+              })
+              break;
+          }
+          this.showContent = true;
+        })
+        .catch((err) => {});
+    },
+  },
+  beforeRouteLeave (to, from, next) {
+    // ...
+    Toast.clear()
+    clearInterval(this.timer)
+    clearInterval(this.timer2)
+    next()
+  }
+};
+</script>
+<style lang="less" scoped>
+.tonglian-open-res-page {
+  & {
+    min-height: 100vh;
+    background: #f5f5f7;
+    padding-top: 54px;
+  }
+  .res-box {
+    width: 96vw;
+    height: 365px;
+    //margin-top: 56px;
+    margin-left: 2vw;
+    background: #fff;
+    text-align: center;
+    padding-top: 35px;
+    img {
+      width: 115px;
+      height: 106px;
+    }
+    p:nth-of-type(1) {
+      margin-top: 20px;
+      font-size: 16px;
+      font-family: PingFang SC;
+      font-weight: 500;
+      color: rgba(58, 58, 58, 1);
+    }
+    p:nth-of-type(2) {
+      margin-top: 8px;
+      font-size: 12px;
+      font-family: PingFang SC;
+      font-weight: 500;
+      color: rgba(153, 153, 153, 1);
+    }
+    button:nth-of-type(1) {
+      width: 320px;
+      height: 44px;
+      background: rgba(137, 110, 219, 1);
+      border-radius: 22px;
+      outline: none;
+      border: 0;
+      color: #fff;
+      margin-top: 50px;
+      margin-bottom: 20px;
+    }
+    button:nth-of-type(2) {
+      width: 320px;
+      height: 44px;
+      background: rgba(255, 255, 255, 1);
+      border: 1px solid rgba(137, 110, 219, 1);
+      border-radius: 22px;
+      color: rgba(137, 110, 219, 1);
+    }
+    .dk-bankNo{
+      margin-top: 13px;
+      display: inline-block;
+      width: 262px;
+      height: 28px;
+      background: #FFFFFF;
+      border: 1px solid #EEEEEE;
+      border-radius: 14px;
+      text-align: center;
+      p{
+        color: #666666;        
+        font-size: 12px;
+        margin-top: 0;
+        line-height: 30px;
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/merchant/tonglian/staging.vue b/src/views/old/merchant/tonglian/staging.vue
new file mode 100644
index 0000000..694a217
--- /dev/null
+++ b/src/views/old/merchant/tonglian/staging.vue
@@ -0,0 +1,199 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-09-26 15:29:46
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-08 14:42:58
+ * @Description: 通联开通详情
+ -->
+<template>
+  <div class="huabei-detail-page">
+    <van-nav-bar
+      :title="this.$route.query.title"
+      left-text="返回"
+      left-arrow
+      @click-left="onClickLeft"
+      fixed
+      style="line-height: 43px;"
+    >
+      <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+    <div class="top-back"></div>
+    <div v-show="this.$route.query.typeId == 200008">
+      <HstagingDetailDmf  :infoList="infoList" :rateList="prodRef" :rateListRule="rateListRule" :hasTitle="false"></HstagingDetailDmf>
+    </div>
+    <div v-show="this.$route.query.typeId != 200008">
+      <HstagingDetail  :infoList="infoList" :rateList="prodRef" :rateListRule="rateListRule" :hasTitle="true"></HstagingDetail>
+    </div>
+  </div>
+</template>
+
+<script>
+import HstagingDetailDmf from "@/components/common/h-staging-detail-dmf.vue";
+import HstagingDetail from "@/components/common/h-staging-detail.vue";
+export default {
+  name: "add-account",
+  components:{
+    HstagingDetail,HstagingDetailDmf
+  },
+  data() {
+    return {
+        prodRef: [{termName: '期数', platRate: '智享服务费率', zfbRate: '花呗分期手续费率'}],
+        detailInfo:{},
+        alipayInfo: {},
+        infoList:[],
+        rateListRule:''
+    };
+  },
+  computed:{
+    addrss(){
+      if(this.detailInfo.bankAddr){
+         return this.detailInfo.bankAddr.province.name + '-' + this.detailInfo.bankAddr.city.name
+      }else{
+        return ''
+      }
+    },
+    userAddrss(){
+      if(this.detailInfo.addr){
+         return this.detailInfo.addr.province.name + '-' + this.detailInfo.addr.city.name
+      }else{
+        return ''
+      }
+    },
+    merTypeStr(){
+      if(this.detailInfo.merType == '02'){
+        return '个体工商户'
+      }
+      if(this.detailInfo.merType == '03'){
+        return '企业商户'
+      }
+    },
+    settTypeStr(){
+      if(this.detailInfo.settType == '01'){
+        return '银行卡'
+      }
+      if(this.detailInfo.settType == '02'){
+        return '支付宝'
+      }
+    }
+  },
+  methods: {
+    // 返回上一页
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    // 初始化页面
+    init() {
+      this.$api
+        .merPayInfo({
+          zfbVersion: this.$route.query.zfbVersion,
+          prodId: this.$route.query.prodId
+        })
+        .then(res => {
+          if(this.$route.query.typeId != 200008){
+            this.prodRef = [ ...this.prodRef,...res.body.prodBaseTermInfVo]
+            this.rateListRule = [{keyName:'termName'},{keyName:'platRate',type:'isRate'},{keyName:'zfbRate',type:'isRate'}]
+          }else{
+            this.prodRef = [...res.body.payMethods]
+            this.rateListRule = [{keyName:'payMethodName'},{keyName:'fee',type:'isRate'}]
+          }
+          this.detailInfo = res.body.detailInfo
+          this.alipayInfo = res.body
+
+          // 组装展示数组
+          this.infoList = [
+            {
+              title:'企业名称',
+              value:this.detailInfo.merName
+            },
+            {
+              title:'网商商户号',
+              value:this.detailInfo.mybankMerNo
+            },
+            {
+              title:'开通日期',
+              value:this.alipayInfo.authTimeStr
+            },
+            {
+              title:'所在地址',
+              value:this.userAddrss
+            },
+            {
+              title:'详细地址',
+              value:this.detailInfo.addr?this.detailInfo.addr.dtlAddr:''
+            },
+            {
+              title:'法人手机号',
+              value:this.detailInfo.legalMblNo
+            },
+            {
+              title:'结算方式',
+              value:this.settTypeStr
+            },
+            {
+              title:this.detailInfo.settType=='01'?this.detailInfo.merType=='02'?'经营者银行卡号':'企业对公银行账户账号':'支付宝账号',
+              value:this.detailInfo.settType=='01'?this.detailInfo.bankCardNo:this.detailInfo.aliLogonId
+            }
+          ]
+          if(this.detailInfo.settType=='01' && this.detailInfo.merType=='02'){
+             this.infoList.push({
+               title:'经营者银行卡户名',
+               value:this.detailInfo.legalName
+             })
+          }
+          if(this.detailInfo.settType=='01' && this.detailInfo.merType=='03'){
+             this.infoList.push({
+               title:'企业对公银行账户名称',
+               value:this.detailInfo.merName
+             })
+          }
+          this.infoList.push({
+            title:'账号类型',
+            value:this.detailInfo.merType=='02'?'个体工商户':'企业用户'
+          })
+          if(this.detailInfo.settType=='01' && this.detailInfo.merType=='03'){
+             this.infoList.push({
+               title:'开户支行联行号',
+               value:this.detailInfo.contactLine
+             })
+          }
+          if(this.detailInfo.settType=='01' && this.detailInfo.merType=='02'){
+             this.infoList.push({
+               title:'开户支行名称',
+               value:this.detailInfo.bankAddr?this.detailInfo.bankAddr.dtlAddr:''
+             },{
+               title:'开户支行所在地',
+               value:this.addrss
+             }
+             )
+          }
+          
+        });
+    }
+  },
+  created() {
+    this.init();
+  }
+};
+</script>
+
+<style lang="less">
+.huabei-detail-page {
+  padding-top: 45px;
+  background: #f5f5f7;
+  min-height: 100vh;
+  
+  .top-back {
+    width: 100%;
+    height: 140px;
+    background: linear-gradient(
+      180deg,
+      rgba(85, 78, 122, 1),
+      rgba(66, 61, 93, 1)
+    );
+  }
+  
+  .unit {
+    font-size: 14px;
+  }
+}
+</style>
diff --git a/src/views/old/merchant/tonglian/startOpen.vue b/src/views/old/merchant/tonglian/startOpen.vue
new file mode 100644
index 0000000..7a017d9
--- /dev/null
+++ b/src/views/old/merchant/tonglian/startOpen.vue
@@ -0,0 +1,985 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-08-18 10:39:57
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-25 11:41:23
+ * @Description: 通联通道开通信息录入页面
+-->
+<template>
+  <div class="startOpen-page">
+    <v-navbar title="开通通联通道"></v-navbar>
+    <div class="info-box">
+      <van-cell-group>
+        <van-cell title-class="title-class" title="所在省市" :value="addr" is-link @click="show=true" />
+        <van-field
+          label-class="label-class"
+          label-width="100px"
+          input-align="right"
+          v-model="detailInfo.addr.dtlAddr"
+          label="详细地址"
+          placeholder="请输入"
+        />
+        <van-field
+          label-class="label-class"
+          label-width="150px"
+          input-align="right"
+          maxlength="11"
+          v-model="detailInfo.legalMblNo"
+          label="法人手机号"
+          placeholder="请输入"
+        />
+        <van-cell
+          title-class="title-class"
+          title="商户类型"
+          :value="storeTypeStr"
+          is-link
+          @click="showStore=true"
+        />
+        <van-cell
+          title-class="title-class"
+          title="经营类目"
+          :value="categoryStr"
+          is-link
+          @click="showCategory=true"
+        />
+        <van-field
+          label-class="label-class"
+          :disabled="isdisabledlegalName"
+          v-if="storeType=='02'"
+          label-width="130px"
+          input-align="right"
+          maxlength="8"
+          v-model="legalName"
+          label="经营者身份证姓名"
+          placeholder="请输入"
+        />
+        <van-field
+          v-else
+          label-class="label-class"
+          :disabled="isdisabledlegalName"
+          label-width="130px"
+          input-align="right"
+          maxlength="8"
+          v-model="legalName"
+          label="法人身份证姓名"
+          placeholder="请输入"
+        />
+        <van-field
+          label-class="label-class"
+          :disabled="isdisabledlegalIdNo"
+          v-if="storeType=='02'"
+          label-width="130px"
+          input-align="right"
+          maxlength="18"
+          v-model="legalIdNo"
+          label="经营者身份证号"
+          placeholder="请输入"
+        />
+        <van-field
+          v-else
+          label-class="label-class"
+          :disabled="isdisabledlegalIdNo"
+          label-width="130px"
+          input-align="right"
+          maxlength="18"
+          v-model="legalIdNo"
+          label="法人身份证号"
+          placeholder="请输入"
+        />
+        <van-field
+          label-class="label-class"
+          label-width="120px"
+          disabled
+          center
+          clearable
+          label="身份证期限类型"
+        >
+          <template #button>
+            <van-button
+              size="mini"
+              color="#896edb"
+              :plain="idType==1?false:true"
+              style="border-radius: 3px;width:50px"
+              type="primary"
+              @click="btnClick(1)"
+            >有效期</van-button>
+            <van-button
+              size="mini"
+              color="#896edb"
+              :plain="idType==2?false:true"
+              style="border-radius: 3px;width:50px"
+              type="primary"
+              @click="btnClick(2)"
+            >长期</van-button>
+          </template>
+        </van-field>
+        <van-cell
+          v-show="idType==1"
+          title-class="title-class"
+          title="身份证有效期"
+          :value="detailInfo.legalIdVld"
+          is-link
+          @click="showIdDate=true"
+        />
+        <!-- 新增字段 -->
+        <van-cell
+          title-class="title-class"
+          :title="storeType=='02'?'经营者职业':'法人职业'"
+          :value="legalOccupStr"
+          is-link
+          @click="showOccupation=true"
+        />
+        <van-field
+          label-class="label-class"
+          label-width="160px"
+          input-align="right"
+          maxlength="18"
+          v-model="detailInfo.busDtl"
+          label="经营内容"
+          placeholder="请输入"
+        />
+
+        <van-field
+          label-class="label-class"
+          :disabled="isdisabledlicenseNo"
+          v-if="storeType=='02'"
+          label-width="160px"
+          input-align="right"
+          maxlength="18"
+          v-model="licenseNo"
+          label="营业执照工商注册号"
+          placeholder="请输入"
+        />
+        <van-field
+          v-else
+          label-class="label-class"
+          :disabled="isdisabledlicenseNo"
+          label-width="130px"
+          input-align="right"
+          maxlength="18"
+          v-model="licenseNo"
+          label="统一社会信用代码"
+          placeholder="请输入"
+        />
+        <van-field
+          label-class="label-class"
+          label-width="120px"
+          disabled
+          center
+          clearable
+          label="营业执照期限类型"
+        >
+          <template #button>
+            <van-button
+              size="mini"
+              color="#896edb"
+              :plain="yyType==1?false:true"
+              style="border-radius: 3px;width:50px"
+              type="primary"
+              @click="btnClickyy(1)"
+            >有效期</van-button>
+            <van-button
+              size="mini"
+              color="#896edb"
+              :plain="yyType==2?false:true"
+              style="border-radius: 3px;width:50px"
+              type="primary"
+              @click="btnClickyy(2)"
+            >长期</van-button>
+          </template>
+        </van-field>
+        <van-cell
+          title-class="title-class"
+          v-show="yyType==1"
+          title="营业执照有效期"
+          :value="detailInfo.licenseVld"
+          is-link
+          @click="showDate=true"
+        />
+        <van-cell
+          title-class="title-class"
+          title="结算方式"
+          :value="endTypeStr"
+          is-link
+          @click="showType=true"
+        />
+        <van-field
+          label-class="label-class"
+          v-if="storeType=='02'&&endType=='02'"
+          label-width="160px"
+          input-align="right"
+          maxlength="18"
+          v-model="detailInfo.aliLogonId"
+          label="支付宝账号"
+          placeholder="请输入经营者支付宝账号"
+        />
+        <van-field
+          label-class="label-class"
+          v-if="storeType=='03'&&endType=='02'"
+          label-width="160px"
+          input-align="right"
+          maxlength="18"
+          v-model="detailInfo.aliLogonId"
+          label="支付宝账号"
+          placeholder="请输入公司支付宝账号"
+        />
+        <van-field
+          label-class="label-class"
+          v-if="storeType=='02'&&endType!='02'"
+          label-width="160px"
+          input-align="right"
+          maxlength="19"
+          v-model="detailInfo.bankCardNo"
+          label="经营者银行卡号"
+          placeholder="请输入"
+        />
+        <van-field
+          label-class="label-class"
+          v-if="storeType=='03'&&endType!='02'"
+          label-width="160px"
+          input-align="right"
+          maxlength="30"
+          v-model="detailInfo.bankCardNo"
+          label="企业对公银行账户号"
+          placeholder="请输入"
+        />
+        <van-field
+          label-class="label-class"
+          v-if="storeType=='02'&&endType!='02'"
+          :disabled="isdisabledlegalName"
+          label-width="130px"
+          input-align="right"
+          maxlength="18"
+          v-model="legalName"
+          label="经营者银行卡户名"
+          placeholder="请输入"
+        />
+        <van-field
+          label-class="label-class"
+          v-if="storeType=='03'&&endType!='02'"
+          :disabled="isdisabledmerName"
+          label-width="160px"
+          input-align="right"
+          maxlength="18"
+          v-model="merName"
+          label="企业对公银行账户名称"
+          placeholder="请输入"
+        />
+        <van-field
+          label-class="label-class"
+          :disabled="accountType?true:false"
+          v-if="endType!='02'"
+          label-width="140px"
+          input-align="right"
+          maxlength="18"
+          v-model="accountType"
+          label="账户类型"
+          placeholder="请输入"
+        />
+        <van-field
+          label-class="label-class"
+          v-if="storeType=='03'&&endType!='02'"
+          label-width="130px"
+          input-align="right"
+          maxlength="18"
+          v-model="detailInfo.contactLine"
+          label="开户行联行号"
+          placeholder="请输入"
+        />
+        <van-field
+          label-class="label-class"
+          v-if="storeType!='03'&&endType!='02'"
+          label-width="130px"
+          input-align="right"
+          maxlength="18"
+          v-model="detailInfo.bankAddr.dtlAddr"
+          label="开户支行名称"
+          placeholder="请输入"
+        />
+        <van-cell
+          title-class="title-class"
+          v-if="endType!='02'&&storeType!='03'"
+          title="开户支行所在地"
+          :value="bankAddr"
+          is-link
+          @click="showAddress=true"
+        />
+      </van-cell-group>
+      <button class="btn-y" :style="{background:$store.state.defaultColor}" @click="goNext">下一步</button>
+      <!-- 省市弹窗 -->
+      <van-popup v-model="show" position="bottom" :style="{ height: '30%' }">
+        <van-picker
+          value-key="name"
+          show-toolbar
+          title="省市选择"
+          :columns="areaInfos"
+          @cancel="show=false"
+          @confirm="onConfirmArea"
+        />
+      </van-popup>
+      <!-- 商户类型弹窗 -->
+      <van-popup v-model="showStore" position="bottom" :style="{ height: '30%' }">
+        <van-picker
+          value-key="name"
+          show-toolbar
+          title="商户类型选择"
+          :columns="merTypes"
+          @cancel="showStore=false"
+          @confirm="onConfirmmerTypes"
+        />
+      </van-popup>
+      <!-- 经营类目弹窗 -->
+      <van-popup v-model="showCategory" position="bottom" :style="{ height: '30%' }">
+        <van-picker
+          value-key="name"
+          show-toolbar
+          title="商户类型选择"
+          :columns="categorys"
+          @cancel="showCategory=false"
+          @confirm="onConfirmmerCategory"
+        />
+      </van-popup>
+      <!-- 营业执照有效期弹窗 -->
+      <van-popup v-model="showIdDate" position="bottom" :style="{ height: '40%' }">
+        <van-datetime-picker
+          v-model="currentIdDate"
+          type="date"
+          title="选择身份证时间"
+          :min-date="minDate"
+          :max-date="maxDate"
+          @cancel="showIdDate=false"
+          @confirm="onConfirmIdDate"
+        />
+      </van-popup>
+      <!-- 营业执照有效期弹窗 -->
+      <van-popup v-model="showDate" position="bottom" :style="{ height: '40%' }">
+        <van-datetime-picker
+          v-model="currentDate"
+          type="date"
+          title="选择年月日"
+          :min-date="minDate"
+          :max-date="maxDate"
+          @cancel="showDate=false"
+          @confirm="onConfirmDate"
+        />
+      </van-popup>
+      <!-- 结算方式弹窗 -->
+      <van-popup v-model="showType" position="bottom" :style="{ height: '30%' }">
+        <van-picker
+          value-key="name"
+          show-toolbar
+          title="结算方式选择"
+          :columns="storeType=='02'?settTypes:settTypes2"
+          @cancel="showType=false"
+          @confirm="onConfirmsettTypes"
+        />
+      </van-popup>
+      <!-- 开户支行所在地弹窗 -->
+      <van-popup v-model="showAddress" position="bottom" :style="{ height: '30%' }">
+        <van-picker
+          value-key="name"
+          show-toolbar
+          title="开户支行所在地选择"
+          :columns="bankAreaInfos"
+          @cancel="showAddress=false"
+          @confirm="onConfirmbankArea"
+        />
+      </van-popup>
+      <!-- 经营者职业弹窗 -->
+      <van-popup v-model="showOccupation" position="bottom" :style="{ height: '30%' }">
+        <van-picker
+          value-key="name"
+          show-toolbar
+          title="职业选择"
+          :columns="legalOccups"
+          @cancel="showOccupation=false"
+          @confirm="onConfirmOccupation"
+        />
+      </van-popup>
+    </div>
+  </div>
+</template>
+<script>
+import { mapState, mapGetters } from 'vuex';
+export default {
+  data() {
+    return {
+      minDate: new Date(),
+      maxDate: new Date(2099, 11, 31),
+      currentDate: new Date(),
+      currentIdDate: new Date(),
+
+      isdisabledlegalName: false, //法人及户名是否禁用
+      isdisabledlegalIdNo: false, //身份证号是否禁用
+      isdisabledmerName: false, //企业对公银行账户名称是否禁用
+      isdisabledlicenseNo: false, //营业执照号是否禁用
+
+      show: false, //省市弹出层展示
+      showStore: false, //商户类型弹出层
+      showCategory:false,//经营类目弹窗层
+      showDate: false, //营业执照有效期弹出层
+      showIdDate: false, //身份证有效期弹出层
+      showType: false, //结算方式弹出层
+      showAddress: false, //开户支行所在地弹窗
+      showUserSex:false,//经营者性别弹窗 
+      showOccupation:false,//经营者职业弹窗
+      merTypes: [], //商户类型数组
+      categorys:[], //经营类目数组
+      settTypes: [], //结算类型数组-个体
+      settTypes2:[],//结算类型数组-企业
+      areaInfos: [], //地址数组
+      bankAreaInfos: [], //银行地址数组
+      legalOccups:[],//经营者-法人职业数组
+      endType: "", //结算状态-用于判断输入框
+      endTypeStr: "", //结算状态字符串
+      storeType: "", //商户状态-用于判断输入框
+      storeTypeStr: "", //商户状态字符串
+      category:'',//经营类目-用于判断输入框
+      categoryStr:'',//经营类目字符串
+      legalOccupStr:'',//经营者-法人职业字符串
+      idType: 1, //身份证有效期类型
+      yyType: 1, //营业执照有效期类型
+      detailInfo: {
+        addr: {
+          dtlAddr: "", //省市详细地址
+          province: {
+            code: "",
+            name: "",
+          }, //省
+          city: {
+            code: "",
+            name: "",
+          }, //市
+          area: "", //区
+        },
+        bankAddr: {
+          dtlAddr: "",
+          province: {
+            code: "",
+            name: "",
+          },
+          city: {
+            code: "",
+            name: "",
+          },
+          area: "",
+        },
+        legalMblNo: "", //法人电话号码
+        merType: "", //商户类型
+        settType: "", //结算类型
+        legalOccup:'',//经营者-法人职业
+        busDtl:"",//经营内容
+        bankCardNo: "", //银行卡号
+        aliLogonId: "", //支付宝账号
+        licenseVld: "", //社会信用代码证有效期
+        legalIdVld: "", //法人身份证有效期
+      },
+      legalIdNo: "", //法人身份证号
+      legalName: "", //法人姓名
+      licenseNo: "", //商户营业执照号
+      merName: "", //商户名称
+    };
+  },
+  computed: {
+    ...mapState(['userinfo']),
+    accountType() {
+      if (this.detailInfo.merType == "02") {
+        return "对私";
+      }
+      if (this.detailInfo.merType == "03") {
+        return "对公";
+      }
+    },
+    addr() {
+      let str = "";
+      let _this = this;
+      if (_this.detailInfo.addr.province.code) {
+        _this.areaInfos.forEach((e) => {
+          if (e.code == _this.detailInfo.addr.province.code) {
+            e.children.forEach((i) => {
+              if (i.code == _this.detailInfo.addr.city.code) {
+                str = e.name + "/" + i.name;
+              }
+            });
+          }
+        });
+        return str;
+      }
+    },
+    bankAddr() {
+      let str = "";
+      let _this = this;
+      if (_this.detailInfo.bankAddr.province.code) {
+        _this.bankAreaInfos.forEach((e) => {
+          if (e.code == _this.detailInfo.bankAddr.province.code) {
+            e.children.forEach((i) => {
+              if (i.code == _this.detailInfo.bankAddr.city.code) {
+                str = e.name + "/" + i.name;
+              }
+            });
+          }
+        });
+        return str;
+      }
+    },
+  },
+  created() {
+    this.init();
+  },
+  methods: {
+    /**
+     * @description:获取页面初始化信息
+     * @return void
+     * **/
+    init() {
+      this.$api.tltMerOpenInit().then((res) => {
+        // 附值弹出层选择项
+        this.merTypes = res.body.merTypes;
+        this.categorys = res.body.merMccs;
+        this.settTypes = res.body.settTypes;//个体工商户结算类型
+        this.settTypes2 = [res.body.settTypes[0]];//企业商户只能选银行卡
+        this.areaInfos = res.body.areaInfos;
+        this.bankAreaInfos = res.body.bankAreaInfos;
+        this.legalOccups = res.body.legalOccups;
+        // 如果初始化接口拿到信息并且本地没有保存信息,显示取初始化信息
+        if (res.body.detailInfo && !sessionStorage.getItem(`sib_tl_openInfo_${this.userinfo.orgId}`)) {
+          this.detailInfo = res.body.detailInfo;
+          // 处理两个地址
+          if (!res.body.detailInfo.addr) {
+            this.detailInfo.addr = {
+              dtlAddr: "", //省市详细地址
+              province: {
+                code: "",
+                name: "",
+              }, //省
+              city: {
+                code: "",
+                name: "",
+              }, //市
+              area: "", //区
+            };
+          }
+          if (!res.body.detailInfo.bankAddr) {
+            this.detailInfo.bankAddr = {
+              dtlAddr: "",
+              province: {
+                code: "",
+                name: "",
+              },
+              city: {
+                code: "",
+                name: "",
+              },
+              area: "",
+            };
+          }
+          // 获取选择框值
+          this.storeType = res.body.detailInfo.merType;
+          this.category = res.body.detailInfo.merMcc;
+          this.endType = res.body.detailInfo.settType;
+          // 循环取出对应名字
+          // 商户类型
+          this.merTypes.forEach((e) => {
+            if (e.code == this.detailInfo.merType) {
+              this.storeTypeStr = e.name;
+            }
+          });
+          // 经营类目
+          this.categorys.forEach((e) => {
+            if (e.code == this.detailInfo.merMcc) {
+              this.categoryStr = e.name;
+            }
+          });
+          // 结算类型
+          this.settTypes.forEach((e) => {
+            if (e.code == this.detailInfo.settType) {
+              this.endTypeStr = e.name;
+            }
+          });
+          this.legalOccups.forEach(item=>{
+            if(item.code == this.detailInfo.legalOccup){
+              this.legalOccupStr = item.name
+            }
+          })
+          // 处理图片
+          let picIdList = {
+            licencePhotos: this.detailInfo.licencePhotos,
+            cardFrontPhotos: this.detailInfo.cardFrontPhotos,
+            cardBackPhotos: this.detailInfo.cardBackPhotos,
+            handCardPhotos: this.detailInfo.handCardPhotos,
+            storeInnerPhotos: this.detailInfo.storeInnerPhotos,
+            storeSignPhotos: this.detailInfo.storeSignPhotos,
+            industryLicensePhotos: this.detailInfo.industryLicensePhotos,
+          };
+          // 进行本地存储图片列表
+          sessionStorage.setItem(`sib_tl_pic_${this.userinfo.orgId}`, JSON.stringify(picIdList));
+        } 
+        // 本地有存储则返显存储信息,显示存储信息的情况仅限输入跳转下一页又返回这种情况,一旦开通成功则清除了本地存储
+        if(sessionStorage.getItem(`sib_tl_openInfo_${this.userinfo.orgId}`)) {
+          this.idType = JSON.parse(
+            sessionStorage.getItem(`sib_tl_openInfo_${this.userinfo.orgId}`)
+          ).idType;
+          this.yyType = JSON.parse(sessionStorage.getItem(`sib_tl_openInfo_${this.userinfo.orgId}`)).yyType
+          this.detailInfo = JSON.parse(
+            sessionStorage.getItem(`sib_tl_openInfo_${this.userinfo.orgId}`)
+          ).detailInfo;
+          this.storeType = this.detailInfo.merType;
+          this.merTypes.forEach((e) => {
+            if (e.code == this.detailInfo.merType) {
+              this.storeTypeStr = e.name;
+            }
+          });
+          this.category = this.detailInfo.merMcc;
+          this.categorys.forEach((e) => {
+            if (e.code == this.detailInfo.merMcc) {
+              this.categoryStr = e.name;
+            }
+          });
+          this.endType = this.detailInfo.settType;
+          this.settTypes.forEach((e) => {
+            if (e.code == this.detailInfo.settType) {
+              this.endTypeStr = e.name;
+            }
+          });
+          this.legalOccups.forEach(item=>{
+            if(item.code == this.detailInfo.legalOccup){
+              this.legalOccupStr = item.name
+            }
+          })
+        }
+        // 下列字段有则返显不可编辑,无则可输入
+        if (res.body.legalIdNo) {
+          this.isdisabledlegalIdNo = true;
+        }
+        if (res.body.legalName) {
+          this.isdisabledlegalName = true;
+        }
+        if (res.body.merName) {
+          this.isdisabledmerName = true;
+        }
+        if (res.body.licenseNo) {
+          this.isdisabledlicenseNo = true;
+        }
+        this.legalIdNo = res.body.legalIdNo;
+        this.legalName = res.body.legalName;
+        this.licenseNo = res.body.licenseNo;
+        this.merName = res.body.merName;
+      });
+    },
+    /**
+     * @description:省份选择
+     * @return void
+     * **/
+    onConfirmArea(indexText, indexList) {
+      /**
+       * 根据索引获取对应的省市code值
+       * **/
+      this.detailInfo.addr.province.code = this.areaInfos[indexList[0]].code;
+      this.detailInfo.addr.city.code = this.areaInfos[indexList[0]].children[
+        indexList[1]
+      ].code;
+      this.detailInfo.addr.province.name = this.areaInfos[indexList[0]].name;
+      this.detailInfo.addr.city.name = this.areaInfos[indexList[0]].children[
+        indexList[1]
+      ].name;
+      this.show = false;
+    },
+    /**
+     * @description:开户行地址选择
+     * @return void
+     * **/
+    onConfirmbankArea(indexText, indexList) {
+      /**
+       * 根据索引获取对应的省市code值
+       * **/
+      this.detailInfo.bankAddr.province.code = this.bankAreaInfos[
+        indexList[0]
+      ].code;
+      this.detailInfo.bankAddr.city.code = this.bankAreaInfos[
+        indexList[0]
+      ].children[indexList[1]].code;
+      this.detailInfo.bankAddr.province.name = this.bankAreaInfos[
+        indexList[0]
+      ].name;
+      this.detailInfo.bankAddr.city.name = this.bankAreaInfos[
+        indexList[0]
+      ].children[indexList[1]].name;
+      this.showAddress = false;
+    },
+    /**
+     * @description:身份证时间选择
+     * @return void
+     * **/
+    onConfirmIdDate() {
+      console.log(this.currentIdDate.getDate());
+      let timeStr =
+        this.currentIdDate.getFullYear() +
+        "-" +
+        (this.currentIdDate.getMonth() + 1) +
+        "-" +
+        this.currentIdDate.getDate();
+      this.detailInfo.legalIdVld = timeStr;
+      this.showIdDate = false;
+    },
+    /**
+     * @description:商户类型选择成功
+     * @param {Object} 选择的信息
+     * @return void
+     * **/
+    onConfirmmerTypes(value) {
+      this.detailInfo.merType = value.code;
+      this.storeType = value.code;
+      this.storeTypeStr = value.name;
+      // 企业商户只能使用银行卡,故此在选择企业03时 对下面结算框手动更改
+      if(this.storeType == '03'){
+        this.detailInfo.settType = '01';
+        this.endType = '01';
+        this.endTypeStr = '银行卡';
+      }
+      this.showStore = false;
+    },
+     /**
+     * @description:经营类目选择成功
+     * @param {Object} 选择的信息
+     * @return void
+     * **/
+    onConfirmmerCategory(value){
+      this.detailInfo.merMcc = value.code;
+      this.category = value.code;
+      this.categoryStr = value.name;
+      this.showCategory = false;
+    },
+    /**
+     * @description:结算类型选择成功
+     * @param {Object} 选择的信息
+     * @return void
+     * **/
+    onConfirmsettTypes(value) {
+      this.detailInfo.settType = value.code;
+      this.endType = value.code;
+      this.endTypeStr = value.name;
+      this.showType = false;
+    },
+    /**
+     * @description:营业执照有效期选择
+     * @return void
+     * **/
+    onConfirmDate() {
+      let timeStr =
+        this.currentDate.getFullYear() +
+        "-" +
+        (this.currentDate.getMonth() + 1) +
+        "-" +
+        this.currentDate.getDate();
+      this.detailInfo.licenseVld = timeStr;
+      this.showDate = false;
+    },
+    /**
+     * @description:法人-经营者职业选择
+     * @return void
+     * **/
+    onConfirmOccupation(val){
+      this.legalOccupStr = val.name
+      this.detailInfo.legalOccup = val.code
+      this.showOccupation = false
+    },
+    /**
+     * @description:身份证有效期类型选择
+     * @param {Number} 类型
+     * @return void
+     * **/
+    btnClick(id) {
+      console.log(this.addr);
+      this.detailInfo.legalIdVld = "";
+      if (id == 1) {
+        this.idType = 1;
+      } else {
+        this.idType = 2;
+        this.detailInfo.legalIdVld = "2099-12-31";
+      }
+    },
+    /**
+     * @description:营业执照有效期类型选择
+     * @param {Number} 类型
+     * @return void
+     * **/
+    btnClickyy(id) {
+      this.detailInfo.licenseVld = "";
+      if (id == 1) {
+        this.yyType = 1;
+      } else {
+        this.yyType = 2;
+        this.detailInfo.licenseVld = "2099-12-31";
+      }
+    },
+    /**
+     * @description:下一步
+     * @return void
+     * **/
+    goNext() {
+      let obj = {},
+        openObj = {};
+      /**
+       * 校验
+       * **/
+      if (this.$tool.checkValEmpty(this.detailInfo.addr.province.code)) {
+        this.$notify_success("请选择省市");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.detailInfo.addr.dtlAddr)) {
+        this.$notify_success("请填写具体地址");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.detailInfo.legalMblNo)) {
+        this.$notify_success("请填写法人手机号");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.detailInfo.merType)) {
+        this.$notify_success("请选择商户类型");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.detailInfo.merMcc)) {
+        this.$notify_success("请选择经营类目");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.legalName)) {
+        if (this.storeType == "02") {
+          this.$notify_success("请填写经营者身份证姓名");
+        } else {
+          this.$notify_success("请填写法人身份证姓名");
+        }
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.legalIdNo)) {
+        if (this.storeType == "02") {
+          this.$notify_success("请填写经营者身份证号");
+        } else {
+          this.$notify_success("请填写法人身份证号");
+        }
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.detailInfo.legalIdVld)) {
+        this.$notify_success("请选择身份证有效期");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.detailInfo.legalOccup)) {
+        if (this.storeType == "02") {
+          this.$notify_success("请选择经营者职业");
+        } else {
+          this.$notify_success("请选择法人职业");
+        }
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.detailInfo.busDtl)) {
+        this.$notify_success("请输入经营内容");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.licenseNo)) {
+        if (this.storeType == "02") {
+          this.$notify_success("营业执照工商注册号");
+        } else {
+          this.$notify_success("请填写统一社会信用代码");
+        }
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.detailInfo.licenseVld)) {
+        this.$notify_success("请选择营业执照有效期");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.detailInfo.settType)) {
+        this.$notify_success("请选择结算类型");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.detailInfo.bankCardNo) && this.endType == "01") {
+        if (this.storeType == "02" && this.endType == "01") {
+          this.$notify_success("请填写经营者银行卡号");
+        } 
+        if(this.storeType == "03" && this.endType == "01") {
+          this.$notify_success("请填写企业对公银行账户号");
+        }
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.accountType) && this.endType == "01") {
+        this.$notify_success("请填写账户类型(对公/对私)");
+        return false;
+      }
+      if (
+        this.$tool.checkValEmpty(this.detailInfo.contactLine) &&
+        this.storeType=='03' && this.endType!='02'
+      ) {
+        this.$notify_success("请填写开户行联行号");
+        return false;
+      }
+      if (
+        this.$tool.checkValEmpty(this.detailInfo.bankAddr.dtlAddr) &&
+        this.endType == "01"&&this.storeType!='03'
+      ) {
+        this.$notify_success("请输入开户行名称");
+        return false;
+      }
+      if (
+        this.$tool.checkValEmpty(this.detailInfo.bankAddr.province.code) &&
+        this.endType == "01"&&this.storeType!='03'
+      ) {
+        this.$notify_success("请选择开户支行所在地");
+        return false;
+      }
+      if (
+        this.$tool.checkValEmpty(this.detailInfo.aliLogonId) &&
+        this.endType == "02"
+      ) {
+        this.$notify_success("请填写支付宝账号");
+        return false;
+      }
+
+      obj.legalIdNo = this.legalIdNo //法人身份证号
+      obj.legalName = this.legalName //法人姓名
+      obj.licenseNo = this.licenseNo //商户营业执照号
+      obj.merName = this.merName //商户名称
+      obj.idType = this.idType
+      obj.yyType = this.yyType
+      openObj = { ...obj, detailInfo: this.detailInfo };
+      sessionStorage.setItem(`sib_tl_openInfo_${this.userinfo.orgId}`, JSON.stringify(openObj));
+      this.$router.push({
+        path: "/tonglian/store-pictures",
+        query: {
+          ...this.$route.query,
+        },
+      });
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+.startOpen-page {
+  & {
+    min-height: 100vh;
+    background: #f5f5f7;
+  }
+  /deep/.label-class {
+    font-size: 14px;
+    color: #333;
+  }
+  /deep/.title-class {
+    font-size: 14px;
+  }
+  .info-box {
+    margin-top: 10px;
+    width: 96vw;
+    margin-left: 2vw;
+  }
+  .btn-y {
+    width: 78%;
+    margin-left: 11%;
+    margin-top: 40px;
+    height: 44px;
+    background: #896edb;
+    border-radius: 22px;
+    color: #fff;
+    outline: none;
+    border: 0;
+    margin-bottom: 30px;
+    
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/merchant/tonglian/storePictures.vue b/src/views/old/merchant/tonglian/storePictures.vue
new file mode 100644
index 0000000..0696fd8
--- /dev/null
+++ b/src/views/old/merchant/tonglian/storePictures.vue
@@ -0,0 +1,350 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-08-10 14:52:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-25 11:37:35
+ * @Description: 通联通道图片上传页面
+-->
+<template>
+  <div class="tonglian-store-pictures-page">
+    <v-navbar title="开通通联通道"></v-navbar>
+    <div class="pic-content">
+      <p class="tip" v-if="uploadFileTypes.indexOf(0)!= -1">
+        <span>上传营业执照</span>
+        <span>(请上传实拍原件或上传实拍加盖公章复印件)</span>
+      </p>
+      <UploadFile
+        v-if="uploadFileTypes.indexOf(0)!= -1"
+        :fileType="0"
+        :isCard="0"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.licencePhotos"
+      ></UploadFile>
+      <p class="tip" v-if="uploadFileTypes.indexOf(2)!= -1||uploadFileTypes.indexOf(3)!= -1">
+        <span>上传法人身份证正反面</span>
+        <span>(第一张人像面,第二张国徽面)(请上传实拍原件或上传实拍加盖公章复印件)</span>
+      </p>
+      <div class="idcard-box">
+        <UploadFile
+          v-if="uploadFileTypes.indexOf(2)!= -1"
+          :fileType="2"
+          :isCard="1"
+          :typeId="this.$route.query.typeId"
+          :sourceType="this.$route.query.zfbVersion"
+          :picList="uploadObj.cardFrontPhotos"
+        ></UploadFile>
+        <!-- :title="'2、上传法人身份证正反面'"
+          :tips="'(第一张人像面,第二张国徽面)'" -->
+        <UploadFile
+          v-if="uploadFileTypes.indexOf(3)!= -1"
+          :fileType="3"
+          :isCard="2"
+          :typeId="this.$route.query.typeId"
+          :sourceType="this.$route.query.zfbVersion"
+          :picList="uploadObj.cardBackPhotos"
+        ></UploadFile>
+      </div>
+      <UploadFile
+        v-if="uploadFileTypes.indexOf(21)!= -1"
+        :fileType="21"
+        :isCard="0"
+        :title="'上传手持身份证照片'"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.handCardPhotos"
+      ></UploadFile>
+      <UploadFile
+        v-if="uploadFileTypes.indexOf(6)!= -1"
+        :fileType="6"
+        :isCard="0"
+        :title="'上传经营内景照片'"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.storeInnerPhotos"
+      ></UploadFile>
+      <UploadFile
+        v-if="uploadFileTypes.indexOf(7)!= -1"
+        :fileType="7"
+        :isCard="0"
+        :title="'上传门头照'"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.storeSignPhotos"
+      ></UploadFile>
+      <UploadFile
+        v-if="uploadFileTypes.indexOf(22)!= -1"
+        :fileType="22"
+        :isCard="0"
+        :title="merType=='03'?'上传开户许可证照片':'上传银行卡正面照片'"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.industryLicensePhotos"
+      ></UploadFile>
+      <!-- 新增补录图片 -->
+      <p class="tip" v-if="uploadFileTypes.indexOf(25)!= -1">
+        <span>签字授权委托书</span>
+        <span>检测到手机号非法人手机号,请下载签字授权委托书模板并按照指导完成填写后拍照上传</span>
+        <span @click="getModal">下载模板</span>
+      </p>
+      <UploadFile
+        v-if="uploadFileTypes.indexOf(25)!= -1"
+        :fileType="25"
+        :isCard="0"
+        :typeId="this.$route.query.typeId"
+        :sourceType="this.$route.query.zfbVersion"
+        :picList="uploadObj.authorPhotos"
+      ></UploadFile>
+    </div>
+    <f-space></f-space>
+    <button
+      class="btn-y"
+      :style="{background:$store.state.defaultColor}"
+      @click="handleOpenHuaBei"
+    >{{btnText}}</button>
+    
+  </div>
+</template>
+<script>
+import UploadFile from "@/components/old/upload/uploadImgTl";
+import { mapState, mapGetters } from 'vuex';
+export default {
+  name: "add-account",
+  components: {
+    UploadFile
+  },
+  data() {
+    return { 
+      btnText:'下一步',
+      uploadObj: {
+        licencePhotos: [], // 营业执照
+        cardFrontPhotos: [], // 身份证正面照
+        cardBackPhotos: [], // 身份证反面照
+        handCardPhotos:[],//手持身份证照片
+        storeSignPhotos: [], // 门店招牌照
+        storeInnerPhotos: [], // 门店店内照
+        industryLicensePhotos:[],//开户许可证照片
+        authorPhotos:[]
+      }
+    };
+  },
+  created() {
+    this.uploadObj = {
+      licencePhotos: [], // 营业执照
+      cardFrontPhotos: [], // 身份证正面照
+      cardBackPhotos: [], // 身份证反面照
+      handCardPhotos:[],//手持身份证照
+      storeSignPhotos: [], // 门店招牌照
+      storeInnerPhotos: [], // 门店店内照
+      industryLicensePhotos:[],
+      authorPhotos:[],
+    };
+    this.getMyMation();
+  },
+  computed:{
+    ...mapState(['userinfo']),
+    merType(){
+      if(this.$route.query.merType && this.$route.query.merType != undefined){
+        this.btnText = '提交开通'
+        return this.$route.query.merType
+      }else{
+        return JSON.parse(sessionStorage.getItem(`sib_tl_openInfo_${this.userinfo.orgId}`)).detailInfo.merType
+      }
+    },
+    uploadFileTypes(){
+      if(this.$route.query.uploadFileTypes != undefined){
+        console.log(this.$route.query.uploadFileTypes)
+        return JSON.parse(this.$route.query.uploadFileTypes)
+      }else{
+        return [0,2,3,21,6,7,22]
+      }
+    }
+  },
+  methods: {
+    getModal(){
+      this.$api.tltMerOpenSendAuthFile().then(res=>{
+        this.$tool.toast("模板已下发至注册邮箱,请查收");
+      })
+    },
+    // 开通花呗
+    handleOpenHuaBei() {
+      if (this.$tool.checkValEmpty(this.uploadObj.licencePhotos)&&this.uploadFileTypes.indexOf(0) != -1) {
+        this.$tool.toast("请上传营业执照");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.cardFrontPhotos)&&this.uploadFileTypes.indexOf(2) != -1) {
+        this.$tool.toast("请上传身份证正面照");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.cardBackPhotos)&&this.uploadFileTypes.indexOf(3) != -1) {
+        this.$tool.toast("请上传身份证反面照");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.handCardPhotos)&&this.uploadFileTypes.indexOf(21) != -1) {
+        this.$tool.toast("请上传手持身份证照");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.storeInnerPhotos)&&this.uploadFileTypes.indexOf(6) != -1) {
+        this.$tool.toast("请上传经营内景照");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.storeSignPhotos)&&this.uploadFileTypes.indexOf(7) != -1) {
+        this.$tool.toast("请上传门头照");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.industryLicensePhotos)&&this.uploadFileTypes.indexOf(22) != -1) {
+        this.$tool.toast(this.merType=='03'?"请上传开户许可证照":"请上传银行卡正面照片");
+        return false;
+      }
+      if (this.$tool.checkValEmpty(this.uploadObj.authorPhotos)&&this.uploadFileTypes.indexOf(25) != -1) {
+        this.$tool.toast("请上传签字授权委托书");
+        return false;
+      }
+
+      let picIdList = {
+        licencePhotos: [],
+        cardFrontPhotos: [],
+        cardBackPhotos: [],
+        handCardPhotos:[],
+        storeInnerPhotos: [],
+        storeSignPhotos: [],
+        industryLicensePhotos:[],
+        authorPhotos:[]
+      };
+     
+      for (let i in this.uploadObj) {
+        this.uploadObj[i].forEach(item => {
+          picIdList[i].push(item.id + "");
+        });
+      }
+       
+     
+      if(!this.$route.query.merType && this.$route.query.merType == undefined){ 
+        sessionStorage.setItem(`sib_tl_pic_${this.userinfo.orgId}`,JSON.stringify(this.uploadObj)) 
+        let obj = JSON.parse(sessionStorage.getItem(`sib_tl_openInfo_${this.userinfo.orgId}`))
+        obj.detailInfo = {...JSON.parse(sessionStorage.getItem(`sib_tl_openInfo_${this.userinfo.orgId}`)).detailInfo,...picIdList}
+        sessionStorage.setItem(`sib_tl_openInfo_${this.userinfo.orgId}`,JSON.stringify(obj))
+        this.$router.push({
+          path: "/tonglian/open",
+          query: {
+            title: "开通通联通道",
+            ...this.$route.query
+          }
+        }); 
+      }else{
+        this.$api.tltMerOpenRepair({...picIdList}).then(res=>{
+          this.$router.push({
+            path: "/tonglian/open-result",
+            query: {
+              title: "开通通联通道"
+            }
+          }); 
+        })
+      }
+      
+    
+     
+    },
+    //   获取返显资料
+    getMyMation() {
+      if (sessionStorage.getItem(`sib_tl_pic_${this.userinfo.orgId}`)) {
+        // if(sessionStorage.getItem("sib_tl_openInfo")){
+        //   var obj = JSON.parse(sessionStorage.getItem("sib_tl_openInfo")).detailInfo;
+        // }
+        if(sessionStorage.getItem(`sib_tl_pic_${this.userinfo.orgId}`)){
+          var obj = JSON.parse(sessionStorage.getItem(`sib_tl_pic_${this.userinfo.orgId}`));
+        }
+        if (obj.licencePhotos && obj.licencePhotos.length > 0) {
+          this.uploadObj.licencePhotos = obj.licencePhotos;
+        }
+        if (obj.cardFrontPhotos && obj.cardFrontPhotos.length > 0) {
+          this.uploadObj.cardFrontPhotos = obj.cardFrontPhotos;
+        }
+        if (obj.cardBackPhotos && obj.cardBackPhotos.length > 0) {
+          this.uploadObj.cardBackPhotos = obj.cardBackPhotos;
+        }
+        if (obj.handCardPhotos && obj.handCardPhotos.length > 0) {
+          this.uploadObj.handCardPhotos = obj.handCardPhotos;
+        }
+        if (obj.storeSignPhotos && obj.storeSignPhotos.length > 0) {
+          this.uploadObj.storeSignPhotos = obj.storeSignPhotos;
+        }
+        if (obj.storeInnerPhotos && obj.storeInnerPhotos.length > 0) {
+          this.uploadObj.storeInnerPhotos = obj.storeInnerPhotos;
+        }
+        if (obj.industryLicensePhotos && obj.industryLicensePhotos.length > 0) {
+          this.uploadObj.industryLicensePhotos = obj.industryLicensePhotos;
+        }
+        if (obj.authorPhotos && obj.authorPhotos.length > 0) {
+          this.uploadObj.authorPhotos = obj.authorPhotos;
+        }
+      }
+    }
+  },
+  
+};
+</script>
+
+<style lang="less" scoped>
+.tonglian-store-pictures-page {
+  & {
+    min-height: 100vh;
+    background: #f5f5f7;
+  }
+  .info-box {
+    margin-top: 10px;
+    width: 96vw;
+    margin-left: 2vw;
+  }
+   .pic-content {
+    padding: 20px 0px 20px 10px;
+    box-sizing: border-box;
+    background: #fff;
+    width: 96vw;
+    margin-left: 2vw;
+    margin-top: 10px;
+    .tip{
+        span:nth-of-type(2){
+            font-size:12px;
+            font-family:PingFang SC;
+            font-weight:500;
+            color:rgba(255,102,102,1);
+        }
+        span:nth-of-type(3){
+            margin-top: 10px;
+            display: block;
+            font-size:12px;
+            font-family:PingFang SC;
+            font-weight:500;
+            color:#1890FF;
+        }
+    }
+  }
+
+  .idcard-box {
+      &{
+          display: flex;
+          //justify-content: space-around;
+      }
+    div {
+      display: inline-block;
+      width: 40%;
+    }
+    div:nth-of-type(2) {
+      //margin-left: -240px;
+    }
+  }
+  .btn-y {
+    width: 78%;
+    margin-left: 11%;
+    //margin-top: 40px;
+    height: 44px;
+    background: #896EDB;
+    border-radius: 22px;
+    color: #fff;
+    outline: none;
+    border: 0;
+    margin-bottom: 30px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/merchant/tonglian/verification.vue b/src/views/old/merchant/tonglian/verification.vue
new file mode 100644
index 0000000..6ce84aa
--- /dev/null
+++ b/src/views/old/merchant/tonglian/verification.vue
@@ -0,0 +1,204 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-10-21 19:42:42
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-04 15:47:59
+ * @Description: 
+-->
+!<template>
+  <div class="verification-page">
+        <van-nav-bar
+          title="打款验证"
+          left-arrow
+          @click-left="onClickLeft"
+          style="line-height: 43px"
+        >
+          <i
+            class="iconfont iconzuojiantou"
+            slot="left"
+            style="font-size: 25px"
+          ></i>
+        </van-nav-bar>
+        <div class="ipt-box">
+            <p class="ipt-p">收款金额验证</p>
+            <span class="ipt-tip">¥</span>
+            <input type="text" v-model="payAmt" class="ipt" placeholder="请输入验证金额" maxlength="4">
+        </div>
+        <div class="tip-box">
+            <p class="tip-p">我们将向您的对公结算银行卡进行一笔小额转账以确保银行卡信息准确无误,请将我们的打款金额输入至输入框后点击确认完成验证</p>
+        </div>
+        <button class="confirm-btn" @click="hanldClick">确认</button>
+        <van-dialog v-model="show" title="打款提示" confirm-button-color="#896EDB">
+            <div style="text-align:center;box-size:border-box;padding:20px 10px;font-size:14px">
+              <p>打款金额输入错误,请重新输入</p>
+            </div>
+        </van-dialog>
+        <van-dialog v-model="show2" title="打款提示" @confirm="handConfirm" confirm-button-color="#896EDB">
+            <div style="text-align:center;box-size:border-box;padding:20px 10px;font-size:14px">
+              <p>打款金额输入错误,两次验证错误,我们将重新打款进行验证,请稍后</p>
+            </div>
+        </van-dialog>
+  </div>
+</template>
+
+<script>
+import Vue from "vue";
+import { Toast, Dialog  } from "vant";
+
+Vue.use(Toast);
+Vue.use(Dialog);
+export default {
+  data(){
+    return {
+        show:false,
+        show2:false,
+        payAmt:'',//验证金额
+        timer:'',
+        isValid:'',//验证金额结果
+        cont:1 // 计数器
+    }
+  },
+  created(){},
+  mounted(){},
+  methods:{
+    handConfirm(){
+      this.$router.push({
+        path:'/tonglian/open-result',
+        query:{
+          verificationDone:'done',
+          ...this.$route.query
+        }
+      })
+    },
+    /**
+     * @description 返回至个人中心首页
+     * @returns void
+     * **/ 
+    onClickLeft(){
+      if(this.$route.query.isApp == 1){
+        this.$router.push({
+            path:'/app/home'
+        });
+      }else{
+        this.$router.push({
+            path:'/main/mine'
+        });
+      }
+        
+    },
+    /**
+     * @description 提交验证
+     * @returns void
+     * **/
+    hanldClick(){
+      /**
+       * 1.发起验证请求
+       * 2.验证成功后返回状态页面
+       * 
+       * **/
+      this.cont = this.cont + 1
+      this.$api.tltMerOpenPayAuth({
+        payAmt: Number(this.payAmt) 
+      }).then(res=>{
+        this.isValid = res.body.isValid
+        this.cont = res.body.matchNum
+        if(this.isValid){
+          this.$router.push({
+            path:'/tonglian/open-result',
+            query:{
+              verificationDone:'done',
+              ...this.$route.query
+            }
+          })
+        }else{
+          if(this.cont == 2){
+            this.show2 = true
+            
+          }else{
+            this.show = true
+          }
+        }
+      })
+    },
+  },
+  beforeRouteLeave (to, from, next) {
+    // ...
+    Toast.clear()
+    clearInterval(this.timer)
+    next()
+  }
+}
+</script>
+<style lang="less">
+    .verification-page{
+        &{
+            min-height: 100vh;
+            background-color: #f5f5f7;
+        }
+        .ipt-box{
+            &{
+                padding: 15px 20px;
+                box-sizing: border-box;
+                background: #fff;
+                width: 100%;
+                margin-top: 15px;
+            }
+            .ipt-p{
+              margin-bottom: 10px;
+            }
+            .ipt-tip{
+              font-size: 30px;
+              font-weight: 550;
+              margin-right: 10px;
+            }
+            .ipt{
+              border: 0;
+              outline: none;
+              font-size:20px;
+              height: 30px;
+              line-height: 30px;
+              width: 80%;
+            }
+            input::-webkit-input-placeholder { /* WebKit browsers */ 
+              font-size: 20px;
+              color: #999999;
+            } 
+
+            input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ 
+              font-size: 20px;
+              color: #999999;
+            } 
+
+            input::-moz-placeholder { /* Mozilla Firefox 19+ */ 
+              font-size: 20px;
+              color: #999999;
+            } 
+
+            input:-ms-input-placeholder { /* Internet Explorer 10+ */ 
+              font-size: 20px;
+              color: #999999;
+            } 
+        }
+        .tip-box{
+            &{
+                box-sizing: border-box;
+                width: 100%;
+                padding: 15px 20px;
+            }
+            .tip-p{
+              color: #999999;
+            }
+        }
+        .confirm-btn{
+          width: 94%;
+          height: 44px;
+          background: #896EDB;
+          border-radius: 22px;
+          margin-left: 3%;
+          margin-top: 100px;
+          outline: none;
+          border: 0;
+          color: #fff;
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/old/merchant/tonglian/withdrawal-history.vue b/src/views/old/merchant/tonglian/withdrawal-history.vue
new file mode 100644
index 0000000..d1ef851
--- /dev/null
+++ b/src/views/old/merchant/tonglian/withdrawal-history.vue
@@ -0,0 +1,139 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-08-17 15:34:17
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-10-12 20:30:01
+ * @Description: 
+-->
+<template>
+    <div class="withdrawal-history-page">
+        <v-navbar title="提现记录"></v-navbar>
+        <div class="history-box">
+            <van-list
+              offset="50"
+              :immediate-check="false"
+              v-model="loading"
+              :finished="finished"
+              :error.sync="error"
+              finished-text="没有更多了"
+              error-text="加载失败,请稍后再试"
+              @load="onLoad"
+            >
+                <div class="list-item" v-for="(item,index) in list" :key="index">
+                    <div class="left">
+                        <p>{{item.statusName}}</p>
+                        <p>{{item.withdTime | dateFmt(item.withdTime)}}</p>
+                    </div>
+                    <div class="right">
+                        <p>{{item.status==0?'':item.status==1?'':item.status==2?'+':''}}{{item.amount}}</p>
+                        <p>{{item.settType=='01'?'银行卡':'支付宝'}}&nbsp;{{item.withdAccount}}</p>
+                    </div> 
+                </div>
+            </van-list>
+        </div>
+    </div>
+</template>
+<script>
+import dateFmt from "../../../../utils/date";
+export default {
+    data() {
+        return {
+            list:[],
+            error:false,//加载错误
+            loading: false,//加载中
+            finished: false,//全部加载完成
+            lastId:'',//最后一条Id
+        }
+    },
+    filters: {
+      dateFmt(val) {
+        return dateFmt(val, "YYYY-MM-DD HH:mm");
+      },
+    },
+    created(){
+        this.onLoad()
+    },
+    methods:{
+        onLoad(){
+            this.loading = true
+            this.$api.tltWalletWithdrawDetails({
+                withdrawId:this.lastId
+            }).then(res=>{
+                if(res.body.items){
+                    if(res.body.items.length < 10){
+                        this.list = [...this.list,...res.body.items]
+                        this.lastId = this.list[this.list.length-1].withdrawId
+                        this.loading = false
+                        this.finished = true
+                    }else{
+                        this.list = [...this.list,...res.body.items]
+                        this.lastId = this.list[this.list.length-1].withdrawId
+                        this.loading = false
+                    }
+                }else{
+                    this.loading = false
+                    this.finished = true
+                }
+            }).catch(err=>{
+                this.error = true
+            })
+        }
+    },
+    
+}
+</script>
+<style lang="less">
+    .withdrawal-history-page{
+        &{
+            background: #F5F5F7;
+            min-height: 100vh;
+        }
+        .history-box{
+            margin-top: 10px;
+            box-sizing: border-box;
+            padding: 0 17px;
+            background: #fff;
+            .list-item{
+                display: flex;
+                border-bottom:1px solid #F1F1F1;
+                padding: 16px 0;
+                .left{
+                    width: 40%;
+                    p:nth-of-type(1){
+                        margin-bottom: 10px;
+                        font-size:14px;
+                        font-family:PingFang SC;
+                        font-weight:500;
+                        color:rgba(51,51,51,1);
+                    }
+                    p:nth-of-type(2){
+                        font-size:12px;
+                        font-family:PingFang SC;
+                        font-weight:500;
+                        color:rgba(153,153,153,1);
+                    }
+                }
+                .right{
+                    width: 59%;
+                    text-align: right;
+                    p:nth-of-type(1){
+                        margin-bottom: 10px;
+                        font-size:16px;
+                        font-family:PingFang SC;
+                        font-weight:bold;
+                        color:rgba(51,51,51,1);
+                    }
+                    p:nth-of-type(2){
+                        font-size:12px;
+                        font-family:PingFang SC;
+                        font-weight:500;
+                        color:rgba(153,153,153,1);
+                    }
+                }
+            }
+            .list-item:last-child{
+                border-bottom:0;
+            }
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/old/merchant/tonglian/withdrawal-result.vue b/src/views/old/merchant/tonglian/withdrawal-result.vue
new file mode 100644
index 0000000..f744388
--- /dev/null
+++ b/src/views/old/merchant/tonglian/withdrawal-result.vue
@@ -0,0 +1,115 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-08-17 15:34:00
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-10-12 17:22:28
+ * @Description: 通联提现结果页面
+-->
+<template>
+  <div class="withdrawal-result-page">
+    <v-navbar title="提现结果"></v-navbar>
+    <div class="res-box">
+      <img
+        v-if="status == 2"
+        src="../../../../../static/img/cg.png"
+        alt="提现成功"
+      />
+      <img
+        v-if="status == 0"
+        src="../../../../../static/img/ing.png"
+        alt="初始化"
+      />
+      <img
+        v-if="status == 1"
+        src="../../../../../static/img/ing.png"
+        alt="提现中"
+      />
+      <img
+        v-if="status == 3"
+        src="../../../../../static/img/cs.png"
+        alt="提现失败"
+      />
+      <p>{{ resultText }}</p>
+    </div>
+    <button class="btn-y" v-show="status != 0 && status != 1" @click="$router.go(-1)">返回</button>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      status: 0, //0 初始化  1提现中 2成功 3失败
+      resultText: "提现中,请稍后",
+      timer:"",
+    };
+  },
+  created() {
+      this.init()
+  },
+  methods: {
+    init() {
+      clearInterval(this.timer)
+      this.$api
+        .tltWalletWithdrawStatus({
+          withdrawId: this.$route.query.withdrawId,
+        })
+        .then((res) => {
+       
+          this.status = res.body.status;
+          if (res.body.status == 3) {
+            this.resultText = "提现失败,请重试";
+          } else if (res.body.status == 2) {
+            this.resultText = "提现成功";
+          } else {
+            this.resultText = "提现中,请稍后";
+            this.timer = setInterval(()=>{
+                this.init()
+            },5000)
+          }
+        });
+    },
+  },
+  beforeRouteLeave (to, from, next) {
+      clearInterval(this.timer)
+      next()
+  }
+};
+</script>
+<style lang="less">
+.withdrawal-result-page {
+  & {
+    min-height: 100vh;
+    background: #f5f5f7;
+  }
+  .res-box {
+    width: 96vw;
+    margin-left: 2vw;
+    box-sizing: border-box;
+    padding: 33px;
+    margin-top: 10px;
+    background: #fff;
+    text-align: center;
+    img {
+      width: 95px;
+      height: 95px;
+    }
+    p {
+      margin-top: 17px;
+      font-size: 14px;
+      color: #333;
+      font-weight: 500;
+    }
+  }
+  .btn-y{
+    width: 94%;
+    margin-left: 3%;
+    margin-top: 20px;
+    color:#fff ;
+    height: 44px;
+    background: #896edb;
+    border: 0;
+    outline: none;
+    border-radius: 22px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/merchant/tonglian/withdrawal.vue b/src/views/old/merchant/tonglian/withdrawal.vue
new file mode 100644
index 0000000..53b6e14
--- /dev/null
+++ b/src/views/old/merchant/tonglian/withdrawal.vue
@@ -0,0 +1,408 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-10-24 15:13:33
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-20 17:26:19
+ * @Description: 
+ -->
+<template>
+  <div class="tonglian-withdrawals-page">
+    <v-navbar title="提现">
+      <div slot="right" @click="goHistory">提现纪录</div>
+    </v-navbar>
+    <!-- 账号 -->
+    <div class="zfb-box">
+      <div class="left">
+        <p>提现至</p>
+      </div>
+      <div class="right">
+        <span
+          v-if="sta == '02'"
+          style="color: #333333; font-size: 14px; margin-bottom: 5px"
+          >支付宝账号</span
+        >
+        <span
+          v-if="sta == '01'"
+          style="color: #333333; font-size: 14px; margin-top: 9px"
+          >银行卡账号</span
+        >
+        <span style="color: #333333; font-size: 14px">{{
+          withdAccount.replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2")
+        }}</span>
+      </div>
+    </div>
+    <!-- 金额 -->
+    <div class="money-box">
+      <div class="tit">
+        <p>提现金额</p>
+      </div>
+      <div class="input-box">
+        <span>¥</span>
+        <van-field
+          v-model="amount"
+          placeholder="请输入提现金额"
+          style="
+            width: 70%;
+            display: inline-block;
+            margin-left: 30px;
+            font-size: 18px;
+          "
+          :border="false"
+          maxlength="10"
+        />
+        <span @click="allWithd">全部提现</span>
+      </div>
+      <div class="yue">
+        <p>
+          <span>可提现金额:</span>
+          <span>¥{{ this.balanceAmt }}</span>
+        </p>
+      </div>
+    </div>
+    <van-button
+      round
+      type="info"
+      color="#896EDB"
+      style="
+        width: 86%;
+        margin-top: 60px;
+        margin-left: 7%;
+        background: #896edb;
+        color: #fff;
+        border: 0.02rem solid rgb(137, 110, 219);
+      "
+      @click="getWidthrawals"
+      >下一步</van-button
+    >
+    <!-- 短信弹窗 -->
+    <van-popup
+      v-model="showSendCode"
+      style="width: 75%; text-align: center; padding: 34px 18px 20px 18px"
+    >
+      <van-icon
+        name="cross"
+        size="20px"
+        style="position: absolute; right: 10px; top: 10px; color: #cccccc"
+        @click="closePop"
+        color="#CCCCCC"
+      />
+      <p style="font-size: 16px; font-weight: 500; color: rgba(0, 0, 0, 1)">
+        请确认提现金额
+      </p>
+      <p
+        style="
+          font-size: 14px;
+          font-weight: 500;
+          color: rgba(153, 153, 153, 1);
+          margin: 12px 0 20px 0;
+        "
+      >
+        您当前发起提现金额为:
+      </p>
+      <p style="font-size: 18px;">{{amount}}元</p>
+      <!-- <div class="withdrawal-code-box">
+        <input
+          type="text"
+          v-model="authCode"
+          placeholder="请输入验证码"
+          maxlength="6"
+        />
+        <van-button size="small" color="#896EDB" plain type="info" @click="getCode">{{
+          btnText
+        }}</van-button>
+      </div> -->
+      <button class="withdrawal-btn" @click="goResrult">发起提现</button>
+    </van-popup>
+  </div>
+</template>
+<script>
+import Vue from "vue";
+import QRCode from "qrcode";
+//import { setInterval } from 'timer';
+import { Notify,Toast } from "vant";
+import { Icon } from "vant";
+
+Vue.use(Toast);
+Vue.use(Icon);
+Vue.use(Notify);
+export default {
+  data() {
+    return {
+      btnDis: false, //获取验证码按钮是否禁用
+      btnText: "发送验证码",
+      params: {}, //路由接收的参数
+      showSendCode: false, //短信验证码弹窗
+      showTip: false, //提示弹窗
+      amount: "", //提现金额
+      timer: "", //轮训定时器
+      balanceAmt: "", //可提现余额
+      branchName: "", //开户支行名称
+      withdAccount: "", //提现账户
+      legalMblNo: "", //提现手机号
+      authCode: "", //验证码
+      withdrawId: "", //提现id
+      sta: 1,
+      hasGetCode:true,
+    };
+  },
+  created() {
+    this.$api.tltWalletInit().then((res) => {
+      this.balanceAmt = res.body.balanceAmt;
+      this.sta = res.body.settType;
+      this.branchName = res.body.branchName;
+      this.withdAccount = res.body.withdAccount;
+      this.legalMblNo = res.body.legalMblNo;
+    });
+  },
+  mounted() {
+    this.params = this.$route.params;
+  },
+  updated() {
+    window.onresize;
+  },
+  beforeDestroy() {
+    clearInterval(this.timer);
+    this.timer = null;
+  },
+  methods: {
+    /**
+     * @description:获取验证码
+     * @return void
+     * **/
+    getCode() {
+      let _this = this;
+      this.$api
+        .tltWalletSendSmsCode({
+          amount: this.amount,
+        })
+        .then((res) => {
+          this.hasGetCode = true
+          this.withdrawId = res.body.withdrawId;
+          this.btnText = 60;
+          this.btnDis = true;
+          this.timer = setInterval(function () {
+            if (_this.btnText == 1) {
+              _this.btnText = "重新获取";
+              _this.btnDis = false;
+              clearInterval(_this.timer);
+            } else {
+              _this.btnText = --_this.btnText;
+            }
+          }, 1000);
+        });
+    },
+    /**
+     * @description:弹出层关闭
+     * @return void
+     * **/
+    closePop() {
+      this.showSendCode = false;
+    },
+    /**
+     * @description:提现函数
+     * @return void
+     * **/
+    getWidthrawals() {
+      if (this.amount <= 0) {
+        Notify({ type: "primary", message: "提现金额需大于0元" });
+      }else if (this.amount > this.balanceAmt) {
+        Notify({ type: "primary", message: "提现金额不得大于余额" });
+      } else {
+        this.showSendCode = true;
+        this.getCode()
+      }
+    },
+    /**
+     * @description:全部提现
+     * @return void
+     * **/
+    allWithd() {
+      this.amount = this.balanceAmt;
+    },
+    /**
+     * @description:提交提现,跳转提现结果
+     * @return void
+     * **/
+    goResrult() {
+      if(!this.hasGetCode){
+         Toast.fail('请先获取验证码');
+         return false
+      }
+      this.$api
+        .tltWalletWithdraw({
+          withdrawId: this.withdrawId,
+          authCode: '888888',
+          amount: this.amount,
+        })
+        .then((res) => {
+          this.$router.push({
+            path: "/tonglian/Withdrawal-result",
+            query: {
+              withdrawId: this.withdrawId,
+            },
+          });
+        });
+    },
+    /**
+     * @description:跳转提现记录
+     * @return void
+     * **/
+
+    goHistory() {
+      this.$router.push({
+        path: "/tonglian/withdrawal-history",
+      });
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+.tonglian-withdrawals-page {
+  & {
+    background-color: #f0f1f3;
+    height: 100vh;
+  }
+  .clearfix {
+    *zoom: 1;
+  }
+  .clearfix:after {
+    clear: both;
+    display: block;
+    visibility: hidden;
+    height: 0;
+    content: ".";
+  }
+  .zfb-box {
+    height: 60px;
+    width: 94%;
+    background-color: white;
+    border-radius: 3px;
+    margin-left: 3%;
+    margin-top: 20px;
+    display: flex;
+    .left {
+      width: 20%;
+      box-sizing: border-box;
+      padding-left: 13px;
+      line-height: 60px;
+      p {
+        color: #333333;
+        font-size: 18px;
+        font-weight: Bold;
+        text-align: left;
+      }
+    }
+    .right {
+      width: 84%;
+      box-sizing: border-box;
+      padding-left: 10px;
+      line-height: 60px;
+    }
+  }
+  .money-box {
+    width: 94%;
+    background-color: white;
+    margin-left: 3%;
+    height: 145px;
+    margin-top: 20px;
+    border-radius: 3px;
+    .tit {
+      height: 50px;
+      box-sizing: border-box;
+      padding: 18px 0 17px 13px;
+      p {
+        color: #333333;
+        font-weight: bold;
+        font-size: 16px;
+      }
+    }
+    .input-box {
+      border-bottom: 1px solid #eeeeee;
+      box-sizing: border-box;
+      padding-left: 13px;
+      padding-right: 12px;
+      vertical-align: middle;
+      position: relative;
+      span:nth-of-type(1) {
+        font-size: 18px;
+        display: inline-block;
+        position: absolute;
+        bottom: 15px;
+        z-index: 1000;
+      }
+      span:nth-of-type(2) {
+        font-size: 14px;
+        color: #896edb;
+        text-decoration: underline;
+        position: absolute;
+        bottom: 15px;
+        z-index: 1000;
+      }
+    }
+    .yue {
+      box-sizing: border-box;
+      padding-left: 13px;
+      padding-top: 16px;
+      p {
+        span:nth-of-type(1),
+        span:nth-of-type(3) {
+          font-size: 12px;
+          color: #999999;
+        }
+        span:nth-of-type(2) {
+          font-size: 12px;
+        }
+      }
+    }
+  }
+  .notes {
+    font-size: 12px;
+    color: #999999;
+    text-align: center;
+    margin-top: 12px;
+  }
+  .payCode {
+    .myimg {
+      position: absolute;
+      top: 45px;
+      left: 85px;
+      z-index: 1000;
+    }
+  }
+  .prod {
+    p:nth-of-type(1) {
+      font-size: 18px;
+      color: #333333;
+      margin-bottom: 20px;
+      margin-top: 25px;
+    }
+    p:nth-of-type(2),
+    p:nth-of-type(3) {
+      font-size: 12px;
+      color: #999999;
+      margin-bottom: 5px;
+    }
+  }
+  .withdrawal-btn {
+    width: 70%;
+    height: 36px;
+    background: rgba(137, 110, 219, 1);
+    border-radius: 18px;
+    border: 0;
+    outline: none;
+    margin-top: 28px;
+    color: #fff;
+  }
+  .withdrawal-code-box {
+    text-align: center;
+    border-bottom: 1px solid #eeeeee;
+    padding-bottom: 5px;
+    display: flex;
+    input {
+      border: 0;
+      width: 66%;
+      text-align: center;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/merchant/xyg/merBaseInfo.vue b/src/views/old/merchant/xyg/merBaseInfo.vue
new file mode 100644
index 0000000..d4d7a6b
--- /dev/null
+++ b/src/views/old/merchant/xyg/merBaseInfo.vue
@@ -0,0 +1,267 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description:
+ -->
+<template>
+    <div class="open-xyg-page">
+        <group>
+            <x-input title='营业执照号' v-model.trim="storeInfo.licenseNo" readonly text-align='right'></x-input>
+            <x-input title='营业执照名称' v-model.trim="storeInfo.orgName" placeholder='请输入' :max='50'  text-align='right'></x-input>
+            <datetime v-model="storeInfo.issueDate" format="YYYY-MM-DD" title="注册日期" placeholder="请选择"></datetime>
+        </group>
+        <group>
+            <van-field v-model.trim="storeInfo.addrText"  clearable :readonly="true" right-icon="arrow" label="注册省市区" placeholder="                                        请选择"
+                       @click="isShowArea = !isShowArea"  text-align='right'/>
+            <x-input title='注册详细地址' v-model.trim="storeInfo.regDetailAddr" placeholder='请输入' :max='100' text-align='right'></x-input>
+            <x-input title='渠道编码' v-model.trim="storeInfo.outMerchantNo" placeholder='请输入' :max='100'  text-align='right'></x-input>
+            <x-input title='渠道名称' v-model.trim="storeInfo.merchantName" placeholder='请输入' :max='100'  text-align='right'></x-input>
+        </group>
+
+        <f-space></f-space>
+        <group>
+            <x-input title='法人名称' v-model.trim="storeInfo.legalName" readonly text-align='right'></x-input>
+            <x-input title='法人身份证号' v-model.trim="storeInfo.legalIdCardNo" readonly text-align='right'></x-input>
+            <x-input title='法人身份证地址' v-model.trim="storeInfo.legalIdCardAddress" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='法人手机号' v-model.trim="storeInfo.legalPhone" placeholder='请输入' :max='11' text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <x-input title='联系人姓名' v-model.trim="storeInfo.contactName" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='联系人手机号' v-model.trim="storeInfo.contactPhone" placeholder='请输入' :max='11' text-align='right'></x-input>
+            <x-input title='联系人邮箱' v-model="storeInfo.contactEmail" text-align='right' max="50" placeholder="请输入"></x-input>
+            <selector title='与企业关系' placeholder='请选择' @on-change='handleCusRefChange' v-model="storeInfo.objContactReal"
+                      :options='merRefList' :value-map="['code','name']" direction='rtl'></selector>
+        </group>
+        <f-space></f-space>
+        <group>
+            <van-field v-model.trim="storeInfo.merAddrText" clearable :readonly="true" right-icon="arrow" label="经营省市区"
+                       @click="isShowMerArea = !isShowMerArea"  text-align='right'/>
+            <x-input title='经营详细地址' v-model.trim="storeInfo.bizDetailAddr" placeholder='请输入' text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <selector title='商户账号类型' placeholder='请选择' @on-change='handleCardTypeChange' v-model="storeInfo.acctType"
+                      :options='cardTypeList' :value-map="['code','name']" direction='rtl'></selector>
+            <x-input title='商户账户名称' v-model.trim="storeInfo.acctName" placeholder='请输入' text-align='right' />
+            <selector title='商户银行名称' placeholder='请选择' @on-change='handleBankChange' v-model="storeInfo.acctBankname"
+                :options='bankList' :value-map="['code','name']" direction='rtl'></selector>
+            <x-input title='商户银行账号' v-model.trim="storeInfo.acctNo" placeholder='请输入' :max='30' text-align='right'/>
+            <x-input v-if="storeInfo.acctType===1" title='商户开户支行名称' v-model.trim="storeInfo.acctOpenBankname" placeholder='请输入' :max='30' text-align='right'/>
+            <x-input v-if="storeInfo.acctType===1" title='开户行行号' v-model.trim="storeInfo.acctCnaps" :max='20' placeholder='请输入'
+                     text-align='right'></x-input>
+            <selector v-if="storeInfo.acctType===2" title='账户企业关系' placeholder='请选择' @on-change='handleMerRefChange' v-model="storeInfo.acctEnpRel"
+                      :options='merRefList' :value-map="['code','name']" direction='rtl'></selector>
+        </group>
+        <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+            <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+        </van-popup>
+        <van-popup v-model="isShowMerArea" position="bottom" :close-on-click-overlay="false">
+            <van-area ref='Area' :area-list='areaList' @cancel="closeMerAreaModal" @confirm="setMerAreaValue"></van-area>
+        </van-popup>
+    </div>
+
+</template>
+
+<script>
+    import {calcArea} from '@/utils/index';
+    import {
+        mapState,
+        mapActions
+    } from 'vuex';
+    import {
+        Datetime,
+        XAddress,
+    } from 'vux';
+    export default {
+        name: 'xygMerBase',
+        components: {
+            Datetime,
+            XAddress,
+            ...mapState(['areaList'])
+        },
+        data() {
+            return {
+                merValue:'',
+                areaList:{//地区列表
+                    province_list:{}, //省
+                    city_list:{}, //市
+                    county_list:{}, //地区、县
+                },
+                merAreaList:{//地区列表
+                    province_list:{}, //省
+                    city_list:{}, //市
+                    county_list:{}, //地区、县
+                }
+            };
+        },
+        props: {
+            addressList: {
+                type: Array,
+                default: []
+            },
+            address: {
+                type: Array,
+                default: []
+            },
+            isShowArea: {
+                type: Boolean,
+                default: false
+            },
+            isShowMerArea: {
+                type: Boolean,
+                default: false
+            },
+            storeInfo: {
+                type: Object,
+            },
+            // 银行列表
+            bankList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+            cardTypeList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+            merRefList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+        },
+        computed:{
+            calcAddress:{
+                get(){
+                    return this.address || [];
+                },
+                set(newV){
+                    this.$emit('addr-change', newV);
+                }
+            }
+
+        },
+        methods: {
+            ...mapActions(['getArea']),
+            // 获取地区列表
+            getArea() {
+                Vue.prototype.$api.getArea().then((res) => {
+                    let { provList } = res.body;
+                    let obj = calcArea(provList)
+                    this.areaList =  {
+                        province_list:obj.province_list,
+                        city_list:obj.city_list,
+                        county_list:obj.county_list
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            getMerArea() {
+                this.merAreaList = this.areaList;
+            },
+            //关闭地区弹窗
+            closeAreaModal() {
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            //关闭地区弹窗
+            closeMerAreaModal() {
+                this.isShowMerArea = false;
+                this.$refs.Area.reset()
+            },
+            //保存 地区选择
+            setAreaValue(arr) {
+                this.storeInfo.addrText = arr[0].name + '-' + arr[1].name + '-' + arr[2].name;
+                this.storeInfo.regProvinceCode = arr[0].code;
+                this.storeInfo.regCityCode = arr[1].code;
+                this.storeInfo.regDistrictCode = arr[2].code;
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            //经营地保存地区选择
+            setMerAreaValue(arr) {
+                this.storeInfo.merAddrText = arr[0].name + '-' + arr[1].name + '-' + arr[2].name;
+                this.storeInfo.bizProvinceCode = arr[0].code;
+                this.storeInfo.bizProvinceName = arr[0].name;
+                this.storeInfo.bizCityCode = arr[1].code;
+                this.storeInfo.bizCityName = arr[1].name;
+                this.storeInfo.bizDistrictCode = arr[2].code;
+                this.storeInfo.bizDistrictName = arr[2].name;
+                this.isShowMerArea = false;
+                this.$refs.Area.reset()
+            },
+            // 处理银行名称的改变
+            handleBankChange(val) {
+                let currentEle = this.bankList.find(item => {
+                    return item.code === val;
+                })
+            },
+            // 账号类型
+            handleCardTypeChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.cardTypeList)).find((item) => {
+                    return item.code = val;
+                });
+                this.storeInfo.acctTypeName = currentEle.name;
+            },
+            // 商户与账户关系
+            handleMerRefChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.merRefList)).find((item) => {
+                    return item.code = val;
+                });
+                this.storeInfo.acctEnpRelName = currentEle.name;
+            },
+            // 商户与账户关系
+            handleCusRefChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.merRefList)).find((item) => {
+                    return item.code = val;
+                });
+            }
+        },
+        created() {
+            this.getArea();
+            this.getMerArea();
+            this.merAddrValue = this.merAddrText;
+        },
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-xyg-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/xyg/merOpen.vue b/src/views/old/merchant/xyg/merOpen.vue
new file mode 100644
index 0000000..cca2beb
--- /dev/null
+++ b/src/views/old/merchant/xyg/merOpen.vue
@@ -0,0 +1,413 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:20:18
+ * @Description:
+ -->
+<template>
+    <div class="open-xyg-index">
+        <x-header :title="'开通信用购'" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+        </x-header>
+        <!-- v-show="step === 1"  -->
+        <base-info
+            v-show="step === 1"
+            :cardTypeList="cardTypeList"
+            :merRefList="merRefList"
+            :bankList="bankList"
+            :address="address"
+            :addressList="addressList"
+            :storeInfo="storeInfo"
+            @addr-change="setCitycode"
+        >
+        </base-info>
+        <!-- 信用购的文件上传type + 6 -->
+        <mer-pictures v-show="step === 2" :storeInfo="storeInfo" :filetype="9" ></mer-pictures>
+        <!-- <store-pictures  :storeInfo="storeInfo" :filetype="6" ></store-pictures> -->
+        <f-space type="large"></f-space>
+        <f-button @on-click="handleNextStep" fixed>{{ step === 1 ? '下一步' : '提交开通' }}</f-button>
+    </div>
+</template>
+
+<script>
+    import BaseInfo from './merBaseInfo.vue';
+    import MerPictures from './merPictures.vue';
+    import formCheckAndComt from '@/utils/formCheckAndComb';
+    import {calcArea} from '@/utils/index';
+    import {
+        dateFormat
+    } from 'vux'
+
+    export default {
+        name: 'xygMerOpen',
+        components: {
+            BaseInfo,
+            MerPictures
+        },
+        data() {
+            return {
+                orgType: 0,
+                step: 1,
+                stepText: '下一步',
+                bankList: [],
+                cardTypeList: [],
+                merRefList:[],
+                addressList:[],
+                address:[],
+                storeInfo: {
+                    merName: '',
+                    legalPhone:'',
+                    merAddrText:'',
+                    contactPhone:'',
+                    contactName:'',
+                    acctBankname:'',
+                    orgName:'',
+                    legalIdCardAddress:'',
+                    issueDate:'',
+                    regDetailAddr:'',
+                    addr:{},
+                    isShowArea:false,
+                    regCityCode:'',
+                    regCityName:'',
+                    regDistrictCode:'',
+                    regDistrictName:'',
+                    regProvinceCode:'',
+                    regProvinceName:'',
+                    contactEmail:'',
+                    addrText:'',
+                    bizProvinceCode:'',
+                    bizProvinceName:'',
+                    bizCityCode:'',
+                    bizCityName:'',
+                    bizDistrictCode:'',
+                    bizDistrictName:'',
+                    acctOpenBankname:'',
+                    provCode:'',//省code
+                    cityCode:'',//市code
+                    bankNo:'',//开户行行号
+                    legalIdCardNo:'',
+                    bizDetailAddr:'',
+                    licenseNo: '',
+                    acctCnaps: '',
+                    merAddr: '',
+                    merDtlAddr: '',
+                    merArea: '',
+                    foundDate: '',
+                    legalName: '',
+                    legalIdNo: '',
+                    legalMblNo: '',
+                    legalHomeAddr: '',
+                    outMerchantNo: '',
+                    merchantName: '',
+                    acctName: '', // 户名
+                    acctNo: '', // 银行卡号
+                    acctType: '', // 账号类型code
+                    acctEnpRel:'',//账户企业关系
+                    acctEnpRelName:'',//账户企业关系
+                    acctTypeName: '', // 账号类型name
+                    objContactReal: '',//联系人与企业关系
+                    licencePhotos: [], // 营业执照
+                    legalCardPhotos: [], // 法人身份证
+                    legalCardPhotosF: [], //法人身份证反面
+                    legalCardPhotosZ: [], //法人身份证正面
+                },
+                // 验证开户信息字段
+                storeCheckInfo: [
+                    {
+                        key: 'orgName',
+                        tipType: 1,
+                        message: '营业执照名称'
+                    },
+                    {
+                        key: 'legalPhone',
+                        tipType: 1,
+                        message: '法人手机号'
+                    },
+                    {
+                        key: 'acctBankname',
+                        tipType: 2,
+                        message: '银行名称'
+                    },
+                    {
+                        key: 'acctName',
+                        tipType: 1,
+                        message: '账户名称'
+                    },
+                    {
+                        key: 'acctType',
+                        tipType: 2,
+                        message: '账号类型'
+                    },
+                    {
+                        key: 'contactEmail',
+                        tipType: 1,
+                        type:"isEmail",
+                        message: '联系人邮箱'
+                    },
+                    {
+                        key: 'contactName',
+                        tipType: 1,
+                        message: '联系人手机号'
+                    },
+                    {
+                        key: 'contactPhone',
+                        tipType: 1,
+                        message: '联系人姓名'
+                    },
+                    {
+                        key: 'addrText',
+                        tipType: 2,
+                        message: '省市区'
+                    },
+                    {
+                        key: 'legalIdCardAddress',
+                        tipType: 1,
+                        message: '法人身份证地址'
+                    },
+                    {
+                        key: 'regDetailAddr',
+                        tipType: 1,
+                        message: '注册详细地址'
+                    },
+                    {
+                        key: 'issueDate',
+                        tipType: 2,
+                        message: '注册日期'
+                    },
+                    {
+                        key: 'merchantName',
+                        tipType: 1,
+                        message: '渠道名称'
+                    },
+                    {
+                        key: 'outMerchantNo',
+                        tipType: 1,
+                        message: '渠道编码'
+                    },
+                ],
+                bankNo:''
+            };
+        },
+        computed:{
+            // 通过icon字段判断是智享云还是购机直降
+        },
+        created(){
+            this.$api.getArea().then(res => {
+                this.addressList = res.body.provList;
+            });
+            this.init();
+            this.orgType = Number(this.$route.query.orgType);
+        },
+        methods: {
+            // 获取地区列表
+            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) => {
+
+                });
+            },
+            // 设置地区code
+            setCitycode(val){
+                this.storeInfo.provCode = val[0];
+                this.storeInfo.cityCode = val[1];
+                this.address = val;
+            },
+            goBackPage() {
+                if (this.step === 2) {
+                    this.step -= 1;
+                } else {
+                    this.$router.push({
+                        path: '/main/productManagement'
+                    });
+                }
+            },
+            // 初始化页面
+            init() {
+                let fn = this.$api.xygInitOpen;
+                fn().then(res => {
+                    let body = res.body;
+                    this.bankList = body.bankList;
+                    this.cardTypeList = body.acctTypeList;
+                    this.merRefList = body.acctEnpRelList;
+                    for (let i in this.storeInfo) {
+                        if(Array.isArray(this.storeInfo[i])){
+                            this.storeInfo[i] = body[i] ? body[i] : [];
+                            console.log(i+":"+this.storeInfo[i]);
+                        }else{
+                            this.storeInfo[i] = body[i] ? body[i] : '';
+                        }
+                    }
+                    if(body.cityCode){
+                        this.address.push(body.provCode+'')
+                        this.address.push(body.cityCode+'')
+                    }
+                    this.storeInfo.merAddrText = this.storeInfo.bizProvinceName +'-'+ this.storeInfo.bizCityName +'-'+ this.storeInfo.bizDistrictName;
+                    if(this.storeInfo.regProvinceName) {
+                        this.storeInfo.addrText = this.storeInfo.regProvinceName + '-' + this.storeInfo.regCityName + '-' + this.storeInfo.regDistrictName;
+                    }
+                    if (this.storeInfo.licencePhotos && this.storeInfo.licencePhotos.length) {
+                        let fileId = this.storeInfo.licencePhotos[0];
+                        this.storeInfo.licencePhotos = [];
+                        this.storeInfo.licencePhotos.push({
+                            fileId: fileId,
+                            fileUrl: '/'+fileId
+                        });
+                    }
+                    if (this.storeInfo.legalCardPhotosZ && this.storeInfo.legalCardPhotosZ.length) {
+                        let fileIdZ = this.storeInfo.legalCardPhotosZ[0];
+                        let fileIdF = this.storeInfo.legalCardPhotosF[0];
+                        this.storeInfo.legalCardPhotos = [];
+                        this.storeInfo.legalCardPhotos.push({
+                            fileId: fileIdZ,
+                            fileUrl: '/'+fileIdZ
+                        });
+                        this.storeInfo.legalCardPhotos.push({
+                            fileId: fileIdF,
+                            fileUrl: '/'+fileIdF
+                        });
+                    }
+                });
+            },
+            // 处理点击下一步跳转处理
+            handleNextStep() {
+                // 判断表单字段必填性
+                if (this.step === 1) {
+                    // 信用购增加这两个字段验证
+                    let rules = [
+                    ]
+                    // 对公时验证开户行行号
+                    if(this.storeInfo.acctType ===1){
+                        rules.push({
+                            key: 'acctOpenBankname',
+                            tipType: 1,
+                            message: '开户支行名称'
+                        });
+                        rules.push({
+                            key: 'acctCnaps',
+                            tipType: 1,
+                            message: '开户行行号'
+                        });
+                        rules.push({
+                            key: 'acctNo',
+                            tipType: 1,
+                            message: '银行账号'
+                        });
+                    }
+                    // 对私时验证账户企业关系
+                    if(this.storeInfo.acctType ===2){
+                        rules.push({
+                            key: 'acctEnpRel',
+                            tipType: 2,
+                            message: '账户企业关系'
+                        });
+                        rules.push({
+                            key: 'acctNo',
+                            tipType: 1,
+                            type:"bankCardNo",
+                            message: '银行账号'
+                        });
+                    }
+                    this.storeCheckInfo.push(...rules)
+                    // 判断表单是否必填
+                    if (!formCheckAndComt.checkRequiredField(this.storeCheckInfo,this.storeInfo,this)) {
+                        return false;
+                    }
+                    this.step += 1;
+                } else {
+                    this.handleSubmitOpen();
+                }
+            },
+            // 处理提交
+            handleSubmitOpen() {
+
+                // 需要判断图片的字段
+                let checkPicList = [{
+                        checkField: 'licencePhotos',
+                        msg: '营业执照照片'
+                    },
+                    {
+                        checkField: 'legalCardPhotos',
+                        msg: '法人身份证正反面照片'
+                    },
+                ];
+                // 判断图片是否上传
+                for (let item of checkPicList) {
+                    if (!(this.storeInfo[item.checkField] instanceof Array &&
+                            this.storeInfo[item.checkField].length)) {
+                        this.$notify('请上传' + item.msg);
+                        return false;
+                    }
+                    if (item.checkField == 'legalCardPhotos' && this.storeInfo[item.checkField].length < 2){
+                        this.$notify('请上传' + item.msg);
+                        return false;
+                    }
+                }
+
+                // 由于后端初始化返回的图片字段{url: xx, id: 121}, 而此时在提交的时候,我们
+                // 提交图片字段为[id1, id2], 为id的列表
+                this.storeInfo.legalCardPhotosF = [];
+                this.storeInfo.legalCardPhotosZ = [];
+                let picIdList = {
+                    licencePhotos: [],
+                    legalCardPhotosF: [],
+                    legalCardPhotosZ: [],
+                };
+                picIdList.legalCardPhotosF.push(this.storeInfo.legalCardPhotos[0].fileId);
+                picIdList.legalCardPhotosZ.push(this.storeInfo.legalCardPhotos[1].fileId);
+                for (let i in picIdList) {
+                    if (this.storeInfo[i] instanceof Array &&
+                        this.storeInfo[i].length) {
+                        // 后端图片初始文件id为id.而控件上传id为fieldId,这里需要兼容处理一下
+                        this.storeInfo[i].forEach((item) => {
+                            item.fileId ? picIdList[i].push(item.fileId) :
+                                picIdList[i].push(item.id)
+                        });
+                    }
+                }
+
+                let submitInfo = {
+                    ...this.storeInfo,
+                    ...picIdList
+                };
+
+                let fn;
+                // 对私时开户行行号不传值
+                if(this.storeInfo.acctType === 2){
+                    submitInfo.acctOpenBankname = '';
+                    submitInfo.acctCnaps = '';
+                }
+                if(this.storeInfo.acctType === 1){
+                    submitInfo.acctEnpRel = '';
+                }
+                fn = this.$api.xygOpen; //信用购接口
+                fn(submitInfo).then((res) => {
+                    this.$router.push({
+                        path: '/xyg/open-result',
+                        // 提交后,默认跳转审核结果页面,状态为开通中
+                        query: {
+                            orgType: this.orgType,
+                            openStatus: 1,
+                            icon:this.$route.query.icon
+                        }
+                    })
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+.open-xyg-index{
+        padding-top: 54px;
+        height:100%;
+        background-color: #f1f1f1;
+}
+</style>
+
diff --git a/src/views/old/merchant/xyg/merPictures.vue b/src/views/old/merchant/xyg/merPictures.vue
new file mode 100644
index 0000000..1181d5d
--- /dev/null
+++ b/src/views/old/merchant/xyg/merPictures.vue
@@ -0,0 +1,55 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:14:44
+ * @Description:
+ -->
+<template>
+    <div class="xyg-picture-page">
+        <div class="pic-content">
+            <UploadFile
+                :fileType="1"
+                :bizLicenseType= "2"
+                :title="'上传营业执照'"
+                :picList="storeInfo.licencePhotos"></UploadFile>
+            <div>
+                <span style="font-size: 15px">上传法人身份证正反面照</span><span style="font-size: 13px;color: #FF6666">(第一张正面,第二张反面)</span>
+            </div>
+            <UploadFile
+                :fileType="2"
+                :bizLicenseType= "2"
+                :title="''"
+                :picList="storeInfo.legalCardPhotos"></UploadFile>
+        </div>
+    </div>
+</template>
+
+<script>
+    import UploadFile from '@/components/old/upload/uploadImgStore.vue';
+
+    export default {
+        name: 'xygMerPicture',
+        components: {
+            UploadFile
+        },
+        data() {
+            return {
+            };
+        },
+        props: {
+            storeInfo: {
+                type: Object,
+                required: true,
+            },
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .xyg-picture-page {
+        background: @color-white;
+        .pic-content {
+            padding: 0 15px;
+        }
+    }
+</style>
diff --git a/src/views/old/merchant/xyg/mgrBaseInfo.vue b/src/views/old/merchant/xyg/mgrBaseInfo.vue
new file mode 100644
index 0000000..4c0d74f
--- /dev/null
+++ b/src/views/old/merchant/xyg/mgrBaseInfo.vue
@@ -0,0 +1,80 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors  : 小明丶
+ * @LastEditTime : 2019-12-27 10:50:14
+ * @Description:
+ -->
+<template>
+    <div class="open-xyg-page">
+        <group>
+            <x-input title='营业员姓名' v-model.trim="storeInfo.staffName" placeholder='请输入营业员姓名'  text-align='right'></x-input>
+            <x-input title='营业员电话' v-model.trim="storeInfo.staffPhone" placeholder='请输入营业员电话' :max='11'  text-align='right'></x-input>
+            <x-input title='营业员职务' v-model.trim="storeInfo.post" placeholder='请输入营业员职务'  text-align='right'></x-input>
+            <x-input title='营业员编号' v-model.trim="storeInfo.oprId" placeholder='请输入营业员编号'  text-align='right'></x-input>
+        </group>
+    </div>
+</template>
+
+<script>
+    import {
+        Datetime,
+        XAddress
+    } from 'vux';
+    export default {
+        name: 'xygMgrBase',
+        components: {
+            Datetime,
+            XAddress
+        },
+        data() {
+            return {
+
+            };
+        },
+        props: {
+            storeInfo: {
+                type: Object
+            },
+        },
+        computed:{
+
+        },
+        methods: {
+
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-xyg-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/xyg/mgrOpen.vue b/src/views/old/merchant/xyg/mgrOpen.vue
new file mode 100644
index 0000000..421660a
--- /dev/null
+++ b/src/views/old/merchant/xyg/mgrOpen.vue
@@ -0,0 +1,155 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors  : 小明丶
+ * @LastEditTime : 2019-12-27 10:50:39
+ * @Description:
+ -->
+<template>
+    <div class="open-xyg-index">
+        <x-header :title="'开通信用购'" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+        </x-header>
+        <!-- v-show="step === 1"  -->
+        <base-info
+                v-show="step === 1"
+                :storeInfo="storeInfo"
+        >
+        </base-info>
+        <f-space type="large"></f-space>
+        <!-- <f-button @on-click="handleNextStep" fixed>{{'提交开通'}}</f-button> -->
+        <van-button class="btn" round @click="handleNextStep" >{{'提交开通'}}</van-button>
+    </div>
+</template>
+
+<script>
+    import BaseInfo from './mgrBaseInfo.vue';
+    import formCheckAndComt from '@/utils/formCheckAndComb';
+
+    import {
+        dateFormat
+    } from 'vux'
+
+    export default {
+        name: 'xygMgrOpen',
+        components: {
+            BaseInfo,
+        },
+        data() {
+            return {
+                orgType:0,
+                step: 1,
+                stepText: '下一步',
+                storeInfo: {
+                    staffName: '',
+                    staffPhone: '',
+                    post:'',
+                    oprId:''//营业员编号
+                },
+                // 验证开户信息字段
+                storeCheckInfo: [
+                    {
+                        key: 'staffName',
+                        tipType: 1,
+                        message: '营业员姓名'
+                    },
+                    {
+                        key: 'staffPhone',
+                        tipType: 1,
+                        message: '营业员电话'
+                    },
+                    {
+                        key: 'post',
+                        tipType: 1,
+                        message: '营业员岗位'
+                    },
+                ],
+                bankNo:''
+            };
+        },
+        computed:{
+            // 通过icon字段判断是智享云还是购机直降
+        },
+        created(){
+            this.init();
+            this.orgType = Number(this.$route.query.orgType);
+        },
+        methods: {
+            // 设置地区code
+
+            goBackPage() {
+                if (this.step === 2) {
+                    this.step -= 1;
+                } else {
+                    this.$router.push({
+                        path: '/store/productManage'
+                    });
+                }
+            },
+            // 初始化页面
+            init() {
+                let fn = this.$api.xygInitMgr;
+                fn().then(res => {
+                    let body = res.body;
+                    for (let i in this.storeInfo) {
+                        this.storeInfo[i] = body[i] ? body[i] : '';
+                    }
+                });
+            },
+            // 处理点击下一步跳转处理
+            handleNextStep() {
+                // 判断表单字段必填性
+                if (this.step === 1) {
+                    // 信用购增加这两个字段验证
+
+                    // 判断表单是否必填
+                    if (!formCheckAndComt.checkRequiredField(this.storeCheckInfo,this.storeInfo,this)) {
+                        return false;
+                    }
+                } else {
+                    this.handleSubmitOpen();
+                }
+                this.handleSubmitOpen();
+            },
+            // 处理提交
+            handleSubmitOpen() {
+                let submitInfo = {
+                    ...this.storeInfo
+                };
+
+
+                let fn;
+                fn = this.$api.xygOpenMgr; //营业员开通接口
+                fn(submitInfo).then((res) => {
+                    this.$router.push({
+                        path: '/xyg/open-result',
+                        // 提交后,默认跳转审核结果页面,状态为开通中
+                        query: {
+                            orgType: this.orgType,
+                            openStatus: 1,
+                            icon:this.$route.query.icon
+                        }
+                    })
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-xyg-index{
+        padding-top: 54px;
+        height:100%;
+        background-color: #f1f1f1;
+    }
+    .btn {
+        position: fixed;
+        bottom: 15px;
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+        }
+</style>
+
diff --git a/src/views/old/merchant/xyg/openResult.vue b/src/views/old/merchant/xyg/openResult.vue
new file mode 100644
index 0000000..b922485
--- /dev/null
+++ b/src/views/old/merchant/xyg/openResult.vue
@@ -0,0 +1,168 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 10:50:04
+ * @Description:
+ -->
+
+<template>
+    <div class="gjzj-result-page">
+        <x-header :title="'开通信用购'" :left-options="{backText:'',preventGoBack:true}"
+                  @on-click-back="pageGoBack"></x-header>
+        <div class="status-icon">
+            <i v-if="openStatus === 1"
+               class="iconfont scene_Staging-shenhezhong1"
+               style="color: #896EDB;"
+                ></i>
+            <i v-if="openStatus === 2"
+                class="iconfont scene_Staging-tijiaochenggong"
+                style="color: #19BE6B;"
+                ></i>
+            <i v-if="openStatus === 3"
+                class="iconfont scene_Staging-tijiaoshibai"
+                style="color: #F76260;"
+               ></i>
+            <i v-if="openStatus === 4"
+                 class="iconfont scene_Staging-tijiaoshibai"
+                 style="color: #F76260;"
+                 ></i>
+    </div>
+        <div class="tips">
+            <p v-if="openStatus === 1">{{ statusType }}审批中</p>
+            <p v-if="openStatus === 2"> {{ statusType }}审批通过</p>
+            <p v-if="openStatus === 3"> {{ statusType}}审批失败</p>
+            <p v-if="openStatus === 4">冻结</p>
+        </div>
+        <van-button round @click="handleBack">{{ buttonText }}</van-button>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'add-account',
+        data() {
+            return {
+                // 0-待开通,1-审批中,2-审批通过,3-审批失败,4-冻结
+                openStatus: 0, // 开通状态
+                orgType:0,
+                buttonText: '返回', // 底部按钮文字
+                statusType: this.$route.query.statusType,
+            };
+        },
+        computed:{
+        },
+        methods: {
+            pageGoBack(){
+                if(this.orgType==3) {
+                    this.$router.push({
+                        path: '/main/productManagement'
+                    });
+                }else if(this.orgType==4){
+                    this.$router.push({
+                        path: '/store/productManage'
+                    });
+                }else if(this.orgType==5){
+                    this.$router.push({
+                        path: '/store/productManage'
+                    });
+                }
+            },
+            handleBack () {
+                // 如果是在开通中的话,那么底部有重新提交按钮
+                // 点击重新提交,那么用户可以重新填写资料
+                if(this.openStatus == 1 || this.openStatus == 2) {
+                    if (this.orgType == 3) {
+                        this.$router.replace({
+                            path: '/main/productManagement'
+                        });
+                        this.$router.go(-1)
+                    } else if (this.orgType == 4) {
+                        this.$router.replace({
+                            path: '/store/productManage'
+                        });
+                        this.$router.go(-1)
+                    } else if (this.orgType == 5) {
+                        this.$router.replace({
+                            path: '/store/productManage'
+                        });
+                        this.$router.go(-1)
+                    }
+                } else if(this.openStatus == 3 || this.openStatus == 4){
+                    if (this.orgType == 3) {
+                        let query = {
+                            typeId:'200005',
+                            openStatus: this.openStatus,
+                            orgType: this.orgType
+                        }
+                        this.$router.push({
+                            path:'/xyg/merOpen',
+                            query
+                        });
+                    } else if (this.orgType == 4) {
+                        let query = {
+                            typeId:'200005',
+                            openStatus: this.openStatus,
+                            orgType: this.orgType
+                        }
+                        this.$router.push({
+                            path:'/xyg/storeOpen',
+                            query
+                        });
+                    } else if (this.orgType == 5) {
+                        let query = {
+                            typeId:'200005',
+                            openStatus: this.openStatus,
+                            orgType: this.orgType
+                        }
+                        this.$router.push({
+                            path:'/xyg/mgrOpen',
+                            query
+                        });
+                    }
+                }
+            },
+        },
+        created() {
+            console.log(this.statusType)
+            this.openStatus = Number(this.$route.query.openStatus);
+            this.orgType = Number(this.$route.query.orgType);
+            if(this.openStatus == 1 || this.openStatus == 2) {
+                this.buttonText = '返回';
+            }else if(this.openStatus == 3 || this.openStatus == 4){
+                this.buttonText = '再次提交';
+            }
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .gjzj-result-page {
+        height: 100%;
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        .status-icon {
+            padding-top: 20px;
+            text-align: center;
+        }
+        .iconfont {
+            font-size: 64px;
+            color: #BFA073;
+        }
+        .scene_Staging-shibai1 {
+            color: #F76260;
+        }
+        .tips {
+            color: #999;
+            font-size: 14px;
+            line-height: 1.6;
+            text-align: center;
+        }
+    }
+    .van-button {
+        width: 90%;
+        margin: 0 5%;
+        margin-top: 60px;
+        color: white !important;
+        background: #896edb;
+        }
+</style>
diff --git a/src/views/old/merchant/xyg/storeBaseInfo.vue b/src/views/old/merchant/xyg/storeBaseInfo.vue
new file mode 100644
index 0000000..00ed64e
--- /dev/null
+++ b/src/views/old/merchant/xyg/storeBaseInfo.vue
@@ -0,0 +1,179 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:15:03
+ * @Description:
+ -->
+<template>
+    <div class="open-xyg-page">
+        <group>
+            <x-input title='门店名称' v-model.trim="storeInfo.storeName" readonly text-align='right'></x-input>
+            <x-input title='经营地所在省' v-model.trim="storeInfo.storeProvinceName" readonly text-align='right'></x-input>
+            <x-input title='经营地所在市' v-model.trim="storeInfo.storeCityName" readonly text-align='right'></x-input>
+            <x-input title='经营地所在区' v-model.trim="storeInfo.storeDistrictName" readonly text-align='right'></x-input>
+            <x-input title='经营详细地址' v-model.trim="storeInfo.storeDetailAddr" readonly placeholder='请输入' text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <selector title='营业执照类型' placeholder='请选择' @on-change='handleLicenseTypeChange' v-model="storeInfo.bizLicenseType"
+                      :options='bizLicenseTypeList' :value-map="['code','name']" direction='rtl'></selector>
+            <x-input title='营业执照号' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.licenseNo" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='营业执照名称' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.orgName" placeholder='请输入' :max='50'  text-align='right'></x-input>
+            <datetime v-if="storeInfo.bizLicenseType ===2" v-model="storeInfo.issueDate" format="YYYY-MM-DD" title="注册日期" placeholder="请选择"></datetime>
+        </group>
+        <group>
+            <van-field v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.addrText" clearable :readonly="true" right-icon="arrow" label="注册省市区"
+                       @click="isShowArea = !isShowArea" placeholder="                                        请选择" text-align='right'/>
+            <x-input title='注册详细地址' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.regDetailAddr" placeholder='请输入' :max='100' text-align='right'></x-input>
+            <x-input title='营业厅编码' v-model.trim="storeInfo.outStoreNo" placeholder='请输入' :max='100' text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <x-input title='法人名称' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.legalName"  placeholder='请输入' text-align='right'></x-input>
+            <x-input title='法人身份证号' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.legalIdCardNo" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='法人身份证地址' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.legalIdCardAddress" placeholder='请输入' text-align='right'></x-input>
+            <x-input title='法人手机号' v-if="storeInfo.bizLicenseType ===2" v-model.trim="storeInfo.legalPhone" placeholder='请输入' :max='11' text-align='right'></x-input>
+        </group>
+        <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+            <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {calcArea} from '@/utils/index';
+    import {
+        mapState,
+        mapActions
+    } from 'vuex';
+    import {
+        Datetime,
+        XAddress
+    } from 'vux';
+    export default {
+        name: 'xygStoreBase',
+        components: {
+            Datetime,
+            XAddress,
+            ...mapState(['areaList'])
+        },
+        data() {
+            return {
+                areaList:{//地区列表
+                    province_list:{}, //省
+                    city_list:{}, //市
+                    county_list:{}, //地区、县
+                }
+            };
+        },
+        props: {
+            addressList: {
+                type: Array,
+                default: []
+            },
+            address: {
+                type: Array,
+                default: []
+            },
+            isShowArea: {
+                type: Boolean,
+                default: false
+            },
+            storeInfo: {
+                type: Object
+            },
+            bizLicenseTypeList: {
+                type: Array,
+                default: () => {
+                    return [];
+                }
+            },
+        },
+        computed:{
+            calcAddress:{
+                get(){
+                    return this.address || [];
+                },
+                set(newV){
+                    this.$emit('addr-change', newV);
+                }
+            }
+
+        },
+        created() {
+            this.getArea();
+        },
+        methods: {
+            ...mapActions(['getArea']),
+            // 获取地区列表
+            getArea() {
+                Vue.prototype.$api.getArea().then((res) => {
+                    let { provList } = res.body;
+                    let obj = calcArea(provList);
+                    this.areaList =  {
+                        province_list:obj.province_list,
+                        city_list:obj.city_list,
+                        county_list:obj.county_list
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            //关闭地区弹窗
+            closeAreaModal() {
+                console.log(this.areaList);
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            //保存 地区选择
+            setAreaValue(arr) {
+                this.storeInfo.addrText = arr[0].name + '-' + arr[1].name + '-' + arr[2].name;
+                this.storeInfo.regProvinceCode = arr[0].code;
+                this.storeInfo.regCityCode = arr[1].code;
+                this.storeInfo.regDistrictCode = arr[2].code;
+                this.isShowArea = false;
+                this.$refs.Area.reset()
+            },
+            // 账号类型
+            handleLicenseTypeChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.bizLicenseTypeList)).find((item) => {
+                    return item.code = val;
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-xyg-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/xyg/storeBaseMgrInfo.vue b/src/views/old/merchant/xyg/storeBaseMgrInfo.vue
new file mode 100644
index 0000000..29987fe
--- /dev/null
+++ b/src/views/old/merchant/xyg/storeBaseMgrInfo.vue
@@ -0,0 +1,88 @@
+<!--
+* @Author: c.y
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors  : 小明丶
+ * @LastEditTime : 2019-12-26 17:28:46
+ * @Description:
+ -->
+<template>
+    <div class="open-xyg-page">
+        <group>
+            <x-input title='营业员姓名' v-model.trim="mgrReqVo.staffName" placeholder='请输入'  text-align='right'></x-input>
+            <x-input title='营业员电话' v-model.trim="mgrReqVo.staffPhone" placeholder='请输入' :max='11'  text-align='right'></x-input>
+            <x-input title='营业员职务' v-model.trim="mgrReqVo.post" placeholder='请输入'  text-align='right'></x-input>
+            <x-input title='营业员编号' v-model.trim="mgrReqVo.oprId" placeholder='请输入'  text-align='right'></x-input>
+        </group>
+    </div>
+</template>
+
+<script>
+    import {
+        Datetime,
+        XAddress
+    } from 'vux';
+    export default {
+        name: 'xygStoreMgrBase',
+        components: {
+            Datetime,
+            XAddress
+        },
+        data() {
+            return {
+
+            };
+        },
+        props: {
+            mgrReqVo: {
+                type: Object
+            },
+        },
+        computed:{
+            calcAddress:{
+                get(){
+                    return this.address || [];
+                },
+                set(newV){
+                    this.$emit('addr-change', newV);
+                }
+            }
+
+        },
+        methods: {
+
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-xyg-page {
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .vux-datetime {
+            font-size: 15Px;
+        }
+
+        .vux-datetime-value {
+            span {
+                width: 100%;
+                text-align: right;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/merchant/xyg/storeOpen.vue b/src/views/old/merchant/xyg/storeOpen.vue
new file mode 100644
index 0000000..a161635
--- /dev/null
+++ b/src/views/old/merchant/xyg/storeOpen.vue
@@ -0,0 +1,460 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors  : 小明丶
+ * @LastEditTime : 2019-12-26 17:28:15
+ * @Description:门店开通信用购
+ -->
+<template>
+    <div class="open-xyg-index">
+        <x-header :title="'开通信用购'" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+    </x-header>
+        <!-- v-show="step === 1"  -->
+        <base-info
+                v-show="step === 1"
+                :bizLicenseTypeList="bizLicenseTypeList"
+                :storeInfo="storeInfo"
+        >
+        </base-info>
+        <mgr-info
+                v-show="step === 2"
+                :mgrReqVo="mgrReqVo"
+        >
+        </mgr-info>
+        <!-- 信用购的文件上传type + 6 -->
+        <store-pictures v-show="step === 3" :storeInfo="storeInfo" :filetype="9" ></store-pictures>
+        <!-- <store-pictures  :storeInfo="storeInfo" :filetype="6" ></store-pictures> -->
+        <f-space type="large"></f-space>
+        <!-- <f-button @on-click="handleNextStep" fixed>{{ step !== 3 ? '下一步' : '提交开通' }}</f-button> -->
+        <van-button class="btn" round @click="handleNextStep" fixed>{{ step !== 3 ? '下一步' : '提交开通' }}</van-button>
+    </div>
+</template>
+
+<script>
+    import BaseInfo from './storeBaseInfo.vue';
+    import MgrInfo from './storeBaseMgrInfo.vue';
+    import StorePictures from './storePictures.vue';
+    import formCheckAndComt from '@/utils/formCheckAndComb';
+
+    import {
+        dateFormat
+    } from 'vux'
+
+    export default {
+        name: 'xygStoreOpen',
+        components: {
+            BaseInfo,
+            StorePictures,
+            MgrInfo
+        },
+        data() {
+            return {
+                orgType:0,
+                step: 1,
+                stepText: '下一步',
+                bizLicenseTypeList: [],
+                mgrReqVo: {
+                    staffName:'',
+                    staffPhone:'',
+                    post:'',
+                    oprId:''//营业员编号
+                },
+                storeInfo: {
+                    legalIdCardAddress:'',
+                    issueDate:'',
+                    regDetailAddr:'',
+                    addr:{},
+                    isShowArea:false,
+                    regCityCode:'',
+                    regDistrictCode:'',
+                    regProvinceCode:'',
+                    storeName: '',
+                    outStoreNo:'',
+                    storeProvinceCode:'',
+                    storeProvinceName:'',
+                    storeCityCode:'',
+                    storeCityName:'',
+                    storeDistrictCode:'',
+                    storeDistrictName:'',
+                    storeDetailAddr:'',
+                    bizLicenseType:'',
+                    licenseNo:'',
+                    orgName:'',
+                    addrText:'',
+                    legalCardPhotosF: [], //法人身份证反面
+                    legalCardPhotosZ: [], //法人身份证正面
+                    legalIdCardNo:'',//省code
+                    legalPhone:'',//市code
+                    legalName:'',
+                    licencePhotos:[], // 营业执照照片
+                    legalCardPhotos: [], // 法人身份证
+                    storeHeadPhotos: [], // 门店图片
+                    storeInPhotos: [], // 店内图片
+                    storeAroundPhotos: [], // 门店周边图片
+                    authorizedBrand: [], // 授权牌
+                    sysScreenShot: [], //联通系统截图
+                },
+                // 验证开户信息字段
+                storeCheckInfo: [
+                    {
+                        key: 'legalPhone',
+                        tipType: 1,
+                        message: '法人手机号'
+                    },
+                    {
+                        key: 'legalIdCardNo',
+                        tipType: 1,
+                        message: '法人身份证'
+                    },
+                    {
+                        key: 'legalName',
+                        tipType: 2,
+                        message: '法人名称'
+                    },
+                    {
+                        key: 'orgName',
+                        tipType: 1,
+                        message: '营业执照名称'
+                    },
+                    {
+                        key: 'bizLicenseType',
+                        tipType: 2,
+                        message: '营业执照类型'
+                    },
+                    {
+                        key: 'addrText',
+                        tipType: 2,
+                        message: '省市区'
+                    },
+                    {
+                        key: 'legalIdCardAddress',
+                        tipType: 1,
+                        message: '法人身份证地址'
+                    },
+                    {
+                        key: 'regDetailAddr',
+                        tipType: 1,
+                        message: '注册详细地址'
+                    },
+                    {
+                        key: 'issueDate',
+                        tipType: 2,
+                        message: '注册日期'
+                    },
+                    {
+                        key: 'outStoreNo',
+                        tipType: 1,
+                        message: '营业厅编码'
+                    },
+                ],// 验证开户信息字段
+                storeCheckInfoForBizType: [
+                    {
+                        key: 'bizLicenseType',
+                        tipType: 2,
+                        message: '营业执照类型'
+                    },
+                ],
+                storeCheckInfoForStaff: [
+                    {
+                        key: 'staffName',
+                        tipType: 1,
+                        message: '营业员姓名'
+                    },
+                    {
+                        key: 'staffPhone',
+                        tipType: 1,
+                        message: '营业员电话'
+                    },
+                    {
+                        key: 'post',
+                        tipType: 1,
+                        message: '营业员职务'
+                    },
+                ],
+                bankNo:''
+            };
+        },
+        computed:{
+            // 通过icon字段判断是智享云还是购机直降
+        },
+        created(){
+            this.init();
+            this.orgType = Number(this.$route.query.orgType);
+        },
+        methods: {
+            goBackPage() {
+                if (this.step === 3 || this.step === 2) {
+                    this.step -= 1;
+                } else {
+                    this.$router.replace({
+                        path: '/store/productManage'
+                    });
+                    this.$router.go(-1)
+                }
+            },
+            // 初始化页面
+            init() {
+                let fn = this.$api.xygInitStore;
+                fn().then(res => {
+                    let body = res.body;
+                    this.bizLicenseTypeList = body.bizLicenseTypeList;
+                    if(body.mgrReqVo && body.mgrReqVo.staffName){
+                        this.mgrReqVo = body.mgrReqVo;
+                    }
+                    for (let i in this.storeInfo) {
+                        if(Array.isArray(this.storeInfo[i])){
+                            this.storeInfo[i] = body[i] ? body[i] : [];
+                        }else{
+                            this.storeInfo[i] = body[i] ? body[i] : '';
+                        }
+                    }
+                    if(this.storeInfo.storeProvinceCode) {
+                        if(this.storeInfo.regProvinceName && this.storeInfo.regCityName && this.storeInfo.regDistrictName){
+                            this.storeInfo.addrText = this.storeInfo.regProvinceName + '-' + this.storeInfo.regCityName + '-' + this.storeInfo.regDistrictName;
+                        }
+                        if (this.storeInfo.licencePhotos && this.storeInfo.licencePhotos !== []) {
+                            this.storeInfo.bizLicenseType = 2;
+                        } else {
+                            this.storeInfo.bizLicenseType = 3;
+                        }
+                    }
+                    if (this.storeInfo.licencePhotos && this.storeInfo.licencePhotos.length) {
+                        let fileId = this.storeInfo.licencePhotos[0];
+                        this.storeInfo.licencePhotos = [];
+                        this.storeInfo.licencePhotos.push({
+                            fileId: fileId,
+                            fileUrl: '/'+fileId
+                        });
+                    }
+                    if (this.storeInfo.legalCardPhotosZ && this.storeInfo.legalCardPhotosZ.length) {
+                        let fileIdZ = this.storeInfo.legalCardPhotosZ[0];
+                        let fileIdF = this.storeInfo.legalCardPhotosF[0];
+                        this.storeInfo.legalCardPhotos = [];
+                        this.storeInfo.legalCardPhotos.push({
+                            fileId: fileIdZ,
+                            fileUrl: '/'+fileIdZ
+                        });
+                        this.storeInfo.legalCardPhotos.push({
+                            fileId: fileIdF,
+                            fileUrl: '/'+fileIdF
+                        });
+                    }
+                    if (this.storeInfo.storeAroundPhotos && this.storeInfo.storeAroundPhotos.length) {
+                        let storeAroundPhotosNew = [];
+                        for (let i in this.storeInfo.storeAroundPhotos) {
+                            let fileId = this.storeInfo.storeAroundPhotos[i];
+                            storeAroundPhotosNew.push({
+                                fileId: fileId,
+                                fileUrl: '/'+fileId
+                            });
+                        }
+                        this.storeInfo.storeAroundPhotos = storeAroundPhotosNew;
+                    }
+                    if (this.storeInfo.storeHeadPhotos && this.storeInfo.storeHeadPhotos.length) {
+                        let fileId = this.storeInfo.storeHeadPhotos[0];
+                        this.storeInfo.storeHeadPhotos = [];
+                        this.storeInfo.storeHeadPhotos.push({
+                            fileId: fileId,
+                            fileUrl: '/'+fileId
+                        });
+                    }
+                    if (this.storeInfo.storeInPhotos && this.storeInfo.storeInPhotos.length) {
+                        let storeInPhotosNew = [];
+                        for (let i in this.storeInfo.storeInPhotos) {
+                            let fileId = this.storeInfo.storeInPhotos[i];
+                            storeInPhotosNew.push({
+                                fileId: fileId,
+                                fileUrl: '/'+fileId
+                            });
+                        }
+                        this.storeInfo.storeInPhotos = storeInPhotosNew;
+                    }
+                    if (this.storeInfo.authorizedBrand && this.storeInfo.authorizedBrand.length) {
+                        let fileId = this.storeInfo.authorizedBrand[0];
+                        this.storeInfo.authorizedBrand = [];
+                        this.storeInfo.authorizedBrand.push({
+                            fileId: fileId,
+                            fileUrl: '/'+fileId
+                        });
+                    }
+                    if (this.storeInfo.sysScreenShot && this.storeInfo.sysScreenShot.length) {
+                        let fileId = this.storeInfo.sysScreenShot[0];
+                        this.storeInfo.sysScreenShot = [];
+                        this.storeInfo.sysScreenShot.push({
+                            fileId: fileId,
+                            fileUrl: '/'+fileId
+                        });
+                    }
+                });
+            },
+            // 处理点击下一步跳转处理
+            handleNextStep() {
+                // 判断表单字段必填性
+                if (this.step === 1) {
+                    // 判断表单是否必填
+                    if(this.storeInfo.bizLicenseType === 2) {
+                        if (!formCheckAndComt.checkRequiredField(this.storeCheckInfo, this.storeInfo, this)) {
+                            return false;
+                        }
+                    }else{
+                        if (!formCheckAndComt.checkRequiredField(this.storeCheckInfoForBizType, this.storeInfo, this)) {
+                            return false;
+                        }
+                    }
+                    this.step += 1;
+                } else if(this.step === 2){
+                    if (!formCheckAndComt.checkRequiredField(this.storeCheckInfoForStaff, this.mgrReqVo, this)) {
+                        return false;
+                    }
+                    this.step += 1;
+                } else {
+                    this.handleSubmitOpen();
+                }
+            },
+            // 处理提交
+            handleSubmitOpen() {
+                let checkPicList = [];
+                if(this.storeInfo.bizLicenseType === 2) {
+                    // 需要判断图片的字段
+                    checkPicList = [{
+                        checkField: 'licencePhotos',
+                        msg: '营业执照照片'
+                    },
+                    {
+                        checkField: 'legalCardPhotos',
+                        msg: '法人身份证正反面照片'
+                    },
+                        {
+                            checkField: 'storeHeadPhotos',
+                            msg: '门店店头照片'
+                        },
+                        {
+                            checkField: 'storeInPhotos',
+                            msg: '门店店内照片'
+                        },
+                        {
+                            checkField: 'storeAroundPhotos',
+                            msg: '门店周边照片'
+                        },
+                    ];
+                }else{
+                    checkPicList = [
+                        {
+                            checkField: 'storeHeadPhotos',
+                            msg: '门店店头照片'
+                        },
+                        {
+                            checkField: 'storeInPhotos',
+                            msg: '门店店内照片'
+                        },
+                        {
+                            checkField: 'storeAroundPhotos',
+                            msg: '门店周边照片'
+                        },
+                    ];
+                }
+                // 判断图片是否上传
+                for (let item of checkPicList) {
+                    if (!(this.storeInfo[item.checkField] instanceof Array &&
+                        this.storeInfo[item.checkField].length)) {
+                        this.$notify('请上传' + item.msg);
+                        return false;
+                    }
+                    if(this.storeInfo.bizLicenseType === 2) {
+                        if (item.checkField == 'legalCardPhotos' && this.storeInfo[item.checkField].length < 2) {
+                            this.$notify('请上传' + item.msg);
+                            return false;
+                        }
+                    }
+                    if (item.checkField == 'storeInPhotos' && this.storeInfo[item.checkField].length < 4) {
+                        this.$notify('请上传' + item.msg);
+                        return false;
+                    }
+                    if (item.checkField == 'storeAroundPhotos' && this.storeInfo[item.checkField].length < 3) {
+                        this.$notify('请上传' + item.msg);
+                        return false;
+                    }
+                }
+
+                // 由于后端初始化返回的图片字段{url: xx, id: 121}, 而此时在提交的时候,我们
+                // 提交图片字段为[id1, id2], 为id的列表
+                let picIdList = {};
+                this.storeInfo.legalCardPhotosF = [];
+                this.storeInfo.legalCardPhotosZ = [];
+                if(this.storeInfo.bizLicenseType === 2) {
+                    picIdList = {
+                        licencePhotos: [],
+                        legalCardPhotosF: [],
+                        legalCardPhotosZ: [],
+                        storeHeadPhotos: [],
+                        storeInPhotos:[],
+                        storeAroundPhotos:[],
+                        authorizedBrand: [],
+                        sysScreenShot: [],
+                    };
+                    picIdList.legalCardPhotosF.push(this.storeInfo.legalCardPhotos[0].fileId);
+                    picIdList.legalCardPhotosZ.push(this.storeInfo.legalCardPhotos[1].fileId);
+                }else{
+                    picIdList = {
+                        storeHeadPhotos: [],
+                        storeInPhotos:[],
+                        storeAroundPhotos:[],
+                        authorizedBrand: [],
+                        sysScreenShot: [],
+                    };
+                }
+                for (let i in picIdList) {
+                    if (this.storeInfo[i] instanceof Array &&
+                        this.storeInfo[i].length) {
+                        // 后端图片初始文件id为id.而控件上传id为fieldId,这里需要兼容处理一下
+                        this.storeInfo[i].forEach((item) => {
+                            item.fileId ? picIdList[i].push(item.fileId) :
+                                picIdList[i].push(item.id)
+                        });
+                    }
+                }
+                if(this.storeInfo.bizLicenseType !== 2) {
+                    this.storeInfo.licencePhotos = [];
+                }
+                let submitInfo = {
+                    ...this.storeInfo,
+                    ...picIdList,
+                    mgrReqVo:this.mgrReqVo
+                };
+
+                let fn;
+                fn = this.$api.xygOpenStore; //信用购接口
+                fn(submitInfo).then((res) => {
+                    this.$router.push({
+                        path: '/xyg/open-result',
+                        // 提交后,默认跳转审核结果页面,状态为开通中
+                        query: {
+                            orgType:this.orgType,
+                            openStatus: 1,
+                            icon:this.$route.query.icon
+                        }
+                    })
+                });
+            }
+        }
+    };
+
+</script>
+
+<style lang="less" scoped>
+    .open-xyg-index{
+        padding-top: 54px;
+        height:100%;
+        background-color: #f1f1f1;
+    }
+    .btn {
+        position: fixed;
+        bottom: 15px;
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+        }
+</style>
+
diff --git a/src/views/old/merchant/xyg/storePictures.vue b/src/views/old/merchant/xyg/storePictures.vue
new file mode 100644
index 0000000..129b8fc
--- /dev/null
+++ b/src/views/old/merchant/xyg/storePictures.vue
@@ -0,0 +1,114 @@
+<!--
+ * @Date: 2019-09-02 09:01:22
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:14:44
+ * @Description:
+ -->
+<template>
+    <div class="xyg-picture-page">
+        <div class="pic-content">
+            <UploadFile
+                :fileType="1"
+                :bizLicenseType="storeInfo.bizLicenseType"
+                :title="'上传营业执照'"
+                :picList="storeInfo.licencePhotos"></UploadFile>
+            <div v-if="storeInfo.bizLicenseType == 2">
+                <span style="font-size: 15px">上传法人身份证正反面照</span><span style="font-size: 13px;color: #FF6666">(第一张正面,第二张反面)</span>
+            </div>
+            <UploadFile
+                :fileType="2"
+                :bizLicenseType="storeInfo.bizLicenseType"
+                :showNum="2"
+                :title="''"
+                :picList="storeInfo.legalCardPhotos"></UploadFile>
+            <div>
+                <p style="font-size: 15px">上传门头照片</p>
+                <p style="font-size: 13px;color: #999999;margin: 10px 0 0 0">(需要体现运营商logo、门店名称、门牌号)</p>
+            </div>
+            <UploadFile
+                :fileType="1"
+                :bizLicenseType= "2"
+                :showNum="1"
+                :title="''"
+                :picList="storeInfo.storeHeadPhotos"></UploadFile>
+            <div>
+                <p style="font-size: 15px">上传店内照片</p>
+                <p style="font-size: 13px;color: #999999;margin: 10px 0 0 0">(至少从4个角度拍摄全景体现店铺面积和主要业务区域,至少包括合约分期业务受理区(若有运营商logo背景,则包含在内)手机终端柜台))</p>
+            </div>
+            <UploadFile
+                :fileType="4"
+                :bizLicenseType= "2"
+                :title="''"
+                :showNum="4"
+                :picList="storeInfo.storeInPhotos"></UploadFile>
+            <div>
+                <p style="font-size: 15px">上传周边照片</p>
+                <p style="font-size: 13px;color: #999999;margin: 10px 0 0 0">(门店外部街景、左右各一张,展示左右至少各一间门店)</p>
+            </div>
+            <UploadFile
+                :fileType="3"
+                :bizLicenseType= "2"
+                :title="''"
+                :showNum="3"
+                :picList="storeInfo.storeAroundPhotos"></UploadFile>
+            <div>
+                <span style="font-size: 15px">授权牌</span><span style="font-size: 13px;color: #FF6666"></span>
+            </div>
+            <UploadFile
+                    :fileType="1"
+                    :bizLicenseType= "2"
+                    :title="''"
+                    :picList="storeInfo.authorizedBrand"></UploadFile>
+            <div>
+                <span style="font-size: 15px">联通系统截图</span>
+            </div>
+            <UploadFile
+                    :fileType="1"
+                    :bizLicenseType= "2"
+                    :title="''"
+                    :picList="storeInfo.sysScreenShot"></UploadFile>
+        </div>
+    </div>
+</template>
+
+<script>
+    import UploadFile from '@/components/old/upload/uploadImgStore.vue';
+
+    export default {
+        name: 'xygStorePicture',
+        components: {
+            UploadFile
+        },
+        data() {
+            return {
+            };
+        },
+        props: {
+            storeInfo: {
+                type: Object,
+                required: true,
+            },
+            // + 6的是信用购的上传
+            filetype:{
+                type:Number,
+                default:0
+            }
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    .legal-card-title {
+        padding: 10px 0;
+        font-size: 13px;
+        line-height: 1;
+        color: #333;
+        font-weight: normal;
+    }
+    .xyg-picture-page {
+        background: @color-white;
+        .pic-content {
+            padding: 10px 15px;
+        }
+    }
+</style>
diff --git a/src/views/old/store/bannerContent/bannerContent.vue b/src/views/old/store/bannerContent/bannerContent.vue
new file mode 100644
index 0000000..16ce00c
--- /dev/null
+++ b/src/views/old/store/bannerContent/bannerContent.vue
@@ -0,0 +1,58 @@
+
+<template>
+    <div class="getQRCode">
+        <x-header class="message-head" title="内容详情" :left-options="{backText:''}"></x-header>
+        <div class="overdue-body" v-html="bannerContent">
+            <!-- {{ bannerContent }} -->
+        </div>
+    </div>
+</template>
+<script>
+import { XHeader } from 'vux';
+    export default {
+        name: 'bannerContent',
+        components: {
+             XHeader,
+        },
+        data() {
+            return {
+                bannerId: this.$route.query.bannerId,
+                bannerContent: '',
+            }
+        },
+        created() {
+            this. bannerContentInit();
+        },
+        methods: {
+            bannerContentInit() {
+                this.$api.indexDetail({id: this.bannerId}).then(res => {
+                    // this.bannerContent = res.body.bannerInfoVos.filter(item => {
+                    //     if(item.id == this.bannerId) {
+                    //         return item.bannerContent;
+                    //     }
+                    // })
+                    console.log(res.body)
+                    this.bannerContent = res.body.bannerContent
+                })
+                
+            }
+        }
+    }
+</script>
+<style lang="less" scoped>
+.getQRCode{
+    background: #F5F5F7;
+    width: 100%;
+    height: 100%;
+}
+.message-head{
+    position: relative;
+}
+.overdue-body{
+    width: 96%;
+    margin: 0 2%;
+    padding-top: 15px;
+    padding-bottom: 50px;
+    word-wrap: break-word;
+}
+</style>
diff --git a/src/views/old/store/business-center.vue b/src/views/old/store/business-center.vue
new file mode 100644
index 0000000..27458fd
--- /dev/null
+++ b/src/views/old/store/business-center.vue
@@ -0,0 +1,758 @@
+<!--
+ * @Descripttion:
+ * @Author: WD丶
+ * @Date: 2019-08-19 09:20:27
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-19 09:58:28
+ -->
+<template>
+    <div class="business-center">
+        <div class="content" v-if="orgType == 4">
+            <!-- <div class="content-title">
+                办理分期
+            </div> -->
+            <div class="installment-box ">
+
+                <div class="item " v-for="(i,index) in installmentList" :key="index" @click="go(i)">
+                    <img class="item-logo" :src="i.icon"  :alt="i.typeName">
+                    <p v-text="i.typeName"></p>
+                </div>
+            </div>
+
+        </div>
+        <!-- 产品未开通弹窗 -->
+        <van-popup v-model="noOpenShow" class="no-open">
+            <div class="no-open-img">
+                <img src="../../../assets/imgs/openpic.png" alt="">
+            </div>
+            <p>{{ noOpenText }}</p>
+            <van-button type="default" class="no-open-btn" @click="noOpenShow = false" round>确定</van-button>
+        </van-popup>
+    </div>
+</template>
+<script>
+    import {
+        XHeader,
+        XDialog,
+    } from 'vux';
+    import FBlock from '@/components/old/FBlock';
+    import FConfirm from '@/components/old/FConfirm';
+    import {
+        _copyToClipboard
+    } from '@/utils/index';
+    import { mapState, mapGetters } from 'vuex';
+    import { async } from 'q';
+    import Vue from 'vue';
+    import { Toast } from 'vant';
+    import QRCode from "qrcode";
+
+    Vue.use(Toast);
+// import { mapState } from 'vuex';
+    export default {
+        name: 'business-center',
+        components: {
+            XHeader,
+            FBlock,
+            FConfirm,
+            XDialog
+        },
+        data() {
+            return {
+                qrCode:'',
+                errorMsg: '',
+                mblNo: '',
+                showDialogStyle: false,
+                showModal: false,
+                tipText: '敬请期待...',
+                installmentList: [],
+                dmfprod_list: [],
+                shsUrl:'',
+                // swiperList: [],
+                // messageList: [],
+                messageId: '',
+                riskNum: '', //风险订单数
+                complaintNum: '', //投诉订单数
+                noOpenShow: false, //产品未开通弹窗控制
+                noOpenText: '', //产品未开通文本内容
+                info: {},
+                prodTypeRespVoList2: []
+            };
+        },
+        computed:{
+            ...mapState(['userinfo', 'msgCount']),
+            ...mapGetters(['orgType']),
+            hasDmf(){
+                return this.dmfprod_list.length && this.dmfprod_list[0].openStatus!=0;
+            }
+        },
+        created() {
+            this.info = this.userinfo
+            this.getShsUrl();
+            if(this.orgType == 4){
+                this.$api.prodIndexTypeList().then(res => {
+                    let list = res.body.prodTypeRespVoList3 || [];
+                    this.prodTypeRespVoList2 = res.body.prodTypeRespVoList2 || [];
+                    localStorage.hbcp = JSON.stringify(res.body.prodTypeRespVoList2)
+                    this.dmfprod_list = res.body.prodTypeRespVoList1 || [];
+                    list.forEach(item => {
+                        item.active = item.openStatus === 2;
+                    });
+
+                    this.installmentList.push(...list,...res.body.prodTypeRespVoList1);
+                });
+            }
+            // 获取风控订单数
+             this.$api.riskNum().then(res => {
+                this.complaintNum = res.body.complaintNum;
+                this.riskNum = res.body.riskNum;
+            })
+        },
+        methods: {
+            hasHjToken(){
+                if(localStorage.hjToken){
+                    return false
+                }else{
+                    return true
+                }
+            },
+            // 前往选择花呗产品
+            goHbCp(){
+               this.$router.push('/hbcp')
+            },
+            goLthyj() {
+                this.$router.push('/lthyj')
+            },
+            toBdCourse(e, name) {
+                // if(name == '合约分期') {
+                //     Toast('花呗分期教程功能暂未开通,敬请期待')
+                // } else {
+                    let sum = '';
+                    let fileName = '';
+                    if(name == '花呗分期') {
+                        sum = 7
+                        fileName = 'hbfq/'
+                    }
+                    if(name == '智享花' || name == '信用购') {
+                        sum = 9;
+                        fileName = 'zxh/'
+                    }
+                    if(name == '花呗合约机') {
+                        sum = 3;
+                        fileName = 'hyfq/'
+                    }
+                    this.$router.push(`/bdCourse?courseName=${name}&&sum=${sum}&&fileName=${fileName}`)
+                // }
+            },
+            jump(id) {
+                this.$router.push(`/bannerContent?bannerId=${id}`)
+            },
+            //跳转到逾期界面..
+            toOverdue() {
+                this.$router.push('/overdue')
+            },
+            shsClick(val){
+                if(val == 'zfblx') {
+                    this.$router.push("/product/zfblx");
+                }
+                if(val != 'zfblx' && val != 'hbjl') {
+                    location.href = this.shsUrl;
+                }
+                // if(val == 'hbjl'){
+                //     this.$router.push('/creat-hbjl')
+                // }
+            },
+            toMessage(e,id) {
+                this.$router.push(`/message?messageId=${id}`)
+            },
+            getShsUrl(){
+                this.$api.getShsUrl().then((res) => {
+                    this.shsUrl = res.body.url;
+                }).catch((err) => {
+
+                });
+            },
+            goDmf(){
+                let item = this.dmfprod_list[0];
+                if(item.openStatus == 2){
+                    //this.$router.push(`/facepay/calcmoney?typeId=${item.typeId}&prodId=${item.prodId}`)
+                    this.$router.push(`/channel-selection?typeId=${item.typeId}&prodId=${item.prodId}&text=商户收款通道`)
+                }else{
+                    this.noOpenShow = true
+                }
+                // this.$router.push(`/order/dmf?typeId=${item.typeId}&prodId=${item.prodId}`)
+            },
+            changeBlur() {
+                let u = navigator.userAgent,
+                    app = navigator.appVersion;
+                let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
+                if (isIOS) {
+                    setTimeout(() => {
+                        const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0
+                        window.scrollTo(0, Math.max(scrollHeight - 1, 0))
+                    }, 200)
+                }
+            },
+            clearTel() {
+                this.mblNo = '';
+                this.errorMsg = '';
+            },
+            // 复制链接
+            copyLink() {
+
+                let isCopy = _copyToClipboard('http://t.cn/AiTDRMMO')
+                this.$tool.toast('链接已复制');
+            },
+            // 花呗提额功能
+            hbLinesSMS() {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.mblNo)) {
+                    this.errorMsg = '*请输入手机号';
+                    return;
+                }
+                if (!v.checkPhone(this.mblNo)) {
+                    this.errorMsg = '*请输入正确的手机号';
+                    return;
+                }
+                this.$api.hbLinesSMS({
+                    mblNo: this.mblNo,
+                    content: 'http://t.cn/AiTDRMMO'
+                }).then((res) => {
+                    this.showDialogStyle = false;
+                    setTimeout(() => {
+                        this.$tool.toast('短信发送成功');
+                    }, 500);
+                }).catch((err) => {
+
+                });
+            },
+            // flag 代表是产品 还是收款的标志(flag为true代表收款)
+            go(item, flag = false) {
+                //alert('item.active:',item.active)
+                if (item.active) {
+                    let path = '';
+                    let text = '';
+                    item.typeId = Number(item.typeId);
+                    if(item.isHbProd == 1){
+                        path = "/channel-selection"
+                        switch (item.typeId) {
+                            case 200002:
+                                text = '花呗通道';
+                                break;
+                            case 200009:
+                                text = '花呗合约机通道';
+                                break;
+                            case 200010:
+                                text = '商户贴息通道';
+                                break;
+                        }
+                    }else{
+                       if(item.typeId) {
+                            path = '/wx-pay-score';
+                        }
+                    }
+                    this.$router.push({
+                        path,
+                        query: {
+                            typeId: item.typeId,
+                            prodId: item.prodId,
+                            text: text
+                        }
+                    });
+                } else {
+                    this.noOpenText = flag ? '敬请期待...' :  '商户未开通该产品';
+                    this.noOpenShow = true;
+                }
+            },
+        },
+
+    };
+</script>
+<style lang='less' scoped>
+    // @import '../../style/mixin';
+    @font-face {
+        font-family: 'iconfont';  /* project id 1351259 */
+        src: url('//at.alicdn.com/t/font_1351259_bg2i5vlti7u.eot');
+        src: url('//at.alicdn.com/t/font_1351259_bg2i5vlti7u.eot?#iefix') format('embedded-opentype'),
+        url('//at.alicdn.com/t/font_1351259_bg2i5vlti7u.woff2') format('woff2'),
+        url('//at.alicdn.com/t/font_1351259_bg2i5vlti7u.woff') format('woff'),
+        url('//at.alicdn.com/t/font_1351259_bg2i5vlti7u.ttf') format('truetype'),
+        url('//at.alicdn.com/t/font_1351259_bg2i5vlti7u.svg#iconfont') format('svg');
+    }
+    .no-open{
+        width: 280px;
+        height: 190px;
+        text-align: center;
+        border-radius: 6px;
+        &-img{
+            width: 100%;
+            margin-top: 13px;
+            img{
+                width: 75px;
+                height: 75px;
+            }
+        }
+        p{
+            font-size: 14px;
+            color: #666666;
+            margin-top: 7px;
+        }
+        &-btn{
+            height: 36px;
+            width: 60%;
+            margin: 0 20%;
+            background: #896EDB;
+            color: #fff;
+            margin-top: 28px;
+            line-height: 36px;
+        }
+    }
+    .cus-service{
+        position: absolute;
+        top: 10px;
+        right: 10px;
+        z-index: 1;
+        width: 24px;
+        height: 24px;
+        background: rgba(0,0,0,1);
+         background:rgba(0,0,0,0.3);
+        border-radius: 50%;
+        text-align: center;
+        line-height: 24px;
+        i{
+            color: #fff;
+            font-size: 16px;
+            // opacity: 1;
+        }
+    }
+
+    .head-title{
+        z-index: 10;
+    }
+    // 顶部轮播
+    .swiper-banner {
+        width: 100%;
+        height: 150px;
+        margin: 0 auto;
+        overflow: hidden;
+        position: relative;
+        // margin-top:-10px;
+        padding: 0;
+        .vipBg {
+            width: 100%;
+            height: 150px;
+            background-size: 100% 100%;
+            background-repeat: no-repeat;
+            // background-image: url("../../../assets/img/bg-qr-code.png");
+        }
+
+        .my-swiper-banner {
+            height: 150px;
+            width: 100%;
+        }
+    }
+    //播报 部分
+    .category {
+        height: 30px;
+        position: relative;
+        width: 94%;
+        padding: 0 3%;
+        background: #fff;
+        .bobao {
+            background: rgba(255, 255, 255, 1);
+            border-radius: 6px;
+            width: 100%;
+
+        }
+        .notice-log{
+            position: absolute;
+            top: 0;
+            left: 15px;
+            font-size: 20px;
+            line-height: 30px;
+        }
+    }
+    .my-swiper-notice{
+        width: 100%;
+        margin: 0 auto;
+        overflow: hidden;
+        // .flexLayout(flex-start, center, row);
+        // flex-wrap: nowrap;
+    }
+    .swipe-item-box{
+        display: flex;
+        flex-direction: column;
+        justify-content: flex-start;
+        align-items: center;
+        width: 100% !important;
+    }
+    .notice-item-title{
+        height: 30px;
+        line-height: 30px;
+        font-size: 12px;
+        margin-left: 10px;
+        white-space: nowrap;
+        color: #333;
+    }
+    .notice-item {
+        line-height: 30px;
+        width: 230px;
+        word-wrap: normal;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        font-size: 12px;
+        // padding-right: 20px;
+        color: #333;
+    }
+    .notice-item-f{
+        color: @c-text-999;
+    }
+    .business-center {
+        padding-bottom: 50px;
+        // padding-top: 54px;
+        // padding-top: 9px;
+        .installment-box {
+            border-radius: 6px;
+            .flexLayout(flex-start, center, row);
+            flex-wrap: wrap;
+            background: #fff;
+            padding: 15px 0;
+            .item {
+                margin-bottom: 15px;
+                width: 33.33%;
+                //width: 25%;
+                text-align: center;
+                i {
+                    font-size: 36px;
+                }
+
+                p {
+                    font-size: 12px;
+                    color: #3a3a3a;
+                }
+                .item-logo{
+                    display: block-line;
+                    vertical-align: middle;
+                    width: 45px;
+                    height: 45px;
+                    margin-left: auto;
+                }
+            }
+        }
+    }
+    .nav-code {
+        // display: flex;
+        // flex-direction: column;
+        // justify-content: center;
+        // align-items: center;
+        // text-align: center;
+        // height: 120px;
+        // background-color: #fff;
+        // color: #bb8b52;
+        // margin-top: 15px;
+        .flexLayout(center, center, row);
+        width: 335px;
+        height: 50px;
+        margin: 12px;
+        margin-bottom: 0;
+        margin-top: 0;
+        border: 1px solid rgba(217,217,217,1);
+        border-radius: 6px;
+        &-logo{
+            width: 36px;
+            height: 36px;
+            margin-right: 12px;
+            img{
+                width: 100%;
+                height: 100%;
+            }
+        }
+        p{
+            font-size: 16px;
+        }
+    }
+    .merCollection{
+        width: 94%;
+        margin: 0 3%;
+        height: 50px;
+        border:  1px dashed #D9D9D9;
+        .flexLayout(center, center, row);
+        i{
+            font-size: 36px;
+            margin-right: 10px;
+        }
+    }
+
+    .dialog {
+        position: relative;
+
+        .dialog-content {
+            background-color: #fff;
+            width: 280px;
+            height: 270px;
+            margin: 0 auto;
+            padding: 40px 15px 0;
+            box-sizing: border-box;
+            border-radius: 6px;
+        }
+
+        .text {
+            width: 150px;
+            font-size: 14px;
+            margin: 0 auto;
+            color: #666666;
+
+            .blue {
+                color: #4074F8;
+                text-decoration: underline;
+            }
+        }
+
+        .input-box {
+            height: 44px;
+            .flexLayout(flex-start, center);
+            padding-left: 10px;
+            border: 1px solid rgba(230, 230, 230, 1);
+            width: 250px;
+            margin: 20px auto 0;
+            box-sizing: border-box;
+
+            .icon {
+                position: relative;
+                padding-right: 10px;
+
+                &::after {
+                    content: '';
+                    display: block;
+                    position: absolute;
+                    right: 0;
+                    top: 50%;
+                    transform: translateY(-50%);
+                    width: 1px;
+                    height: 15px;
+                    background-color: #3A3A3A;
+
+                }
+            }
+
+            .input {
+                margin-left: 10px;
+                padding: 10px 0;
+                flex: 1;
+                font-size: 12px;
+                border: none;
+                outline: none;
+
+                &.error {
+                    color: #FE2A2A;
+                }
+            }
+        }
+
+        .errmsg {
+            text-align: left;
+            margin-left: 10px;
+            margin-bottom: 20px;
+            height: 15px;
+            color: #FE2A2A;
+            font-size: 10px;
+        }
+
+        .btn {
+
+            width: 250px;
+            height: 44px;
+            text-align: center;
+            outline: none;
+            border: none;
+            background-color: #3A3A3A;
+            color: #fff;
+        }
+
+        .logo {
+            width: 64px;
+            height: 64px;
+            transform: translateY(32px);
+        }
+
+        .close {
+            margin-top: 20px;
+        }
+
+    }
+    //逾期
+    .overdue-box{
+        width: 96%;
+        margin: 12px 2%;
+        background: #fff;
+        border-radius:6px;
+        height: 92px;
+        display: flex;
+        padding: 10px;
+        box-sizing: border-box;
+        font-family: PingFang SC;
+        color: #666666;
+        .overdue-box-left {
+            width: 74%;
+            display: flex;
+            flex-direction: column;
+            justify-content: space-around;
+            .title {
+                font-size: 12px;
+                font-weight: 500;
+            }
+            .title:before {
+                content: "";
+                width: 3px;
+                height: 12px;
+                background: #9459EC;
+                border-radius: 2px;
+                display: inline-block;
+                margin-right: 6px;
+            }
+            .order {
+                margin-top: 5px;
+                font-size: 12px;
+                color: #666;
+                .orderItem {
+                    margin-right: 10px;
+                }
+                .ordernum {
+                    font-size: 18px;
+                    font-weight: bold;
+                    color: #333;
+                    margin-right: 5px;
+                }
+            }
+            .tip {
+                height: 12px;
+                font-size: 12px;
+                font-weight: 500;
+                color: #999999;
+                margin-top: 5px;
+            }
+        }
+        .overdue-box-right {
+            width: 26%;
+            display: flex;
+            flex-direction: column;
+            justify-items: center;
+            justify-content: center;
+            .view {
+                width: 80px;
+                height: 28px;
+                background: linear-gradient(90deg, #8F6AFF, #9459EC);
+                box-shadow: 0px 4px 7px 0px rgba(99, 19, 232, 0.25);
+                border-radius: 14px;
+                font-size: 12px;
+                font-weight: 500;
+                color: #FFFFFF;
+                text-align: center;
+                line-height: 28px;
+            }
+        }
+    }
+  .content{
+    //   width: 100%;
+    width: 96%;
+    margin: 12px 2%;
+    border-radius: 6px;
+  }
+//   .content-title{
+//       width: 96%;
+//       height: 45px;
+//       background-color: #fff;
+//       line-height: 45px;
+//       margin-top: 20px;
+//       padding-left: 4%;
+//       margin-bottom: 5px;
+//   }
+//办单教程
+.course{
+    width: 96%;
+    height: 140px;
+    margin: 12px 2%;
+    margin-bottom: 20px;
+    padding-bottom: 27px;
+    background: #fff;
+    box-sizing: border-box;
+    border-radius: 6px;
+    &-title{
+        // padding: 10px;
+        padding-top: 15px;
+        padding-left: 12px;
+        padding-bottom: 15px;
+        font-size: 16px;
+        font-weight:bold;
+        color:rgba(51,51,51,1)
+    }
+    &-content{
+        margin-top: 10px;
+      .flexLayout(space-between, center);
+      &-item{
+          width: 33.33%;
+          text-align: center;
+          i{
+              font-size: 36px;
+          }
+          p{
+              color: #666666;
+              margin-top: 5px;
+              font-size: 14px;
+          }
+      }
+    }
+}
+.courseDl{
+    width: 96%;
+    height: 165px;
+    margin: 12px 2% 0 2%;
+    // margin-bottom: 20px;
+    // padding-bottom: 27px;
+    background: #fff;
+    box-sizing: border-box;
+    border-radius: 6px;
+    &-title{
+        // padding: 10px;
+        padding-top: 15px;
+        padding-left: 12px;
+        padding-bottom: 15px;
+        font-size: 16px;
+        font-weight:bold;
+        color:rgba(51,51,51,1)
+    }
+    &-content{
+        // margin-top: 10px;
+        border-radius: 6px;
+        width: 100%;
+      .flexLayout(space-between, center);
+      flex-wrap: wrap;
+      &-item{
+          width: 50%;
+          height: 50px;
+          text-align: center;
+          .flexLayout(flex-start, center);
+          i{
+              margin-left: 40px;
+              font-size: 30px;
+              margin-right: 13px;
+          }
+          p{
+              width: 60px;
+              color: #666666;
+              text-align: left;
+            //   margin-top: 5px;
+              font-size: 14px;
+              line-height: 50px;
+          }
+      }
+    }
+}
+.notice-continer{
+    width: 95%;
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    padding-left: 5%;
+}
+</style>
diff --git a/src/views/old/store/channel-selection.vue b/src/views/old/store/channel-selection.vue
new file mode 100644
index 0000000..0481cea
--- /dev/null
+++ b/src/views/old/store/channel-selection.vue
@@ -0,0 +1,206 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-04-03 14:58:33
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-04 16:56:16
+ * @Description: 选择通道
+ -->
+<template>
+  <div class="tdxz-div">
+    <van-nav-bar
+      title="选择通道"
+      left-text="返回"
+      left-arrow
+      @click-left="onClickLeft"
+      fixed
+      style="line-height: 43px"
+    >
+      <i
+        class="iconfont iconzuojiantou"
+        slot="left"
+        style="font-size: 25px"
+      ></i>
+    </van-nav-bar>
+    <div class="proudct-box">
+      <div v-for="(e, i) in list" :key="i" @click="goNext(e)">
+        <img :src="e.icon" alt="" />
+        <p>{{ e.typeName }}</p>
+        <p v-if="e.openStatus == 2" style="color: #19be6b; margin-top: 4px">
+          已开通
+        </p>
+        <p v-if="e.openStatus == 1" style="color: #ed4014; margin-top: 4px">
+          开通中
+        </p>
+        <p v-if="e.openStatus == 3" style="color: #ed4014; margin-top: 4px">
+          未通过
+        </p>
+        <p v-if="e.openStatus == 0" style="color: #b3b3b3; margin-top: 4px">
+          未开通
+        </p>
+      </div>
+    </div>
+    <van-popup v-model="noOpenShow" class="no-open">
+      <div class="no-open-img">
+        <img src="../../../assets/imgs/openpic.png" alt="" />
+      </div>
+      <p>{{ noOpenText }}</p>
+      <van-button
+        :color="$store.state.backColor"
+        type="default"
+        class="no-open-btn"
+        @click="noOpenShow = false"
+        round
+        >确定</van-button
+      >
+    </van-popup>
+  </div>
+</template>
+<script>
+import Vue from "vue";
+import { NavBar } from "vant";
+
+Vue.use(NavBar);
+export default {
+  data() {
+    return {
+      noOpenText: "门店暂未开通此通道", //产品未开通文本内容
+      noOpenShow: false, //产品未开通弹窗控制
+      list: [], //通道列表
+      showId: "",
+    };
+  },
+  computed: {
+    isddxt() {
+      if (sessionStorage.isddxt == 1) {
+        return true;
+      } else {
+        return false;
+      }
+    },
+  },
+  created() {
+    let typeId = this.$route.query.typeId;
+    this.$api
+      .prodZfbVersion({
+        prodId: this.$route.query.prodId * 1,
+      })
+      .then((res) => {
+        this.list = res.body.filter((item, index) => {
+          if (sessionStorage.isddxt == 1) {
+            return item.zfbVersion == 6 || item.zfbVersion == 7;
+          } else {
+            return item.zfbVersion != 6 && item.zfbVersion != 7;
+          }
+        });
+      });
+  },
+  methods: {
+    // 返回上一页
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    // 跳转
+    goNext(item) {
+      console.log(item);
+      var id = this.$route.query.typeId,
+        path = "",
+        obj = {};
+      if (item.openStatus == 2) {
+        switch (Number(id)) {
+          case 200008:
+            path = "/store-shsk";
+            obj.payMethod = this.$route.query.payMethod;
+            break;
+          case 200002:
+            path = "/hb-credit-installment";
+            break;
+          case 200009:
+            path = "/hbhy-installment";
+            break;
+          case 200010:
+            path = "/shtx";
+            break;
+          case 200011:
+            path = "/xyg/list";
+            break;
+        }
+      } else {
+        this.noOpenShow = true;
+        return;
+      }
+      this.$router.push({
+        path: path,
+        query: {
+          ...obj,
+          typeId: this.$route.query.typeId,
+          prodId: this.$route.query.prodId,
+          zfbVersion: item.zfbVersion,
+        },
+      });
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+.tdxz-div {
+  min-height: 100vh;
+  background: #f5f5f7;
+  padding-top: 56px;
+  .proudct-box {
+    width: 359px;
+    margin: auto;
+    box-sizing: border-box;
+    padding: 16px 0;
+    // display: flex;
+    // justify-items: space-between;
+    background: #fff;
+    div {
+      display: inline-block;
+      width: 115px;
+      height: 90px;
+      box-shadow: 0px 0px 15px 0px rgba(66, 61, 93, 0.08);
+      border-radius: 8px;
+      margin: 16px 31px 16px 31px;
+      text-align: center;
+      box-sizing: border-box;
+      padding: 14px 0 18px 0;
+      img {
+        width: 42px;
+        height: 42px;
+      }
+      p {
+        font-size: 13px;
+        color: #333;
+      }
+    }
+  }
+  .no-open {
+    width: 280px;
+    height: 190px;
+    text-align: center;
+    border-radius: 6px;
+    &-img {
+      width: 100%;
+      margin-top: 13px;
+      img {
+        width: 75px;
+        height: 75px;
+      }
+    }
+    p {
+      font-size: 14px;
+      color: #666666;
+      margin-top: 7px;
+    }
+    &-btn {
+      height: 36px;
+      width: 60%;
+      margin: 0 20%;
+      background: #896edb;
+      color: #fff;
+      margin-top: 28px;
+      line-height: 36px;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/channel-selection_sh.vue b/src/views/old/store/channel-selection_sh.vue
new file mode 100644
index 0000000..4c3c66f
--- /dev/null
+++ b/src/views/old/store/channel-selection_sh.vue
@@ -0,0 +1,250 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-04-03 14:58:33
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-29 13:54:19
+ * @Description: 选择通道
+ -->
+<template>
+    <div class="tdxz-div">
+       <van-nav-bar title="选择通道" left-text="返回" left-arrow @click-left="onClickLeft" fixed style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar>
+        <div class="proudct-box">
+            <div class="list-box" v-for="(e,i) in list" :key="i" @click="goNext(e)"> <!-- v-show="e.zfbVersion !== 1 && e.zfbVersion !== 4" -->
+                <img :src="e.icon" alt="">
+                <p>{{e.typeName}}</p>
+                <div class="tip-box" :style="e.openStatus==0?{background:'#F2F2F2'}:e.openStatus==1?{background:'#FFF5D9'}:e.openStatus==2?{background:'#E3FAEF'}:e.openStatus==3?{background:'#FCF0F0'}:''">
+                    <p v-if="e.openStatus==2" style="color:#19BE6B;">已开通</p>
+                    <p v-if="e.openStatus==1" style="color:#FFC421;">开通中</p>
+                    <p v-if="e.openStatus==3" style="color:#FF6666;">未通过</p>
+                    <p v-if="e.openStatus==0" style="color:#999999;">未开通</p>
+                </div>
+                
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+import Vue from 'vue';
+import { NavBar } from 'vant';
+import { mapState } from 'vuex';
+Vue.use(NavBar);
+export default {
+    data() {
+        return {
+            noOpenText: '门店暂未开通此通道', //产品未开通文本内容
+            noOpenShow: false, //产品未开通弹窗控制
+            list:[],//通道列表
+            showId: '',
+            path: ''
+        }
+    },
+    created(){
+        
+        let typeId = this.$route.query.typeId
+        this.$api.prodZfbVersion({
+            prodId:this.$route.query.prodId*1
+        }).then(res=>{
+            console.log(sessionStorage.isddxt)
+            // this.list = res.body
+            this.list = res.body.filter((item, index) => {
+                if(sessionStorage.isddxt == 1){
+                    return item.zfbVersion == 6 || item.zfbVersion == 7
+                }
+                else{
+                    return item.zfbVersion != 6 && item.zfbVersion != 7
+                }
+            })
+        })
+    },
+    computed:{
+        ...mapState(['userinfo']),
+        isddxt(){
+            if(sessionStorage.isddxt == 1){
+                return true
+            }else{
+                return false
+            }
+        }
+    },
+    methods:{
+        // 返回上一页
+        onClickLeft() {
+            this.$router.push('/main/productManagement');
+        },
+        // 跳转
+        goNext(item){
+            var typeId, openStatus, zfbVersion, prodId, icon, title, query
+            typeId = this.$route.query.typeId
+            openStatus = item.openStatus
+            prodId  = this.$route.query.prodId
+            icon = this.$route.query.icon
+            zfbVersion = item.zfbVersion
+            if(typeId =='200010'){
+                title = '商户贴息'
+                if(item.zfbVersion==5){
+                    title = '开通通联通道'
+                    switch(openStatus){
+                        case 0:
+                            this.path = '/tonglian/startOpen'
+                            break;
+                        case 1:
+                        case 3:
+                            this.path = '/tonglian/open-result';
+                            break;
+                        case 2:
+                            this.path = '/tonglian/staging';
+                            break;
+                        default:
+                            this.path = '/tonglian/startOpen';
+                            break;
+                    }
+                }else{
+                    switch(openStatus){
+                        case 0:
+                            this.path = '/huabei/open';
+                            break;
+                        case 1:
+                        case 3:
+                            this.path = '/huabei/open-result';
+                            break;
+                        case 2:
+                            this.path = '/shtx/staging';
+                            break;
+                        default:
+                            this.path = '/huabei/open';
+                            break;
+                    }
+                }
+            }
+            if (typeId == '200002' || typeId == '200008' || typeId=='200009') {
+                if(item.zfbVersion==5){
+                    title = '开通通联通道'
+                    switch (openStatus) {
+                        case 0:
+                            this.path = '/tonglian/startOpen';
+                            break;
+                        case 1:
+                        case 3:
+                            this.path = '/tonglian/open-result';
+                            break;
+                        case 2:
+                            this.path = '/tonglian/staging';
+                            break;
+                        default:
+                            this.path = '/tonglian/startOpen';
+                            break;
+                    }
+                }else{
+                    switch (openStatus) {
+                        case 0:
+                            this.path = '/huabei/open';
+                            break;
+                        case 1:
+                        case 3:
+                            this.path = '/huabei/open-result';
+                            break;
+                        case 2:
+                            if(typeId=='200008'){
+                                this.path = '/huabei/staging_dmf';
+                                // this.path = '/huabei/staging';
+                            }else{
+                                this.path = '/huabei/staging';
+                            }
+                            break;
+                        default:
+                            this.path = '/huabei/open';
+                            break;
+                    }
+                }
+                
+                if(typeId=='200002'&&item.zfbVersion!=5){
+                    title = '用户付息';
+                }else if(typeId=='200008'){
+                    title = '商户收款';
+                }else {
+                    title = '商品消费';
+                }
+            }
+            if (typeId == '200011') {
+                switch (openStatus) {
+                    case 0:
+                        this.path = '/huabei/open';
+                        break;
+                    case 1:
+                    case 3:
+                        this.path = '/huabei/open-result';
+                        break;
+                    case 2:
+                        this.path = '/huabei/staging';
+                        break;
+                    default:
+                        this.path = '/huabei/open';
+                        break;
+                }
+                title = '信用购-花呗分期';
+            }
+            query = {
+                typeId,
+                openStatus,
+                zfbVersion,
+                prodId,
+                title,
+            }
+            this.$router.push({
+                path: this.path,
+                query
+            });
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+    .tdxz-div{
+        min-height: 100vh;
+        background: #F5F5F7;
+        padding-top: 56px;
+        .proudct-box{
+            width: 359px;
+            margin: auto;
+            box-sizing: border-box;
+            padding:16px 0;
+            // display: flex;
+            // justify-items: space-between;
+            background: #fff;
+            .list-box{
+                display: inline-block;
+                position: relative;
+                width: 115px;
+                height: 90px;
+                box-shadow:0px 0px 15px 0px rgba(66,61,93,0.08);
+                border-radius:8px;
+                margin: 16px 31px 16px 31px;
+                text-align: center;
+                box-sizing: border-box;
+                padding: 14px 0 18px 0;
+                img{
+                    width: 42px;
+                    height: 42px;
+                }
+                p{
+                    font-size: 13px;
+                    color: #333;
+                }
+                .tip-box{
+                    position: absolute;
+                    width:45px;
+                    height:16px;
+                    line-height: 16px;
+                    border-radius:8px 0px 0px 8px;
+                    top: 7px;
+                    right: 0;
+                    p{
+                        font-size: 10px;
+                    }
+                }
+            }
+        }
+    }
+</style>
diff --git a/src/views/old/store/choose-payment-method.vue b/src/views/old/store/choose-payment-method.vue
new file mode 100644
index 0000000..88d741b
--- /dev/null
+++ b/src/views/old/store/choose-payment-method.vue
@@ -0,0 +1,152 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-23 16:35:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-07 14:14:49
+ * @Description: 支付方式选择页面
+-->
+<template>
+    <div class="choose-payment-method-page">
+        <van-nav-bar title="付款方式" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar> 
+        <div class="content">
+            <div class="cp-box" @click="goNext(item)" v-for="(item,index) in list" :key="index">
+                <img :src="item.icon" alt="">
+                <p>{{item.typeName}}</p> 
+                <p v-if="item.openStatus == 2 && item.payMethod != 1" style="color: #19be6b; margin-top: 4px">
+                  已开通
+                </p>
+                <p v-if="item.openStatus == 1 && item.payMethod != 1" style="color: #ed4014; margin-top: 4px">
+                  开通中
+                </p>
+                <p v-if="item.openStatus == 3 && item.payMethod != 1" style="color: #ed4014; margin-top: 4px">
+                  未通过
+                </p>
+                <p v-if="item.openStatus == 0 && item.payMethod != 1" style="color: #b3b3b3; margin-top: 4px">
+                  未开通
+                </p>  
+            </div>
+        </div>
+        <van-popup v-model="noOpenShow" class="no-open">
+            <div class="no-open-img">
+                <img src="../../../assets/imgs/openpic.png" alt="">
+            </div>
+            <p>{{ noOpenText }}</p>
+            <van-button :color="$store.state.backColor" type="default" class="no-open-btn" @click="noOpenShow = false" round>确定</van-button>
+        </van-popup>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            noOpenText: '门店暂未开通此方式', //产品未开通文本内容
+            noOpenShow: false, //产品未开通弹窗控制
+            list:[]
+        }
+    },
+    mounted(){
+        this.init()
+    },
+    methods:{
+        init(){
+            this.$api.shskTypeList().then(res=>{
+                this.list = res.body
+            })
+        },
+        onClickLeft(){
+            this.$router.go(-1)
+        },
+        goNext(item){
+            if(item.payMethod===1){
+                this.$router.push({
+                    path:'/channel-selection',
+                    query:{
+                        ...this.$route.query,
+                        payMethod:item.payMethod,
+                        zfbVersion:item.zfbVersion
+                    }
+                })
+            }else{
+                if(item.openStatus !== 2){
+                    this.noOpenShow = true
+                }else{
+                    this.$router.push({
+                        path:'/store-shsk',
+                        query:{
+                            ...this.$route.query,
+                            payMethod:item.payMethod,
+                            zfbVersion:item.zfbVersion
+                        }
+                    })
+                }
+                
+            }
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+.choose-payment-method-page{
+    &{
+        background-color: #F5F5F7;
+        min-height: 100vh;
+    }
+    .content{
+        width: 359px;
+        margin: auto;
+        box-sizing: border-box;
+        padding:32px;
+        background: #fff;
+        margin-top: 10px;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        .cp-box{
+            width: 115px;
+            height: 100px;
+            background: #FFFFFF;
+            box-shadow: 0px 0px 15px 0px rgba(66, 61, 93, 0.08);
+            border-radius: 8px;
+            text-align: center;
+            align-content: center;
+            margin-bottom: 28px;
+            padding: 14px;
+            box-sizing: border-box;
+            img{
+                width: 42px;
+                height: 42px;
+            }
+        }
+    }
+    .no-open {
+    width: 280px;
+    height: 190px;
+    text-align: center;
+    border-radius: 6px;
+    &-img {
+      width: 100%;
+      margin-top: 13px;
+      img {
+        width: 75px;
+        height: 75px;
+      }
+    }
+    p {
+      font-size: 14px;
+      color: #666666;
+      margin-top: 7px;
+    }
+    &-btn {
+      height: 36px;
+      width: 60%;
+      margin: 0 20%;
+      background: #896edb;
+      color: #fff;
+      margin-top: 28px;
+      line-height: 36px;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/contract/contractInstallment.vue b/src/views/old/store/contract/contractInstallment.vue
new file mode 100644
index 0000000..2c69c26
--- /dev/null
+++ b/src/views/old/store/contract/contractInstallment.vue
@@ -0,0 +1,178 @@
+<!--
+ * @Descripttion:
+ * @Author: CY
+ * @LastEditors: 小明丶
+ * @Date: 2019-3-1 15:00:00
+ * @LastEditTime: 2019-09-02 11:07:15
+ -->
+<template>
+    <div class="contract-installment h-100-g">
+        <x-header title="购机直降" :left-options="{backText:''}"></x-header>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                合约信息
+            </div>
+            <selector title='合约套餐' placeholder='请选择' v-model="selectContract" :options='contractList'
+                :value-map="['contId','contName']" @on-change='handleChangeContract' direction='rtl'></selector>
+            <x-input title='结算金额' v-model.trim="selectConInfo.capitalAmt" readonly text-align='right'><span slot="right"
+                    style="font-size: 14px;">元</span></x-input>
+            <x-input title='月缴话费' v-model.trim="selectConInfo.monthlyFees" readonly text-align='right'><span
+                    slot="right" style="font-size: 14px;">元</span></x-input>
+            <x-input title='月还款额' v-model.trim="selectConInfo.monthlyPayments" readonly text-align='right'><span
+                    slot="right" style="font-size: 14px;">元</span></x-input>
+            <x-input title='期数' v-model.trim="selectConInfo.term" readonly text-align='right'><span slot="right"
+                    style="font-size: 14px;">期</span></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                商品信息
+            </div>
+            <x-input title='品牌' v-model.trim="goodsInfo.goodsBrand" placeholder='请输入' :max='10' text-align='right'>
+            </x-input>
+            <x-input title='名称' v-model.trim="goodsInfo.goodsName" placeholder='请输入' :max='10' text-align='right'>
+            </x-input>
+            <x-input title='型号' v-model.trim="goodsInfo.goodsModel" placeholder='请输入' :max='15' text-align='right'>
+            </x-input>
+            <x-input title='价格' v-model.trim="goodsInfo.goodsPrice" placeholder='请输入' :max='5' text-align='right'>
+            </x-input>
+        </group>
+        <f-button fixed @on-click='createdQRCode'>生成二维码</f-button>
+    </div>
+</template>
+
+<script>
+    import QRCode from 'qrcode';
+
+    export default {
+        name: 'contract-installment',
+        data() {
+            return {
+                selectContract: '', // 选中的合约
+                // 合约信息
+                selectConInfo: {
+                    capitalAmt: '', // 结算金额
+                    monthlyFees: '', // 月缴话费
+                    monthlyPayments: '', // 月还款额
+                    term: '', // 期数
+                },
+                // 商品信息
+                goodsInfo: {
+                    goodsBrand: '', //商品品牌
+                    goodsName: '', //商品名称
+                    goodsModel: '', // 商品型号
+                    goodsPrice: '', // 价格
+                    // goodsImei: '', // IMEI
+                },
+                // 营业厅联系人信息
+                contactInfo: {
+                    hallName: "", //营业厅名称
+                    hallAddr: "", //营业厅地址
+                    sellName: "", //联系人名称
+                    sellNum: "", //联系人手机
+                    sellCardNo: "", //联系人身份证
+                },
+                contractList: [], // 合约列表
+            };
+        },
+        methods: {
+            // 处理合约的修改
+            handleChangeContract(val) {
+                if (!val) {
+                    return;
+                }
+                this.selectConInfo = this.contractList.find((item) => {
+                    return item.contId === val;
+                })
+            },
+            // 生成二维码
+            createdQRCode() {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.selectContract)) {
+                    v.toast('请选择合约套餐');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsBrand)) {
+                    v.toast('请输入商品品牌');
+                    return false;
+                }
+                if (!/^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(this.goodsInfo.goodsBrand)) {
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品品牌');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsName)) {
+                    v.toast('请输入商品名称');
+                    return false;
+                }
+                if (!/^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(this.goodsInfo.goodsName)) {
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品名称');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsModel)) {
+                    v.toast('请输入商品型号');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsPrice)) {
+                    v.toast('请输入商品价格');
+                    return false;
+                }
+                if (!/^[1-9]\d{0,4}/.test(this.goodsInfo.goodsPrice)) {
+                    v.toast('请输入商品正确的价格');
+                    return false;
+                }
+
+                let queryObj = {
+                    ...this.selectConInfo,
+                    ...this.goodsInfo,
+                    mgrId: sessionStorage.sid, // 办单员id
+                    contId: this.selectContract, // 合约id
+                    typeId: this.$route.query.typeId
+                };
+
+
+                this.$router.push({
+                    path: "/contract-qrcode",
+                    query: queryObj
+                })
+            },
+        },
+        created() {
+            // 初始化合约列表
+            this.$api.contractList({
+                    typeId:+this.$route.query.typeId
+            }).then(res => {
+                this.contractList = res.body;
+            }, err => err);
+        },
+    };
+
+</script>
+
+
+<style lang='less' scoped>
+    .contract-installment {
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        padding-bottom: 80px;
+        overflow-y: scroll;
+
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/store/contract/contractQrcode.vue b/src/views/old/store/contract/contractQrcode.vue
new file mode 100644
index 0000000..48d1f03
--- /dev/null
+++ b/src/views/old/store/contract/contractQrcode.vue
@@ -0,0 +1,113 @@
+<!--
+ * @Date: 2019-08-30 14:37:51
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 11:07:46
+ * @Description: 
+ -->
+<template>
+    <div class="contract-qrcode-page h-100-g">
+        <x-header title="扫码办理" :left-options="{backText:''}"></x-header>
+        <div class="order-info">
+            <div v-if="qrCodeBase64Url" class='canvasImg'>
+                <img :src="qrCodeBase64Url" alt="qrcode">
+            </div>
+            <div id="QRCode" v-else class='qr-code'>
+                <div class='qeimg'>
+                    <img :src="dataUrl" alt="">
+                </div>
+            </div>
+            <p class="notice">请向用户展示二维码,扫码后开始办理分期。</p>
+        </div>
+    </div>
+</template>
+<script>
+    import html2canvas from 'html2canvas';
+    import QRCode from 'qrcode';
+
+    export default {
+        name: 'contract-qrcode',
+        data() {
+            return {
+                dataUrl: '',
+                qrCodeBase64Url: '',
+                params: ''
+            }
+        },
+        created(){
+            this.params = {
+                ...this.$route.query
+            };
+            QRCode.toDataURL(
+                JSON.stringify(this.params), {
+                    margin: 0,
+                    width: 400
+                },
+                (err, url) => {
+                    if (err) console.error(err);
+                    this.dataUrl = url;
+                    setTimeout(() => {
+                        html2canvas(document.getElementById('QRCode')).then(
+                            canvas => {
+                                this.qrCodeBase64Url = canvas.toDataURL(
+                                    'image/jpeg'
+                                );
+                            }
+                        );
+                    }, 100);
+                }
+            );
+        }
+    }
+
+</script>
+<style lang="less" scoped>
+    .contract-qrcode-page {
+        background-color: #f1f1f1;
+        padding-top: 54px;
+        .order-info {
+            padding-top: 46px;
+
+            .canvasImg {
+                margin: 0 auto;
+                width: 220px;
+                height: 220px;
+
+                img {
+                    width: 100%;
+                }
+            }
+
+            .notice {
+                padding-top: 40px;
+                text-align: center;
+                color: #666;
+            }
+
+            .qr-code {
+                background: #fff;
+                width: 220px;
+                height: 220px;
+                margin: 0 auto;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                flex-direction: column;
+                border: 4px solid @color-text-three;
+                color: @color-text-three;
+
+                .qeimg {
+                    width: 200px;
+                    height: 200px;
+                    padding: 5px;
+
+                    img {
+                        width: 100%;
+                        height: 100%;
+                    }
+                }
+            }
+
+        }
+    }
+
+</style>
diff --git a/src/views/old/store/contract/upload.vue b/src/views/old/store/contract/upload.vue
new file mode 100644
index 0000000..59f5c0d
--- /dev/null
+++ b/src/views/old/store/contract/upload.vue
@@ -0,0 +1,218 @@
+<!--
+ * @Descripttion: 上传合约凭证
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-08 09:16:44
+ * @LastEditTime: 2019-09-05 17:41:40
+ -->
+<template>
+    <div class="box h-100-g">
+        <x-header :left-options="{'backText': ''}" title="上传合约凭证" class="gradient-color"></x-header>
+        <div class="content">
+            <h4 class="title">
+                <span>合约凭证</span>
+                <div @click="showSelect = true;">
+                    <i class="iconfont scene_Staging-xiangji"></i>
+                    <input ref="photo" type="file"  accept="image/*" @change="getFile($event.currentTarget)">
+                    <input ref="picture" type="file"  accept="image/*" capture="camera" @change="getFile($event.currentTarget)">
+                </div>
+            </h4>
+            <ul class="upload">
+                <li class="upload-item" v-for="(item, index) in form.fileIds" :key="index" :style="{'background-image':`url(${item.fileUrl})`}">
+                    <i class="iconfont scene_Staging-shibai1" @click="deleteImgItem(index)"></i>
+                </li>
+            </ul>
+        </div>
+        <group>
+            <x-input title="手机号" v-model="form.contMblNo" placeholder="请输入" text-align="right" :max="11"></x-input>
+        </group>
+        <f-button @on-click="submit()" >提交</f-button>
+
+        <van-action-sheet v-model="showSelect" :close-on-click-overlay="false"  cancel-text="取消" :actions="nav" @select="handleSelect">
+        </van-action-sheet>
+    </div>
+</template>
+
+<script>
+import {compress} from "@/utils/index";
+
+export default {
+    name:"order_upload",
+    data() {
+        return {
+            showSelect:false,
+            nav:[
+                {name:'拍照'},
+                {name:'从手机相册选择'},
+            ],
+            form:{
+                orderId:'',
+	            contMblNo:'',
+                fileIds:[]
+            }
+        }
+    },
+    props:["orderId"],
+    created(){
+        this.form.orderId = this.orderId;
+    },
+    methods:{
+        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.92,
+                        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);
+                }
+            })
+        },
+        handleSelect(item, index) {
+            if(index===0){
+                this.$refs['picture'].click();
+            }else{
+                this.$refs['photo'].click();
+            }
+            this.showSelect = false;
+        },
+        // 删除图片
+        deleteImgItem(index){
+            this.form.fileIds.splice(index,1);
+        },
+        // 获取base64
+        getFile(el){
+            let file = el.files[0];
+            if(typeof file === 'undefined') return;
+            let reader = new FileReader(),
+                that = this;
+            reader.readAsDataURL(file);
+            reader.onload = function(){
+                that.imgCompress(this.result).then(base64=>{
+                    that.upload(base64.split(',')[1],file.type.split('/')[1]);
+                })
+            }
+        },
+        //上传文件
+        upload(base64,suffix){
+            let params ={
+                fileType:1,
+                suffix,
+                base64Data:base64
+            }
+            this.$api.uploadFile(params).then(res=>{
+                this.form.fileIds.push(res.body);
+            })
+        },
+        // 提交保存
+        submit(){
+            let form = this.form,
+                tel = form.contMblNo;
+            
+            if(form.fileIds.length===0){
+                this.$tool.toast("请上传合约凭证")
+                return;
+            }
+            
+            if(tel.length===0){
+                this.$tool.toast("请输入电话号码")
+                return;
+            }
+            
+            if(!this.$tool.checkPhone(tel)){
+                this.$tool.toast("请输入正确的电话号码")
+                return
+            }
+            let params = {
+                    orderId:form.orderId,
+                    contMblNo:tel,
+                    fileIds:[]
+                };
+            let fileIds = form.fileIds.map(item=>{
+                return item.id;
+            })
+            params.fileIds = fileIds;
+            this.$api.saveProtocol(params).then(res=>{
+                this.$tool.toast("提交成功")                
+                this.$router.go(-1)
+            })
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped>
+.box{
+    background-color: #f1f1f1;
+    padding-top: 54px;
+}
+.content{
+    margin-bottom: 10px;
+    padding-bottom: 12px;
+    background-color: @color-white;
+    .title{
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        padding: 0 12px;
+        height: 49px;
+        line-height: 49px;
+        font-size: @font-size-base;
+        font-weight: @font-weight-base;
+        input{
+            display: none;
+        }
+    }
+}
+
+.upload{
+    margin: 5px 12px 0;
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    flex-wrap: wrap;
+    .upload-item{
+        margin-right: 12px;
+        width: 109px;
+        height: 109px;
+        position: relative;
+        background-position: center;
+        background-size: contain;
+        background-repeat: no-repeat;
+        margin-bottom: 12px;
+        &:nth-child(3n){
+            margin-right: 0;
+        }
+        .iconfont{
+            position: absolute;
+            right: 3Px;
+            top: 0;
+        }
+    }
+}
+
+#file{
+    display: none;
+}
+.scene_Staging-xiangji{
+    fill: @color-border-theme;
+    color: @color-border-theme; 
+    font-size: 20px;
+}
+</style>
+
diff --git a/src/views/old/store/credit-installment.vue b/src/views/old/store/credit-installment.vue
new file mode 100644
index 0000000..acc645d
--- /dev/null
+++ b/src/views/old/store/credit-installment.vue
@@ -0,0 +1,221 @@
+<!--
+ * @Date: 2019-08-30 11:07:43
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-10-22 09:53:09
+ * @Description: 
+ -->
+<template>
+    <div class="credit-installment h-100-g">
+        <x-header title="办理分期" :left-options="{backText:''}"></x-header>
+        <group>
+            <x-input title='商品金额' v-model="settAmt" @on-change='changeSettAmt' @on-blur='blurToCalc' :show-clear='false' :max='5' :placeholder="settLock?'选择期数后系统自动计算':'请输入商品金额'" :disabled='settLock' text-align='right'></x-input>
+            <x-input title='还款总额' v-model="insAmt" @on-change='changeInsAmt' @on-blur='blurToCalc' :show-clear='false' :max='5' :placeholder="insLock?'选择期数后系统自动计算':'请输入还款总额'" :disabled='insLock' text-align='right'></x-input>
+            <selector title='分期期数' ref="insTerm" placeholder='请选择分期期数' v-model="insTerm" :options='termList' :value-map="['termCode','termName']" @on-change='selectTerms' direction='rtl'></selector>
+            <x-input title='商品名称' v-model="prodName" placeholder='请输入商品名称' :max='20' text-align='right'></x-input>
+            <!-- <selector title='银行名称' ref='bankName' placeholder='请选择银行名称' v-model="bankName" :options='bankList' :value-map="['bankCode','bankName']" direction='rtl'></selector> -->
+             <x-input title='费率' v-model="feeRate" @on-change='changeInsAmt' @on-blur='blurToCalc' :show-clear='false'  :placeholder="insLock?'选择期数后系统自动计算':'请输入费率'" :disabled='insLock' text-align='right'></x-input>
+        </group>
+
+        <div class="qrCode-box" v-if="dataURL">
+            <div class="qrCode">
+                <!-- <canvas id="canvas"></canvas> -->
+
+                <img :src="dataURL" alt="qrcode">
+            </div>
+        </div>
+        <f-button fixed @on-click='createdQRCode'>生成二维码</f-button>
+    </div>
+</template>
+
+<script>
+import QRCode from 'qrcode';
+import { mapState } from 'vuex';
+export default {
+    name: 'credit-installment',
+    data() {
+        return {
+            //分期期数opt
+            settAmt: '',
+            insAmt: '',
+            insLock: false,
+            settLock: false,
+            needCalcInputName: '',
+            feeRate: '',
+            insTerm: null,
+            termList: [],
+            bankList: [],
+            dataURL: '',
+            prodName: '',
+            bankName: ''
+        };
+    },
+    computed:{
+        ...mapState(['userinfo'])
+    },
+    created() {
+        this.$api.findTerms({ typeId: this.$route.query.typeId }).then(res => {
+            this.termList = res.body;
+        }, err => err);
+    },
+    methods: {
+        //计算商品金额或者还款金额的方法,因为下拉框change和input的blur都是统一方法,所以抽出来
+        calcFunc() {
+            if (!this.insTerm || !this.needCalcInputName) return;
+            let obj = {
+                term: this.insTerm
+            };
+            //如果填入的是商品金额,则计算还款总额,反之计算商品金额
+            let v = this.$tool;
+            if (this.needCalcInputName === 'insAmt') {
+                if (!Number(this.settAmt)) {
+                    v.toast('请输入正确的商品金额');
+                    return false;
+                }
+                if (
+                    Number(this.settAmt) < 600 ||
+                    Number(this.settAmt) > 50000
+                ) {
+                    v.toast('商品金额必须在600-50000之间');
+                    return false;
+                }
+                obj.settAmt = this.settAmt;
+            } else if (this.needCalcInputName === 'settAmt') {
+                if (!Number(this.insAmt)) {
+                    v.toast('请输入正确的还款总额');
+                    return false;
+                }
+                if (Number(this.insAmt) < 600 || Number(this.insAmt) > 50000) {
+                    v.toast('还款总额必须在600-50000之间');
+                    return false;
+                }
+                obj.insAmt = this.insAmt;
+            }
+            obj.resultFiled = this.needCalcInputName;
+            this.$api.calAmt(obj).then(res => {
+                //赋值运算结果
+                this[this.needCalcInputName] = res.body.terAmt;
+                this.feeRate = res.body.feeRate;
+            }, err => err);
+        },
+        //选择期数后会自动计算商品金额和还款总额,并且渲染对应的银行列表
+        selectTerms(val) {
+            this.calcFunc();
+        },
+        createdQRCode() {
+            let v = this.$tool;
+            if (v.checkValEmpty(this.settAmt)) {
+                v.toast('请输入商品金额');
+                return false;
+            }
+            if (v.checkValEmpty(this.insAmt)) {
+                v.toast('请输入还款总额');
+                return false;
+            }
+            if (v.checkValEmpty(this.feeRate)) {
+                v.toast('请输入费率');
+                return false;
+            }
+            if (!Number(this.settAmt)) {
+                v.toast('请输入正确的商品金额');
+                return false;
+            }
+            if (!Number(this.insAmt)) {
+                v.toast('请输入正确的还款总额');
+                return false;
+            }
+            if (Number(this.settAmt) < 600 || Number(this.settAmt) > 50000) {
+                v.toast('商品金额必须在600-50000之间');
+                return false;
+            }
+            if (Number(this.insAmt) < 600 || Number(this.insAmt) > 50000) {
+                v.toast('还款总额必须在600-50000之间');
+                return false;
+            }
+            if (v.checkValEmpty(this.insTerm)) {
+                v.toast('请选择分期期数');
+                return false;
+            }
+            if (v.checkValEmpty(this.prodName)) {
+                v.toast('请输入商品名称');
+                return false;
+            }
+
+            let itemObj = this.termList[0].bankList[0].prodId;
+            let url = `${sessionStorage.getItem('jumpUrl')}/#/?insTerm=${this.insTerm}&prodName=${this.prodName}&prodId=${itemObj}&settAmt=${this.settAmt}&insAmt=${this.insAmt}&mgrId=${this.userinfo.id}`;
+            this.$router.push({
+                path: '/getQRCode',
+                query: {
+                    insTerm: this.insTerm,
+                    prodName: this.prodName,
+                    prodId: itemObj,
+                    settAmt: this.settAmt,
+                    insAmt: this.insAmt,
+                    mgrId: this.userinfo.id
+                }
+            });
+        },
+        //输入商品金额或者还款总额都会触发这个方法
+        changeSettAmt(settAmt) {
+            //如果等于settAmt,则说明当前正在填写商品金额或者已经计算了还款总额,就要阻止change事件继续触发
+            //当needCalcInputName为空的时候,说明两个输入框的值都应该清空,这时都变成可以填写的状态
+            if (this.needCalcInputName === 'settAmt') return;
+            //代表正在输入商品金额,需要计算还款总额,还款总额将不可填写
+            if (settAmt) {
+                this.needCalcInputName = 'insAmt';
+                this.insLock = true;
+            } else {
+                //如果输入框为空,则还原最初的状态
+                this.needCalcInputName = '';
+                this.insAmt = '';
+                this.insLock = false;
+            }
+        },
+        changeInsAmt(insAmt) {
+            //如果等于settAmt,则说明当前正在填写商品金额或者已经计算了还款总额,就要阻止change事件继续触发
+            //当needCalcInputName为空的时候,说明两个输入框的值都应该清空,这时都变成可以填写的状态
+            if (this.needCalcInputName === 'insAmt') return;
+            //代表正在输入还款总额,需要计算商品金额,商品金额将不可填写
+            if (insAmt) {
+                this.needCalcInputName = 'settAmt';
+                this.settLock = true;
+            } else {
+                //如果输入框为空,则还原最初的状态
+                this.needCalcInputName = '';
+                this.settAmt = '';
+                this.feeRate = '';
+                this.settLock = false;
+            }
+        },
+        //失去焦点时计算金额
+        blurToCalc(val) {
+            if (val) {
+                this.calcFunc();
+            }
+        }
+    }
+
+};
+</script>
+<style lang='less' scoped>
+    .credit-installment {
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        .qrCode-box {
+            padding-top: 60px;
+            .flexLayout(center, center, row);
+            .qrCode {
+                width: 200px;
+                height: 200px;
+                box-sizing: border-box;
+                background-color: #fff;
+                border: 5px solid @color-border-theme;
+                padding: 5px;
+                img {
+                    width: 100%;
+                    height: 100%;
+                    vertical-align: middle;
+                }
+            }
+        }
+    }
+</style>
diff --git a/src/views/old/store/getHBQRCode.vue b/src/views/old/store/getHBQRCode.vue
new file mode 100644
index 0000000..b3e05c9
--- /dev/null
+++ b/src/views/old/store/getHBQRCode.vue
@@ -0,0 +1,273 @@
+<!--
+ * @Date: 2019-08-30 14:08:02
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 16:44:00
+ * @Description: 
+ -->
+<template>
+    <div class="getQRCode">
+        <!-- <x-header title="扫码办理" :left-options="{backText:''}" style="background-color:#3A3A3A;"></x-header> -->
+    <van-nav-bar title="扫码办理" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+        <div class="black-block" :style="{background:$store.state.backColor}"></div>
+        <div class="order-info">
+            <img class="qrcodeImg" :src="qrCode" alt="qrcode">
+            <!-- <p class="notice">扫一扫,办理分期业务</p> -->
+            <div class="cell-item-style">
+                <span class="title">分期金额</span>
+                <span class="value">{{params.capitalAmt}}元</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">花呗分期手续费率</span>
+                <span class="value">{{params.zfbRate}}%</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">智享服务费率</span>
+                <span class="value">{{params.platRate}}%</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">分期期数</span>
+                <span class="value">{{params.term}}期</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">客户还款总额</span>
+                <span class="value">{{params.totalAmount}}元</span>
+            </div>
+            <p style="width:94%;margin-left:3%;text-align:left;padding-top:14px">
+                <span style="color:#999999;font-size:12px">请主动向用户展示</span>
+                <span style="color:#896EDB;font-size:12px" @click="ShowAgreen=true">《用户协议》</span>
+                <span style="color:#999999;font-size:12px">,扫描二维码则视为用户同意此协议。</span>
+            </p>
+        </div>
+        <f-confirm v-model="showModal" showIcon iconClass='scene_Staging-shenhezhong' iconColor='#fff' @on-confirm='onSubmit' :showCancelBtn='false'>
+            <div>支付完成</div>
+        </f-confirm>
+        <f-confirm v-model="Invalid" showIcon iconClass='scene_Staging-shenhezhong' iconColor='#fff' :showCancelBtn='false'>
+            <div>当前二维码已经失效,请点击重新生成二维码</div>
+        </f-confirm>
+        <div class="btn-box" v-if="$route.query.backUrl">
+            <button @click="goHj">返回红茄</button>
+        </div>
+        <van-popup v-model="ShowAgreen">
+            <div class="agreenBox">
+              <div class="agreen-html" v-html="Agreend"></div>
+              <div class="close-agreen" @click="ShowAgreen = false">
+                <van-icon name="close" />
+              </div>
+            </div>
+      </van-popup>
+    </div>
+</template>
+<script>
+    import QRCode from 'qrcode';
+
+    export default {
+        name: 'getQRCode',
+        data() {
+            return {
+                ShowAgreen:false,
+                Agreend:'',
+                qrCode: '',
+                orderId:"",
+                timer: '', //轮询定时器
+                showModal: false, //模态窗提示
+                Invalid: false, //模态窗提示
+                params: {
+                    totalAmount: 0,
+                    term: 0,
+
+                }
+            }
+        },
+        methods:{
+            // 跳转红茄
+            goHj(){
+                console.log(this.$route.query.backUrl.split('https:'))
+                location.href=this.$route.query.backUrl
+            },
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+            //轮询查询订单状态
+            orderSts() {
+                this.timer = setInterval(() => {
+                    this.$api.hbOrderFindOrderSts({ orderId: this.orderId }).then(
+                        res => {
+                            if (res.body.orderStatus == 1) {
+                                clearInterval(this.timer);
+                                this.showModal = true;
+                            } else if (res.body.orderStatus == 2) {
+                                clearInterval(this.timer);
+                                this.Invalid = true;
+                            } else if (res.body.orderStatus == 3) {
+                                clearInterval(this.timer);
+                                this.showModal = true;
+                            }
+                        },
+                        err => {
+                            err, clearInterval(this.timer);
+                        }
+                    );
+                }, 10000);
+            },
+            // 支付成功确定
+            onSubmit() {
+                let queryObj = { id: this.orderId,backUrl:this.$route.query.backUrl};
+                if(this.$route.query.typeId){
+                    queryObj.typeId = this.$route.query.typeId;
+                }
+                this.$router.push({
+                    path: '/product/hb-detail',
+                    query: queryObj
+                });
+            }
+        },
+        created() {
+            this.Agreend = agreement3
+            console.log(this.$route.query)
+            this.params = { ...this.$route.query };
+            this.orderId = this.$route.query.orderId;
+            if (this.timer) {
+                clearInterval(this.timer);
+            }
+            let url = window.sessionStorage.getItem('hbpayQrCodeUrl');
+            QRCode.toDataURL(
+                url,
+                {
+                    margin: 1,
+                    width: 400
+                },
+                (err, url) => {
+                    if (err) console.error(err);
+                    this.qrCode = url;
+                    this.orderSts();
+                }
+            );
+        },
+        beforeRouteLeave (to, from, next) {
+            if (this.timer) {
+                clearInterval(this.timer);
+            }
+            next()
+        },
+    }
+</script>
+<style lang="less" scoped>
+@import '../../../style/mixin';
+
+.getQRCode {
+    position: relative;
+    background: #F3F4F5;
+    min-height: 100%;
+    padding-bottom: 40px;
+    .vux-header {
+        &:after {
+            border-bottom: none !important;
+        }
+    }
+    .vux-header-title {
+        span {
+            color: #ffffff;
+        }
+    }
+    .left-arrow {
+        &:before {
+            border-color: #ffffff !important;
+        }
+    }
+    .black-block {
+        margin-top: -11px;
+        width: 100%;
+        height: 150px;
+        background:linear-gradient(-45deg,rgba(104,98,133,1),rgba(76,69,113,1));
+    }
+    .order-info {
+        height:587px;
+        width: 351px;
+        text-align: center;
+        box-sizing: border-box;
+        border-radius: 6px;
+        background-color: #ffffff;
+        padding-top: 28px;
+        position: absolute;
+        
+        top: 85px;
+        left: 50%;
+        transform: translateX(-50%);
+        .cell-item-style {
+            width: 80%;
+            margin: 0 3%;
+            padding: 0 7%;
+            height: 50px;
+            line-height: 50px;
+            background: #FAFAFA;
+            font-size: 16px;
+            // box-sizing: border-box;
+            // padding-bottom: 10px;
+            // margin-bottom: 40px;
+            // border-bottom: 1px solid #dddddd;
+            .flexLayout(space-between, center, row);
+            .title {
+                color: #666666;
+            }
+            .value {
+                color: #333333;
+                // font-size: 14px;
+            }
+        }
+        .last-cell {
+            margin-bottom: 25px !important;
+        }
+        .qrcodeImg {
+            width: 190px;
+            height: 190px;
+            background:rgba(255,255,255,1);
+            border:6px solid rgba(223,212,255,1);
+            border-radius:8px;
+            margin-bottom: 37px;
+        }
+        .notice {
+            color: #3a3a3a;
+            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;
+    }
+  }
+  .btn-box{
+      &{
+          margin-top: 520px;
+          text-align: center;
+      }
+      button{
+          width: 90vw;
+          height:44px;
+          background:rgba(137,110,219,1);
+          border-radius:22px;
+          color: #fff;
+          border: 0;
+          outline: none;
+      }
+  }
+}
+</style>
+
+
diff --git a/src/views/old/store/getQRCode.vue b/src/views/old/store/getQRCode.vue
new file mode 100644
index 0000000..b6d3704
--- /dev/null
+++ b/src/views/old/store/getQRCode.vue
@@ -0,0 +1,124 @@
+<!--
+ * @Date: 2019-08-30 11:29:46
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-10-28 15:10:38
+ * @Description: 
+ -->
+<template>
+    <div class="getQRCode">
+        <x-header title="扫码办理" :left-options="{backText:''}" style="background-color:#3A3A3A;"></x-header>
+        <div class="black-block"></div>
+        <div class="order-info">
+            <div class="cell-item-style">
+                <span class="title">还款总额</span>
+                <span class="value">{{params.insAmt}}元</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">分期期数</span>
+                <span class="value">{{params.insTerm}}期</span>
+            </div>
+            <img class="qrcodeImg" :src="qrCode" alt="qrcode">
+            <p class="notice">扫一扫,办理分期业务</p>
+        </div>
+    </div>
+</template>
+<script>
+    import QRCode from 'qrcode';
+    import {mapGetters} from 'vuex';
+    export default {
+        name: 'getQRCode',
+        data() {
+            return {
+                qrCode: '',
+                params: {
+                    insAmt: 0,
+                    insTerm: 0,
+                },
+            }
+        },
+        computed:{
+            ...mapGetters(['orgType'])
+        },
+        created() {
+            this.params = { ...this.$route.query };
+            let url = `${sessionStorage.getItem('jumpUrl')}/#/?insTerm=${this.params.insTerm}&prodName=${this.params.prodName}&prodId=${this.params.prodId}&storeId=${this.orgType}&settAmt=${this.params.settAmt}&insAmt=${this.params.insAmt}&mgrId=${this.params.mgrId}`;
+            QRCode.toDataURL(
+                url,
+                {
+                    margin: 1,
+                    width: 400
+                },
+                (err, url) => {
+                    if (err) console.error(err);
+                    this.qrCode = url;
+                }
+            );
+        }
+    }
+</script>
+<style lang="less" scoped>
+.getQRCode {
+    padding-top: 44px;
+    position: relative;
+    .vux-header {
+        &:after {
+            border-bottom: none !important;
+        }
+    }
+    .vux-header-title {
+        span {
+            color: #ffffff;
+        }
+    }
+    .left-arrow {
+        &:before {
+            border-color: #ffffff !important;
+        }
+    }
+    .black-block {
+        margin-top: -11px;
+        width: 100%;
+        height: 116px;
+        background-color: #3a3a3a;
+    }
+    .order-info {
+        height: 480px;
+        width: 351px;
+        text-align: center;
+        box-sizing: border-box;
+        background-color: #ffffff;
+        padding-top: 50px;
+        position: absolute;
+        top: 85px;
+        left: 50%;
+        transform: translateX(-50%);
+        .cell-item-style {
+            box-sizing: border-box;
+            padding-bottom: 10px;
+            margin: 0 35px;
+            margin-bottom: 40px;
+            border-bottom: 1px solid #dddddd;
+            .flexLayout(space-between, center, row);
+            .title {
+                color: #a3a3a3;
+                font-size: 14px;
+            }
+            .value {
+                color: #3a3a3a;
+                font-size: 14px;
+            }
+        }
+        .last-cell {
+            margin-bottom: 25px !important;
+        }
+        .qrcodeImg {
+            width: 190px;
+            height: 190px;
+        }
+        .notice {
+            color: #3a3a3a;
+            font-size: 12px;
+        }
+    }
+}
+</style>
diff --git a/src/views/old/store/getShskQRCode.vue b/src/views/old/store/getShskQRCode.vue
new file mode 100644
index 0000000..9bbeadd
--- /dev/null
+++ b/src/views/old/store/getShskQRCode.vue
@@ -0,0 +1,127 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-26 16:45:20
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-10 09:35:07
+ * @Description: 商户收款二维码页面
+-->
+<template>
+  <div class="getShskQRCode-page">
+    <van-nav-bar
+      title="生成二维码"
+      left-text="返回"
+      left-arrow
+      @click-left="onClickLeft"
+      style="line-height: 43px"
+    >
+      <i
+        class="iconfont iconzuojiantou"
+        slot="left"
+        style="font-size: 25px"
+      ></i>
+    </van-nav-bar>
+    <div
+      class="bc-box"
+      :style="{ background: $store.state.defaultBgColor }"
+    ></div>
+    <div class="qr-box">
+      <div class="border-box">
+        <img :src="qrCodeBase64Url" alt="" />
+      </div>
+      <p>二维码失效时间为半小时</p>
+      <p>请尽快提供给用户进行扫码</p>
+    </div>
+  </div>
+</template>
+<script>
+import html2canvas from "html2canvas";
+import QRCode from "qrcode";
+
+export default {
+  data() {
+    return {
+      qrCodeBase64Url: "",
+      timeId:'',
+    };
+  },
+  created() {
+    console.log(this.$route.query.orderId)
+    QRCode.toDataURL(
+       this.$route.query.url,
+        {
+            margin: 1,
+            width: 400
+        },
+        (err, url) => {
+            if (err) console.error(err);
+            this.qrCodeBase64Url = url;
+            // this.search_status();
+            this.timeId = setInterval(() => {
+              this.search_status();
+            }, 2000);
+        }
+    );
+  },
+  methods: {
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    // 轮询 支付状态
+    search_status() {
+      this.$api.facepay_getStatus(
+       this.$route.query.orderId
+      ).then((res) => {
+        let orderStatus = res.body.orderStatus;
+        if(orderStatus !== 0){
+          clearInterval(this.timeId);
+          this.$router.push(
+            `/shsk-payResult?orderStatus=${orderStatus}`
+          );
+        }
+      });
+    },
+  },
+  beforeRouteLeave(to, from, next) {
+    clearInterval(this.timeId);
+    next();
+  },
+};
+</script>
+<style lang="less" scoped>
+.getShskQRCode-page {
+  & {
+    background: #f5f5f5;
+    min-height: 100vh;
+  }
+  .bc-box {
+    width: 100%;
+    height: 150px;
+  }
+  .qr-box {
+    width: 335px;
+    height: 300px;
+    background: #fff;
+    position: absolute;
+    top: 86px;
+    left: 5.5%;
+    box-sizing: border-box;
+    padding: 29px 73px;
+    .border-box {
+      padding: 5px;
+      border: 3px solid #dfd4ff;
+      border-radius: 4px;
+      margin-bottom: 22px;
+      img {
+        width: 100%;
+        height: 100%;
+      }
+    }
+    p {
+      text-align: center;
+      font-weight: 500;
+      color: #999999;
+      line-height: 17px;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/getShtxQRCode.vue b/src/views/old/store/getShtxQRCode.vue
new file mode 100644
index 0000000..8565a5c
--- /dev/null
+++ b/src/views/old/store/getShtxQRCode.vue
@@ -0,0 +1,293 @@
+<!--
+ * @Date: 2019-08-30 14:08:02
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-10-27 10:15:57
+ * @Description:
+ -->
+<template>
+  <div class="getQRCode">
+        <!-- <x-header title="扫码办理" :left-options="{backText:''}" style="background-color:#3A3A3A;"></x-header> -->
+    <van-nav-bar title="扫码办理" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+        <div class="black-block"></div>
+        <div class="order-info">
+            <img class="qrcodeImg" :src="qrCode" alt="qrcode">
+            <!-- <p class="notice">扫一扫,办理分期业务</p> -->
+            <div v-if="hasHjToken()" class="cell-item-style">
+                <span class="title">分期金额</span>
+                <!-- <span class="value">{{params.capitalAmt}}元</span> -->
+                <span class="value">{{params.totalAmount}}元</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">花呗分期手续费率</span>
+                <span class="value">{{params.zfbRate}}%</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">智享服务费率</span>
+                <span class="value">{{params.platRate}}%</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">分期期数</span>
+                <span class="value">{{params.term}}期</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">客户还款总额</span>
+                <span class="value">{{params.totalAmount}}元</span>
+            </div>
+            <p style="width:94%;margin-left:3%;text-align:left;padding-top:14px">
+                <span style="color:#999999;font-size:12px">请主动向用户展示</span>
+                <span style="color:#896EDB;font-size:12px" @click="ShowAgreen=true">《用户协议》</span>
+                <span style="color:#999999;font-size:12px">,扫描二维码则视为用户同意此协议。</span>
+            </p>
+        </div>
+        <f-confirm v-model="showModal" showIcon iconClass='scene_Staging-shenhezhong' iconColor='#fff' @on-confirm='onSubmit' :showCancelBtn='false'>
+            <div>支付完成</div>
+        </f-confirm>
+        <f-confirm v-model="Invalid" showIcon iconClass='scene_Staging-shenhezhong' iconColor='#fff' :showCancelBtn='false'>
+            <div>当前二维码已经失效,请点击重新生成二维码</div>
+        </f-confirm>
+        <div class="btn-box" v-if="$route.query.backUrl">
+            <button @click="goHj">返回红茄</button>
+        </div>
+        <van-popup v-model="ShowAgreen">
+        <div class="agreenBox">
+          <div class="agreen-html" v-html="Agreend"></div>
+          <div class="close-agreen" @click="ShowAgreen = false">
+            <van-icon name="close" />
+          </div>
+        </div>
+      </van-popup>
+    </div>
+</template>
+<script>
+import QRCode from "qrcode";
+import {mapMutations} from 'vuex'
+
+export default {
+  name: "getQRCode",
+  data() {
+    return {
+      ShowAgreen:false,
+      Agreend:'',
+      qrCode: "",
+      orderId: "",
+      timer: "", //轮询定时器
+      showModal: false, //模态窗提示
+      Invalid: false, //模态窗提示
+      params: {
+        totalAmount: 0,
+        term: 0
+      }
+    };
+  },
+
+  methods: {
+    ...mapMutations(['setShtxInfo']),
+    hasHjToken(){
+      if(localStorage.hjToken){
+          return false
+      }else{
+          return true
+      }
+    },
+    // 跳转红茄
+    goHj(){
+        console.log(this.$route.query.backUrl.split('https:'))
+        location.href=this.$route.query.backUrl
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    //轮询查询订单状态
+    orderSts() {
+      this.timer = setInterval(() => {
+        this.$api.shtxOrderFindOrderSts({ orderId: this.orderId }).then(
+          res => {
+            if (res.body.orderStatus == 1) {
+              clearInterval(this.timer);
+              this.showModal = true;
+            } else if (res.body.orderStatus == 2) {
+              clearInterval(this.timer);
+              this.Invalid = true;
+            } else if (res.body.orderStatus == 3) {
+              clearInterval(this.timer);
+              this.showModal = true;
+            }
+          },
+          err => {
+            err, clearInterval(this.timer);
+          }
+        );
+      }, 10000);
+    },
+    // 支付成功确定
+    onSubmit() {
+        let queryObj = {
+        id: this.params.orderId,
+        // term: this.params.value, //分期期数
+        // totalAmount: this.params.totalAmount, //商品总价
+        // payQrCodeUrl: this.params.payQrCodeUrl, //二维码
+        // userName: this.params.contractUserName, //用户名
+        // userMblNo: this.params.contractUserMblNo, //用户电话号
+        // totalAmount: this.params.totalAmount, //还款总额,本金
+        // goodsBrand: this.params.contractGoodsBrand, //商品品牌
+        // goodsName: this.params.contractGoodsName, //商品名称
+        feeRate:this.params.feeRate //费率
+      };
+    //     this.$store.commit('setShtxInfo',queryObj)
+
+      if (this.$route.query.typeId) {
+        queryObj.typeId = this.$route.query.typeId;
+      }
+      this.$router.push({
+        path: "/product/shtx-detail",
+        query:queryObj
+      });
+    }
+  },
+  created() {
+    this.Agreend = agreement3
+    this.params = { ...this.$route.query };
+    this.orderId = this.$route.query.orderId;
+    if (this.timer) {
+      clearInterval(this.timer);
+    }
+    let url = this.params.payQrCodeUrl;
+    QRCode.toDataURL(
+      url,
+      {
+        margin: 1,
+        width: 400
+      },
+      (err, url) => {
+        if (err) console.error(err);
+        this.qrCode = url;
+        this.orderSts();
+      }
+    );
+  },
+  beforeRouteLeave(to, from, next) {
+    if (this.timer) {
+      clearInterval(this.timer);
+    }
+    next();
+  }
+};
+</script>
+<style lang="less" scoped>
+@import "../../../style/mixin";
+
+.getQRCode {
+    position: relative;
+    background: #F3F4F5;
+    min-height: 100%;
+    .btn-box{
+      &{
+          margin-top: 520px;
+          text-align: center;
+      }
+      button{
+          width: 90vw;
+          height:44px;
+          background:rgba(137,110,219,1);
+          border-radius:22px;
+          color: #fff;
+          border: 0;
+          outline: none;
+      }
+  }
+    .vux-header {
+        &:after {
+            border-bottom: none !important;
+        }
+    }
+    .vux-header-title {
+        span {
+            color: #ffffff;
+        }
+    }
+    .left-arrow {
+        &:before {
+            border-color: #ffffff !important;
+        }
+    }
+    .black-block {
+        margin-top: -11px;
+        width: 100%;
+        height: 150px;
+        background:linear-gradient(-45deg,rgba(104,98,133,1),rgba(76,69,113,1));
+    }
+    .order-info {
+        height: 587px;
+        width: 351px;
+        text-align: center;
+        box-sizing: border-box;
+        border-radius: 6px;
+        background-color: #ffffff;
+        padding-top: 28px;
+        position: absolute;
+        top: 85px;
+        left: 50%;
+        transform: translateX(-50%);
+        .cell-item-style {
+            width: 80%;
+            margin: 0 3%;
+            padding: 0 7%;
+            height: 50px;
+            line-height: 50px;
+            background: #FAFAFA;
+            font-size: 16px;
+            // box-sizing: border-box;
+            // padding-bottom: 10px;
+            // margin-bottom: 40px;
+            // border-bottom: 1px solid #dddddd;
+            .flexLayout(space-between, center, row);
+            .title {
+                color: #666666;
+            }
+            .value {
+                color: #333333;
+                // font-size: 14px;
+            }
+        }
+        .last-cell {
+            margin-bottom: 25px !important;
+        }
+        .qrcodeImg {
+            width: 190px;
+            height: 190px;
+            background:rgba(255,255,255,1);
+            border:6px solid rgba(223,212,255,1);
+            border-radius:8px;
+            margin-bottom: 37px;
+        }
+        .notice {
+            color: #3a3a3a;
+            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;
+    }
+  }
+}
+</style>
+
+
diff --git a/src/views/old/store/getWxQRCode.vue b/src/views/old/store/getWxQRCode.vue
new file mode 100644
index 0000000..3c227bb
--- /dev/null
+++ b/src/views/old/store/getWxQRCode.vue
@@ -0,0 +1,267 @@
+<!--
+ * @Date: 2019-08-30 14:08:02
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 16:44:00
+ * @Description:
+ -->
+<template>
+    <div class="getQRCode">
+        <!-- <x-header title="扫码办理" :left-options="{backText:''}" style="background-color:#3A3A3A;"></x-header> -->
+    <van-nav-bar title="扫码办理" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+        <div class="black-block" :style="{background:$store.state.backColor}"></div>
+        <div class="order-info">
+            <div style="text-align: center;">
+                <img class="qrcodeImg" :src="qrCode" alt="qrCode">
+            </div>
+            <!-- <p class="notice">扫一扫,办理分期业务</p> -->
+            <div class="cell-cont-item-style">
+                <span class="title">活动名称</span>
+                <span class="value">{{params.contName}}</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">合约期</span>
+                <span class="value">{{params.term}}</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">担保金额</span>
+                <span class="value">{{params.guaranteedAmt}}</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">月赠费金额</span>
+                <span class="value">{{params.monGiftAmt}}</span>
+            </div>
+        </div>
+        <f-confirm v-model="showModal" showIcon iconClass='scene_Staging-shenhezhong' iconColor='#fff' @on-confirm='onSubmit' :showCancelBtn='false'>
+            <div>支付完成</div>
+        </f-confirm>
+        <f-confirm v-model="Invalid" showIcon iconClass='scene_Staging-shenhezhong' iconColor='#fff' :showCancelBtn='false'>
+            <div>当前二维码已经失效,请重新下单</div>
+        </f-confirm>
+    </div>
+</template>
+<script>
+    import QRCode from 'qrcode';
+
+    export default {
+        name: 'getQRCode',
+        data() {
+            return {
+                qrCode: '',
+                orderId:"",
+                timer: '', //轮询定时器
+                showModal: false, //模态窗提示
+                Invalid: false, //模态窗提示
+                params: {
+                    contName: '',
+                    guaranteedAmt:0,
+                    term: 0,
+                    monGiftAmt:0
+                }
+            }
+        },
+        methods:{
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+            //轮询查询订单状态
+            orderSts() {
+                this.timer = setInterval(() => {
+                    this.$api.wxScoreOrderStatus({ id: this.orderId }).then(
+                        res => {
+                            let orderStatus = res.body.orderStatus;
+                            if (orderStatus != 2&& orderStatus != 0) {
+                                clearInterval(this.timer);
+                                this.showModal = true;
+                            } else if (orderStatus == 2) {
+                                clearInterval(this.timer);
+                                this.Invalid = true;
+                            }
+                        },
+                        err => {
+                            err, clearInterval(this.timer);
+                        }
+                    );
+                }, 3000);
+            },
+            // 支付成功确定
+            onSubmit() {
+                let queryObj = { orderId: this.orderId};
+                this.$router.push({
+                    path: '/product/wxScore-detail',
+                    query: queryObj
+                });
+            }
+        },
+        created() {
+            this.params = { ...this.$route.query };
+            this.orderId = this.$route.query.orderId;
+            let url = this.$route.query.qrCode;
+            if (this.timer) {
+                clearInterval(this.timer);
+            }
+            QRCode.toDataURL(
+                url,
+                {
+                    margin: 1,
+                    width: 400
+                },
+                (err, url) => {
+                    this.qrCode = url;
+                    this.orderSts();
+                }
+            );
+        },
+        beforeRouteLeave (to, from, next) {
+            if (this.timer) {
+                clearInterval(this.timer);
+            }
+            next()
+        },
+    }
+</script>
+<style lang="less" scoped>
+@import '../../../style/mixin';
+
+.getQRCode {
+    position: relative;
+    background: #F3F4F5;
+    min-height: 100%;
+    padding-bottom: 40px;
+    .vux-header {
+        &:after {
+            border-bottom: none !important;
+        }
+    }
+    .vux-header-title {
+        span {
+            color: #ffffff;
+        }
+    }
+    .left-arrow {
+        &:before {
+            border-color: #ffffff !important;
+        }
+    }
+    .black-block {
+        margin-top: -11px;
+        width: 100%;
+        height: 150px;
+        background:linear-gradient(-45deg,rgba(104,98,133,1),rgba(76,69,113,1));
+    }
+    .order-info {
+        height:587px;
+        width: 351px;
+
+        box-sizing: border-box;
+        border-radius: 6px;
+        background-color: #ffffff;
+        padding-top: 28px;
+        position: absolute;
+
+        top: 85px;
+        left: 50%;
+        transform: translateX(-50%);
+        .cell-cont-item-style {
+            width: 80%;
+            margin: 0 3%;
+            padding: 0 5%;
+            height: 50px;
+            line-height: 20px;
+            background: #FAFAFA;
+            font-size: 16px;
+            // box-sizing: border-box;
+            // padding-bottom: 10px;
+            // margin-bottom: 40px;
+            // border-bottom: 1px solid #dddddd;
+            .flexLayout(space-between, center, row);
+            .title {
+                text-align: left;
+                color: #666666;
+            }
+            .value {
+                text-align: right;
+                color: #333333;
+                // font-size: 14px;
+            }
+        }
+        .cell-item-style {
+            width: 80%;
+            margin: 0 3%;
+            padding: 0 5%;
+            height: 50px;
+            line-height: 50px;
+            background: #FAFAFA;
+            font-size: 16px;
+            // box-sizing: border-box;
+            // padding-bottom: 10px;
+            // margin-bottom: 40px;
+            // border-bottom: 1px solid #dddddd;
+            .flexLayout(space-between, center, row);
+            .title {
+                text-align: left;
+                color: #666666;
+            }
+            .value {
+                text-align: right;
+                color: #333333;
+                // font-size: 14px;
+            }
+        }
+        .last-cell {
+            margin-bottom: 25px !important;
+            height:100px;
+        }
+        .qrcodeImg {
+            width: 190px;
+            height: 190px;
+            background:rgba(255,255,255,1);
+            border:6px solid rgba(223,212,255,1);
+            border-radius:8px;
+            margin-bottom: 37px;
+        }
+        .notice {
+            color: #3a3a3a;
+            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;
+    }
+  }
+  .btn-box{
+      &{
+          margin-top: 520px;
+          text-align: center;
+      }
+      button{
+          width: 90vw;
+          height:44px;
+          background:rgba(137,110,219,1);
+          border-radius:22px;
+          color: #fff;
+          border: 0;
+          outline: none;
+      }
+  }
+}
+</style>
+
+
diff --git a/src/views/old/store/getXygHbQRCode.vue b/src/views/old/store/getXygHbQRCode.vue
new file mode 100644
index 0000000..8cfbba0
--- /dev/null
+++ b/src/views/old/store/getXygHbQRCode.vue
@@ -0,0 +1,248 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-03-19 13:48:16
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-03-23 10:15:36
+ * @Description: 信用购花呗二维码页面
+ -->
+<template>
+    <div class="getQRCode">
+    <van-nav-bar title="扫码办理" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+        <div class="black-block"></div>
+        <div class="order-info">
+            <img class="qrcodeImg" :src="qrCode" alt="qrcode">
+            <!-- <p class="notice">扫一扫,办理分期业务</p> -->
+            <div class="cell-item-style">
+                <span class="title">分期金额</span>
+                <span class="value">{{params.capitalAmt}}元</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">花呗分期手续费率</span>
+                <span class="value">{{params.zfbRate}}%</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">智享服务费率</span>
+                <span class="value">{{params.platRate}}%</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">分期期数</span>
+                <span class="value">{{params.term}}期</span>
+            </div>
+            <div class="cell-item-style">
+                <span class="title">客户还款总额</span>
+                <span class="value">{{params.totalAmount}}元</span>
+            </div>
+            <p style="width:94%;margin-left:3%;text-align:left;padding-top:14px">
+                <span style="color:#999999;font-size:12px">请主动向用户展示</span>
+                <span style="color:#896EDB;font-size:12px" @click="ShowAgreen=true">《用户协议》</span>
+                <span style="color:#999999;font-size:12px">,扫描二维码则视为用户同意此协议。</span>
+            </p>
+        </div>
+        <f-confirm v-model="showModal" showIcon iconClass='scene_Staging-shenhezhong' iconColor='#fff' @on-confirm='onSubmit' :showCancelBtn='false'>
+            <div>支付完成</div>
+        </f-confirm>
+        <f-confirm v-model="Invalid" showIcon iconClass='scene_Staging-shenhezhong' iconColor='#fff' :showCancelBtn='false'>
+            <div>当前二维码已经失效,请点击重新生成二维码</div>
+        </f-confirm>
+        <van-popup v-model="ShowAgreen">
+        <div class="agreenBox">
+          <div class="agreen-html" v-html="Agreend"></div>
+          <div class="close-agreen" @click="ShowAgreen = false">
+            <van-icon name="close" />
+          </div>
+        </div>
+      </van-popup>
+    </div>
+</template>
+<script>
+    import QRCode from 'qrcode';
+
+    export default {
+        name: 'getQRCode',
+        data() {
+            return {
+                ShowAgreen:false,
+                Agreend:'',
+                qrCode: '',
+                orderId:"",
+                timer: '', //轮询定时器
+                showModal: false, //模态窗提示
+                Invalid: false, //模态窗提示
+                params: {
+                    totalAmount: 0,
+                    term: 0,
+
+                }
+            }
+        },
+        methods:{
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+            //轮询查询订单状态
+            orderSts() {
+                this.timer = setInterval(() => {
+                    this.$api.hbOrderFindOrderSts({ orderId: this.orderId }).then(
+                        res => {
+                            if (res.body.orderStatus == 1) {
+                                clearInterval(this.timer);
+                                this.showModal = true;
+                            } else if (res.body.orderStatus == 2) {
+                                clearInterval(this.timer);
+                                this.Invalid = true;
+                            } else if (res.body.orderStatus == 3) {
+                                clearInterval(this.timer);
+                                this.showModal = true;
+                            }
+                        },
+                        err => {
+                            err, clearInterval(this.timer);
+                        }
+                    );
+                }, 10000);
+            },
+            // 支付成功确定
+            onSubmit() {
+                let queryObj = { id: this.orderId,whereGo:1};
+                if(this.$route.query.typeId){
+                    queryObj.typeId = this.$route.query.typeId;
+                }
+                this.$router.push({
+                    path: '/product/xyg-hb-detail',
+                    query: queryObj
+                });
+            }
+        },
+        created() {
+            this.Agreend = agreement3
+            this.params = { ...this.$route.query };
+            this.orderId = this.$route.query.orderId;
+            if (this.timer) {
+                clearInterval(this.timer);
+            }
+            let url = window.sessionStorage.getItem('xygHbpayQrCodeUrl');
+            QRCode.toDataURL(
+                url,
+                {
+                    margin: 1,
+                    width: 400
+                },
+                (err, url) => {
+                    if (err) console.error(err);
+                    this.qrCode = url;
+                    this.orderSts();
+                }
+            );
+        },
+        beforeRouteLeave (to, from, next) {
+            if (this.timer) {
+                clearInterval(this.timer);
+            }
+            next()
+        },
+    }
+</script>
+<style lang="less" scoped>
+@import '../../../style/mixin';
+
+.getQRCode {
+    position: relative;
+    background: #F3F4F5;
+    min-height: 100%;
+    .vux-header {
+        &:after {
+            border-bottom: none !important;
+        }
+    }
+    .vux-header-title {
+        span {
+            color: #ffffff;
+        }
+    }
+    .left-arrow {
+        &:before {
+            border-color: #ffffff !important;
+        }
+    }
+    .black-block {
+        margin-top: -11px;
+        width: 100%;
+        height: 150px;
+        background:linear-gradient(-45deg,rgba(104,98,133,1),rgba(76,69,113,1));
+    }
+    .order-info {
+        height: 587px;
+        width: 351px;
+        text-align: center;
+        box-sizing: border-box;
+        border-radius: 6px;
+        background-color: #ffffff;
+        padding-top: 28px;
+        position: absolute;
+        top: 85px;
+        left: 50%;
+        transform: translateX(-50%);
+        .cell-item-style {
+            width: 80%;
+            margin: 0 3%;
+            padding: 0 7%;
+            height: 50px;
+            line-height: 50px;
+            background: #FAFAFA;
+            font-size: 16px;
+            // box-sizing: border-box;
+            // padding-bottom: 10px;
+            // margin-bottom: 40px;
+            // border-bottom: 1px solid #dddddd;
+            .flexLayout(space-between, center, row);
+            .title {
+                color: #666666;
+            }
+            .value {
+                color: #333333;
+                // font-size: 14px;
+            }
+        }
+        .last-cell {
+            margin-bottom: 25px !important;
+        }
+        .qrcodeImg {
+            width: 190px;
+            height: 190px;
+            background:rgba(255,255,255,1);
+            border:6px solid rgba(223,212,255,1);
+            border-radius:8px;
+            margin-bottom: 37px;
+        }
+        .notice {
+            color: #3a3a3a;
+            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;
+    }
+  }
+}
+</style>
+
+
+
diff --git a/src/views/old/store/gzzj/createcode.vue b/src/views/old/store/gzzj/createcode.vue
new file mode 100644
index 0000000..d7a6f95
--- /dev/null
+++ b/src/views/old/store/gzzj/createcode.vue
@@ -0,0 +1,280 @@
+<!--
+ * @Descripttion: 智享云生成二维码
+ * @Author:TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-3-1 15:00:00
+ * @LastEditTime: 2019-09-02 11:13:02
+ -->
+<template>
+    <div class="contract-installment-zxh">
+        <x-header title="公众租机" :left-options="{backText:''}"></x-header>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                合约信息
+            </div>
+            <selector title='合约套餐' placeholder='请选择' v-model="contId" :options='contList'
+                      :value-map="['contCode','contName']" @on-change='contractChange' direction='rtl'></selector>
+            <x-input title='直降金额' v-model.trim="capitalAmt" readonly text-align='right'><span slot="right" style="font-size: 14px;"></span></x-input>
+            <x-input title='电子券金额' v-model.trim="ticketAmt" readonly text-align='right'><span slot="right" style="font-size: 14px;"></span></x-input>
+            <x-input title='月缴话费' v-model.trim="monthlyFees" readonly text-align='right'><span slot="right" style="font-size: 14px;"></span></x-input>
+            <x-input title='期数' v-model.trim="term" readonly text-align='right'><span slot="right" style="font-size: 14px;"></span></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                商品信息
+            </div>
+            <selector title='设备类型' placeholder='请选择' v-model="goodsType" :options='deviceTypeList'
+                      :value-map="['code','name']" @on-change='goodsTypeChange' direction='rtl'></selector>
+            <selector v-if="goodsType==1" title='品牌' placeholder='请选择' v-model="goodsBrand" :options='goodsBrandList'
+                      :value-map="['skuName','skuName']" @on-change='goodsBrandChange' direction='rtl'></selector>
+            <selector v-if="goodsType==1" title='名称' placeholder='请选择' v-model="goodsModel" :options='goodsModelList'
+                      :value-map="['size','size']" @on-change='goodsModelChange' direction='rtl'></selector>
+            <x-input title='价格' v-model.trim="goodsPrice" readonly placeholder='请输入' :max='5' text-align='right'>
+            </x-input>
+            <x-input title='IMEI' v-model.trim="goodsImei" placeholder='请输入' :max='20' text-align='right' v-if="goodsType==1">
+            </x-input>
+            <x-input title='SN' v-model.trim="goodsSn" placeholder='请输入SN' :max='20' text-align='right' v-else>
+            </x-input>
+
+        </group>
+
+        <van-button class="btn" round @click="gzzjOrderCreate">生成二维码</van-button>
+    </div>
+</template>
+
+<script>
+    import {
+        XAddress
+    } from 'vux';
+    import QRCode from 'qrcode';
+    import IDValidator from '@/utils/IDValidator';
+
+    export default {
+        name: 'gzzj_createcode',
+        components: {
+            XAddress
+        },
+        data() {
+            return {
+                contList: [],
+                deviceTypeList: [{
+                    code: 1,
+                    name: "手机",
+                },
+                {
+                    code: 2,
+                    name: "电子商品",
+                },
+                {
+                    code: 3,
+                    name: "智能家电",
+                },
+                {
+                    code: 4,
+                    name: "其他",
+                }],
+                goodsBrandList: [],
+                goodsModelList: [],
+                goodsDescList: [],
+                sibSkuRespVoList: [],
+                contId: '', // 选中的合约
+                contName: '', // 选中的合约
+                capitalAmt:'', //直降金额
+                ticketAmt:'', //电子券金额
+                monthlyFees: '', // 月缴话费
+                term: '', // 期数
+                goodsType: '', // 选中的类型
+                goodsBrand: '', //商品品牌
+                goodsModel: '', //商品名称
+                goodsDesc: '', // 商品描述
+                goodsPrice: '', // 价格
+                goodsImei: '', // IMEI
+                goodsSn: '', //SN
+            }
+        },
+        created() {
+            this.$api.gzzjOrderInit().then(res => {
+                this.contList = res.body.contList;
+                this.sibSkuRespVoList =res.body.sibSkuRespVoList;
+            }, err => err);
+        },
+        watch: {
+        },
+        methods: {
+            // 处理合约的修改
+            contractChange(val) {
+                if (!val) {
+                    return;
+                }
+                let currentEle=JSON.parse(JSON.stringify(this.contList)).find(item=>item.contCode===val)
+                this.contId = currentEle.contCode;
+                this.contName = currentEle.contName;
+                this.term = currentEle.term;
+                this.capitalAmt = currentEle.strDownAmt;
+                this.monthlyFees = currentEle.monthConsAmt;
+                this.ticketAmt = currentEle.eleBondAmt;
+            },
+            // 处理合约的修改
+            goodsTypeChange(val) {
+                if (!val) {
+                    return;
+                }
+                let indexNum = -1;
+                let currentEle = JSON.parse(JSON.stringify(this.deviceTypeList)).find(item => {
+                    //定义一个index,index接收我们找到的全部数据
+                    indexNum++;
+                    return item.code == val
+                    //当我们里面循环的值和我们要找的值相等的时候返回
+                })
+                this.goodsType = currentEle.code;
+                if(this.goodsType== 1) {
+                    this.goodsBrandList = this.sibSkuRespVoList[0].phoneSkuReqVoList;
+                }else{
+                    this.goodsDescList = this.sibSkuRespVoList[indexNum].ortherSkuReqVoList;
+                }
+            },
+            // 处理合约的修改
+            goodsBrandChange(val) {
+                if (!val) {
+                    return;
+                }
+                let indexNum = -1;
+                let currentEle = JSON.parse(JSON.stringify(this.goodsBrandList)).find(item => {
+                    //定义一个index,index接收我们找到的全部数据
+                    indexNum++;
+                    return item.skuName == val
+                    //当我们里面循环的值和我们要找的值相等的时候返回
+                })
+                this.goodsBrand = currentEle.skuName;
+                this.goodsModelList = this.goodsBrandList[indexNum].skuSize;
+            },
+            // 处理合约的修改
+            goodsModelChange(val) {
+                if (!val) {
+                    return;
+                }
+                let indexNum = -1;
+                let currentEle = JSON.parse(JSON.stringify(this.goodsModelList)).find(item => {
+                    //定义一个index,index接收我们找到的全部数据
+                    indexNum++;
+                    return item.size == val
+                    //当我们里面循环的值和我们要找的值相等的时候返回
+                })
+                this.goodsModel = currentEle.size;
+                this.goodsPrice =  currentEle.price;
+            },
+            // 处理合约的修改
+            goodsDescChange(val) {
+                if (!val) {
+                    return;
+                }
+                let indexNum = -1;
+                let currentEle = JSON.parse(JSON.stringify(this.goodsDescList)).find(item => {
+                    //定义一个index,index接收我们找到的全部数据
+                    indexNum++;
+                    return item.deviceDepict == val
+                    //当我们里面循环的值和我们要找的值相等的时候返回
+                })
+                this.goodsDesc = currentEle.deviceDepict;
+                this.goodsPrice =  currentEle.price;
+            },
+            // 生成二维码
+            gzzjOrderCreate() {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.contId)) {
+                    v.toast('请选择合约套餐');
+                    return false;
+                }
+                if (this.goodsType == 1 && v.checkValEmpty(this.goodsType)) {
+                    v.toast('请输入商品品牌');
+                    return false;
+                }
+                if (this.goodsType == 1 && !/^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(this.goodsBrand)) {
+                    v.toast('请选择商品品牌');
+                    return false;
+                }
+                if (this.goodsType == 1 && v.checkValEmpty(this.goodsModel)) {
+                    v.toast('请选择商品名称');
+                    return false;
+                }
+                if (this.goodsType == 1 && v.checkValEmpty(this.goodsImei)) {
+                    v.toast('请输入商品IMEI');
+                    return false;
+                }else  if (this.goodsType != 1 && v.checkValEmpty(this.goodsSn)) {
+                    v.toast('请输入商品SN');
+                    return false;
+                }
+                this.$api.gzzjOrderPrecreate({
+                    contId:Number(this.contId),
+                    deviceDepict: this.goodsType,
+                    deviceType: this.goodsType,
+                    goodsBrand: this.goodsBrand,
+                    goodsPrice: this.goodsPrice,
+                    goodsModel: this.goodsModel,
+                    imeicode: this.goodsImei,
+                    sn: this.goodsSn,
+                }).then(res => {
+                    this.qrCode = res.body
+                    if (this.qrCode) {
+                        this.createdQRCode();
+                    }
+                }, err => err);
+            },
+            // 生成二维码
+            createdQRCode() {
+                let queryObj = {
+                    qrCode:this.qrCode
+                }
+                this.$router.push({
+                    path: "/gzzj/gzzjQrCode",
+                    query: queryObj
+                })
+            },
+            // 根据城市code 获取拼接的字符串
+            getAddrText(arr) {
+                let str = '';
+                this.cityList.forEach(item => {
+                    if (arr.indexOf(item.value) > -1) {
+                        str += item.name
+                    }
+                })
+                return str;
+            }
+        }
+    };
+</script>
+<style lang='less' >
+    .contract-installment-zxh {
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        padding-bottom: 80px;
+        overflow-y: scroll;
+
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+    }
+    .btn {
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+    }
+</style>
diff --git a/src/views/old/store/gzzj/gzzjQrCode.vue b/src/views/old/store/gzzj/gzzjQrCode.vue
new file mode 100644
index 0000000..087c3a0
--- /dev/null
+++ b/src/views/old/store/gzzj/gzzjQrCode.vue
@@ -0,0 +1,198 @@
+<!--
+ * @Date: 2019-08-30 14:08:02
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 16:44:00
+ * @Description:
+ -->
+<template>
+    <div class="getQRCode">
+        <!-- <x-header title="扫码办理" :left-options="{backText:''}" style="background-color:#3A3A3A;"></x-header> -->
+    <van-nav-bar title="扫码办理" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+        <div class="black-block" :style="{background:$store.state.backColor}"></div>
+        <div class="order-info">
+            <div style="text-align: center;">
+                <img class="qrcodeImg" :src="qrCode" alt="qrCode">
+            </div>
+            <div class="cell-cont-item-style">
+                <span class="title">二维码失效时间为半小时,请尽快提供给用户进行扫码</span>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+    import QRCode from 'qrcode';
+
+    export default {
+        name: 'getQRCode',
+        data() {
+            return {
+                qrCode: '',
+            }
+        },
+        methods:{
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+        },
+        created() {
+            this.params = { ...this.$route.query };
+            let url = this.$route.query.qrCode;
+            QRCode.toDataURL(
+                url,
+                {
+                    margin: 1,
+                    width: 400
+                },
+                (err, url) => {
+                    this.qrCode = url;
+                }
+            );
+        }
+    }
+</script>
+<style lang="less" scoped>
+@import '../../../../style/mixin';
+
+.getQRCode {
+    position: relative;
+    background: #F3F4F5;
+    min-height: 100%;
+    padding-bottom: 40px;
+    .vux-header {
+        &:after {
+            border-bottom: none !important;
+        }
+    }
+    .vux-header-title {
+        span {
+            color: #ffffff;
+        }
+    }
+    .left-arrow {
+        &:before {
+            border-color: #ffffff !important;
+        }
+    }
+    .black-block {
+        margin-top: -11px;
+        width: 100%;
+        height: 150px;
+        background:linear-gradient(-45deg,rgba(104,98,133,1),rgba(76,69,113,1));
+    }
+    .order-info {
+        height:587px;
+        width: 351px;
+
+        box-sizing: border-box;
+        border-radius: 6px;
+        background-color: #ffffff;
+        padding-top: 28px;
+        position: absolute;
+
+        top: 85px;
+        left: 50%;
+        transform: translateX(-50%);
+        .cell-cont-item-style {
+            width: 80%;
+            margin: 0 3%;
+            padding: 0 5%;
+            height: 50px;
+            line-height: 20px;
+            background: #FAFAFA;
+            font-size: 16px;
+            // box-sizing: border-box;
+            // padding-bottom: 10px;
+            // margin-bottom: 40px;
+            // border-bottom: 1px solid #dddddd;
+            .flexLayout(space-between, center, row);
+            .title {
+                text-align: center;
+                color: #FF0000;
+            }
+            .value {
+                text-align: right;
+                color: #333333;
+                // font-size: 14px;
+            }
+        }
+        .cell-item-style {
+            width: 80%;
+            margin: 0 3%;
+            padding: 0 5%;
+            height: 50px;
+            line-height: 50px;
+            background: #FAFAFA;
+            font-size: 16px;
+            // box-sizing: border-box;
+            // padding-bottom: 10px;
+            // margin-bottom: 40px;
+            // border-bottom: 1px solid #dddddd;
+            .flexLayout(space-between, center, row);
+            .title {
+                text-align: left;
+                color: #666666;
+            }
+            .value {
+                text-align: right;
+                color: #333333;
+                // font-size: 14px;
+            }
+        }
+        .last-cell {
+            margin-bottom: 25px !important;
+            height:100px;
+        }
+        .qrcodeImg {
+            width: 190px;
+            height: 190px;
+            background:rgba(255,255,255,1);
+            border:6px solid rgba(223,212,255,1);
+            border-radius:8px;
+            margin-bottom: 37px;
+        }
+        .notice {
+            color: #3a3a3a;
+            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;
+    }
+  }
+  .btn-box{
+      &{
+          margin-top: 520px;
+          text-align: center;
+      }
+      button{
+          width: 90vw;
+          height:44px;
+          background:rgba(137,110,219,1);
+          border-radius:22px;
+          color: #fff;
+          border: 0;
+          outline: none;
+      }
+  }
+}
+</style>
+
+
diff --git a/src/views/old/store/gzzj/message.vue b/src/views/old/store/gzzj/message.vue
new file mode 100644
index 0000000..3ef6437
--- /dev/null
+++ b/src/views/old/store/gzzj/message.vue
@@ -0,0 +1,105 @@
+
+<template>
+    <div class="getQRCode">
+        <!-- <x-header class="message-head" title="消息详情" :left-options="{backText:''}"></x-header> -->
+        <van-nav-bar title="消息详情" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar>
+        <div class="message-body">
+            <div class="notice">
+                <p class="notice-title">{{ message.msgTitle }}</p>
+                <p>{{ message.msgTime }}</p>
+            </div>
+            <span class="line"></span>
+            <div class="notice-continue" v-html=" message.msgCon">
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+import { XHeader } from 'vux';
+import {
+        dateFormat
+    } from 'vux'
+import { mapActions } from 'vuex';
+    export default {
+        name: 'message',
+        components: {
+             XHeader,
+        },
+        data() {
+            return {
+                messageId: this.$route.query.messageId,
+                message:{
+                    msgCon: '',
+                    msgTitle: '',
+                    msgTime: '',
+                }
+            }
+        },
+        computed:{
+
+        },
+        created() {
+            this.msgInt()
+            this.getCount()
+        },
+        methods: {
+            ...mapActions(['getCount']),
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+            msgInt() {
+                this.$api.noticeDetail({id: this.messageId}).then(res => {
+                    console.log(res.body)
+                    this.message.msgCon = res.body.noticeContent;
+                    this.message.msgTitle = res.body.title;
+                    this.message.msgTime = dateFormat(res.body.pubTime);
+                })
+                
+            }
+        }
+    }
+</script>
+<style lang="less" scoped>
+.getQRCode{
+    background: #F5F5F7;
+    width: 100%;
+    height: 100%;
+}
+.message-head{
+    position: relative;
+}
+.message-body{
+    width: 96%;
+    margin: 12px 2%;
+    margin-top: 10px;
+    background: #fff;
+    .notice{
+        padding: 15px 12px;
+        border-bottom: 1px solid #EEEEEE;
+        p{
+            color: #999999;
+        }
+        &-title{
+            font-size: 16px;
+            font-weight: bold;
+            color: #333333 !important;
+            margin-bottom: 10px;
+        }
+    }
+    .notice-continue{
+        width: 94%;
+        margin: 0px 2%;
+        padding: 15px 0;
+        white-space: wrap;
+        font-size: 14px;
+        word-wrap: break-word;
+        height: auto;
+        padding-left: 2%;
+        background: #fff;
+        color: #666666;
+        line-height: 22px;
+    }
+}
+</style>
diff --git a/src/views/old/store/gzzj/set.vue b/src/views/old/store/gzzj/set.vue
new file mode 100644
index 0000000..e051e6c
--- /dev/null
+++ b/src/views/old/store/gzzj/set.vue
@@ -0,0 +1,197 @@
+<!--
+ * @Descripttion: 智享云状态切换 + 数据资料的反显,无复杂逻辑
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-21 18:06:00
+ * @LastEditTime: 2019-09-02 11:15:49
+ -->
+<template>
+    <div class="zxh-set-box">
+        <x-header title="公众租机" :left-options="{backText:''}"></x-header>
+        <group>
+            <x-switch title="状态" v-model="status"></x-switch>
+        </group>
+        <f-space></f-space>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                基本信息
+            </div>
+            <cell title="商户名称" :value="info.merName"></cell>
+            <cell title="营业执照号" :value="info.licenseNo"></cell>
+            <cell title="地址" :value="info.merAddr"></cell>
+            <cell title="详细地址" :value="info.merDtlAddr"></cell>
+            <cell title="营业面积" :value="info.merArea"></cell>
+            <cell title="成立日期" :value="info.foundDate | timeformat('yyyy-MM-dd')"></cell>
+            <cell title="协议开始时间" :value="(info.agreeStartTime || '') | parseDate"></cell>
+            <cell title="协议结束时间" :value="(info.agreeEndTime || '') | parseDate"></cell>
+        </group>
+        <f-space></f-space>
+
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                法人信息
+            </div>
+            <cell title="法人姓名" :value="info.legalName"></cell>
+            <cell title="法人身份证号" :value="info.legalIdNo"></cell>
+            <cell title="法人电话" :value="info.legalMblNo"></cell>
+            <cell title="法人家庭住址" :value="info.legalHomeAddr"></cell>
+        </group>
+        <f-space></f-space>
+
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                银行信息
+            </div>
+            <cell title="银行名称" :value="info.bankName"></cell>
+            <cell title="开户行" :value="info.bankDtlName"></cell>
+            <cell title="地址" :value="info.bankAddr"></cell>
+            <cell title="户名" :value="info.cardName"></cell>
+            <cell title="银行账号" :value="info.cardNo"></cell>
+            <cell title="账号类型" :value="info.cardTypeName"></cell>
+            <cell title="开户行行号" v-if="info.cardType ==='pu'" :value="info.bankNo"></cell>
+        </group>
+
+        <f-space></f-space>
+
+        <!-- 图片反显 -->
+        <section class="img-box">
+            <h4>营业执照照片</h4>
+            <div class="img-item" v-for="(item, index) in info.licencePhotos" :key="index"
+                :style="item.fileUrl | generate">
+            </div>
+        </section>
+        <section class="img-box">
+            <h4>法人身份证正反面照片</h4>
+            <div class="img-item" v-for="(item, index) in info.legalCardPhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>房产证或租赁合同</h4>
+            <div class="img-item" v-for="(item, index) in info.houseContractPhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>外景照、门头照片、前台照、内景照</h4>
+            <div class="img-item" v-for="(item, index) in info.storePhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>套餐活动清单、终端商品定价清单</h4>
+            <div class="img-item" v-for="(item, index) in info.mealBillPhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>运营商授权文件</h4>
+            <div class="img-item" v-for="(item, index) in info.accreditFilePhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <f-button fixed @on-click="submit">保存</f-button>
+    </div>
+</template>
+
+<script>
+    import {
+        XSwitch
+    } from 'vux';
+
+    export default {
+        name: "heyd_info",
+        components: {
+            XSwitch
+        },
+        data() {
+            return {
+                status: true,
+                info: {},
+                productInfo: {}
+            }
+        },
+        filters: {
+            generate(path) {
+                return {
+                    'background-image': `url(${path})`
+                }
+            },
+            parseDate(v = '') {
+                if (v) {
+                    return v.slice(0, 4) + '-' + v.slice(4, 6) + '-' + v.slice(-2);
+                } else {
+                    return '暂无';
+                }
+            }
+        },
+        created() {
+            this.init();
+        },
+        methods: {
+            init() {
+                this.$api.prodRefInit(this.$route.query).then(res => {
+                    this.productInfo = res.body;
+                    this.status = !!this.productInfo.status;
+                });
+                // 获取商户信息反显
+                this.$api.getMerInfo(this.$route.query.orgId).then(res => {
+                    this.info = res.body;
+                })
+            },
+            // 保存
+            submit() {
+                this.$api.prodSaveRef({
+                    ...this.$route.query,
+                    prodSkDtlInfoList: this.productInfo.prodSkDtlInfoList,
+                    status: this.status ? 1 : 0
+                }).then(() => {
+                    this.$notify('保存成功');
+                });
+            }
+        },
+    }
+</script>
+
+<style lang="less">
+    .zxh-set-box {
+        padding-bottom: 60px;
+
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .img-box {
+            padding: 0 12px;
+            background-color: #fff;
+            margin-bottom: 20px;
+
+            h4 {
+                font-weight: normal;
+                font-size: 15px;
+                line-height: 40px;
+            }
+
+            .img-item {
+                display: inline-block;
+                height: 100px;
+                width: 100px;
+                margin: 0 10px 10px 0;
+                border: 1Px dashed #d9d9d9;
+                background-repeat: no-repeat;
+                background-size: contain;
+                background-position: center;
+            }
+        }
+    }
+</style>
diff --git a/src/views/old/store/gzzj/upload.vue b/src/views/old/store/gzzj/upload.vue
new file mode 100644
index 0000000..459e24c
--- /dev/null
+++ b/src/views/old/store/gzzj/upload.vue
@@ -0,0 +1,273 @@
+<!--
+ * @Descripttion: 上传合约凭证
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-08 09:16:44
+ * @LastEditTime: 2019-09-03 09:25:14
+ -->
+<template>
+    <div class="zxh-upload-box h-100-g">
+        <x-header :left-options="{'backText': ''}" title="上传合约凭证" class="gradient-color"></x-header>
+        <div class="content" v-for="(item, index) in fileTypeArr" :key="index">
+            <h4 class="title">
+                <span>{{item.name}}</span>
+                <div @click="changeShowselect(item)">
+                    <i class="iconfont scene_Staging-xiangji"></i>
+                    <input ref="photo" type="file" accept="image/*" @change="getFile($event.currentTarget,item.code)">
+                    <input ref="picture" type="file" accept="image/*" capture="camera"
+                        @change="getFile($event.currentTarget,item.code)">
+                </div>
+            </h4>
+            <ul class="upload">
+                <li class="upload-item" v-for="(item, index) in item.fileIds" :key="index"
+                    :style="{'background-image':`url(${item.fileUrl})`}">
+                    <i class="iconfont scene_Staging-shibai1" @click="deleteImgItem(index)"></i>
+                </li>
+            </ul>
+        </div>
+        <group>
+            <x-input title="手机号" v-model="form.contMblNo" placeholder="请输入" text-align="right" :max="11"></x-input>
+        </group>
+        <f-button @on-click="submit()">提交</f-button>
+
+
+        <van-action-sheet v-model="showSelect" :close-on-click-overlay="false" cancel-text="取消" :actions="nav"
+            @select="handleSelect">
+        </van-action-sheet>
+    </div>
+</template>
+
+<script>
+    import {
+        compress
+    } from "@/utils/index";
+    import {
+        Actionsheet
+    } from "vux";
+
+    export default {
+        name: "heyd_upload",
+        data() {
+            return {
+                showSelect: false,
+                nav: [{
+                        name: '拍照'
+                    },
+                    {
+                        name: '从手机相册选择'
+                    },
+                ],
+                form: {
+                    orderId: '',
+                    contMblNo: '',
+                    fileIds: []
+                },
+                fileTypeArr: [],
+                currentItem: {}
+            }
+        },
+        components: {
+            Actionsheet
+        },
+        props: ["orderId"],
+        created() {
+            this.form.orderId = this.orderId;
+            this.$api.h_getFileType().then(res => {
+                let list = res.body || [];
+                this.fileTypeArr = list.map(item => {
+                    return {
+                        ...item,
+                        fileIds: []
+                    }
+                })
+            })
+        },
+        methods: {
+            changeShowselect(item) {
+                if (item.fileIds.length) {
+                    this.$tool.toast(`最多上传一张照片~`)
+                    return
+                }
+                this.showSelect = true;
+                this.currentItem = item;
+            },
+            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.92,
+                            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);
+                    }
+                })
+            },
+            handleSelect(item, index) {
+                if (index === 0) {
+                    this.$refs['picture'][0].click();
+                } else {
+                    this.$refs['photo'][0].click();
+                }
+                this.showSelect = false;
+            },
+            // 删除图片
+            deleteImgItem(index) {
+                this.currentItem.fileIds.splice(index, 1);
+            },
+            // 获取base64
+            getFile(el, fileType) {
+                let file = el.files[0];
+                if (typeof file === 'undefined') return;
+                let reader = new FileReader(),
+                    that = this;
+                reader.readAsDataURL(file);
+                reader.onload = function () {
+                    that.imgCompress(this.result).then(base64 => {
+                        that.upload(base64.split(',')[1], file.type.split('/')[1], fileType);
+                    })
+                }
+            },
+            //上传文件
+            upload(base64, suffix, fileType) {
+                let params = {
+                    fileType,
+                    suffix,
+                    base64Data: base64
+                }
+                this.$api.uploadFile(params).then(res => {
+                    this.currentItem.fileIds.push(res.body);
+                })
+            },
+            // 提交保存
+            submit() {
+                let form = this.form,
+                    tel = form.contMblNo;
+
+                let len = this.fileTypeArr.length;
+                for (let index = 0; index < len; index++) {
+                    const item = this.fileTypeArr[index];
+                    if (item.fileIds.length === 0) {
+                        this.$tool.toast(`请上传${item.name}`)
+                        return
+                    }
+                }
+
+
+                if (tel.length === 0) {
+                    this.$tool.toast("请输入电话号码")
+                    return;
+                }
+
+                if (!this.$tool.checkPhone(tel)) {
+                    this.$tool.toast("请输入正确的电话号码")
+                    return
+                }
+                let params = {
+                    orderId: form.orderId,
+                    contMblNo: tel,
+                    fileIds: []
+                };
+
+
+                let fileIds = [];
+
+                for (let k = 0; k < len; k++) {
+                    const item = this.fileTypeArr[k];
+                    let arr = item.fileIds;
+                    arr.forEach(child => {
+                        fileIds.push(child.id)
+                    })
+                    // fileIds.push(...item.fileIds);
+                }
+
+                params.fileIds = fileIds;
+                this.$api.h_uploadProtocol(params).then(res => {
+                    this.$tool.toast("提交成功")
+                    this.$router.go(-1)
+                })
+            }
+        }
+    }
+</script>
+
+<style lang="less" scoped>
+    .zxh-upload-box {
+        padding-top: 54px;
+        background-color: #f1f1f1;
+    }
+
+    .content {
+        margin-bottom: 10px;
+        padding-bottom: 12px;
+        background-color: @color-white;
+
+        .title {
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            padding: 0 12px;
+            height: 49px;
+            line-height: 49px;
+            font-size: @font-size-base;
+            font-weight: @font-weight-base;
+
+            input {
+                display: none;
+            }
+        }
+    }
+
+    .upload {
+        margin: 5px 12px 0;
+        display: flex;
+        justify-content: flex-start;
+        align-items: center;
+        flex-wrap: wrap;
+
+        .upload-item {
+            margin-right: 12px;
+            width: 109px;
+            height: 109px;
+            position: relative;
+            background-position: center;
+            background-size: contain;
+            background-repeat: no-repeat;
+            margin-bottom: 12px;
+
+            &:nth-child(3n) {
+                margin-right: 0;
+            }
+
+            .iconfont {
+                position: absolute;
+                right: 3Px;
+                top: 0;
+            }
+        }
+    }
+
+    #file {
+        display: none;
+    }
+
+    .scene_Staging-xiangji {
+        fill: @color-border-theme;
+        color: @color-border-theme;
+        font-size: 20px;
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/hb-contract.vue b/src/views/old/store/hb-contract.vue
new file mode 100644
index 0000000..5f0277a
--- /dev/null
+++ b/src/views/old/store/hb-contract.vue
@@ -0,0 +1,264 @@
+<!--
+ * @Date: 2019-08-30 13:38:35
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-10-28 15:24:08
+ * @Description: 
+ -->
+
+<template>
+    <div class="hb-credit-installment h-100-g">
+        <x-header title="办理分期" :left-options="{backText:''}"></x-header>
+        <!--合约机分期-->
+        <group v-show="activeTab === 0">
+            <div class="title">
+                <span class="line"></span>
+                合约信息
+            </div>
+            <selector title='合约套餐' placeholder='请选择' v-model="selectContract" :options='contractList'
+                :value-map="['contId','contName']" @on-change='handleChangeContract' direction='rtl'></selector>
+            <x-input title='结算金额' v-model.trim="selectContractInfo.capitalAmt" readonly text-align='right'></x-input>
+            <x-input title='月缴话费' v-model.trim="selectContractInfo.monthlyFees" readonly text-align='right'></x-input>
+            <x-input title='月还款额' v-model.trim="selectContractInfo.monthlyPayments" readonly text-align='right'>
+            </x-input>
+            <x-input title='期数' v-model.trim="selectContractInfo.term" readonly text-align='right'></x-input>
+            </x-input>
+            <div style="height: 10px; background: #f5f5f5;"></div>
+            <div class="title">
+                <span class="line"></span>
+                商品信息
+            </div>
+            
+            <x-input title='商品品牌' v-model.trim="contractGoodsBrand" placeholder='请输入' :max='10' text-align='right'>
+            </x-input>
+            <x-input title='商品名称' v-model.trim="contractGoodsName" placeholder='请输入' :max='20' text-align='right'>
+            </x-input>
+            <div style="height: 10px; background: #f5f5f5;"></div>
+            <div class="title">
+                <span class="line"></span>
+                用户信息
+            </div>
+            <x-input title='用户姓名' v-model.trim="contractUserName" placeholder='请输入' :max='10' text-align='right'>
+            </x-input>
+            <x-input title='用户手机号' v-model.trim="contractUserMblNo" placeholder='请输入' :max='11' text-align='right'>
+            </x-input>
+        </group>
+        
+
+        <div class="qrCode-box" v-if="dataURL">
+            <div class="qrCode">
+                <img :src="dataURL" alt="qrcode">
+            </div>
+        </div>
+
+        <!--点击创建订单展示 弹窗 -->
+        <FConfirmSimple v-model="showConfirm" ref="FConfirmQRCode" @on-hide="handleHide"
+            iconClass="scene_Staging-dingdan" class="hb-order-confirm" :showIcon="true" >
+            <div class="trial-list">
+                <div>还款总额:{{trial.totalAmount}}元</div>
+                <div>每月还款额:{{trial.repayPerMonth}}元</div>
+                <div>费率:{{trial.feeRate}}%</div>
+            </div>
+            <f-button @on-click='createdQRCode'>生成二维码</f-button>
+        </FConfirmSimple>
+        <!--此次修改为 生成订单-->
+        <f-space type="large"></f-space>
+        <f-button fixed @on-click='contractInstallmentOrder'>生成订单</f-button>
+    </div>
+</template>
+
+<script>
+    import QRCode from 'qrcode';
+    import FConfirmSimple from '@/components/old/FConfirmSimple.vue';
+
+    export default {
+        name: 'hb-credit-installment',
+        components: {
+            FConfirmSimple,
+        },
+        data() {
+            return {
+                monthMoney: '', //月还款总额
+                activeTab: 0, // 处于激活状态下的tab, 最开始为合约机分期
+                tabList: ['合约机分期', '商品分期'],
+                selectContract: '', // 选中的合约
+                contractList: [], // 合约列表
+                selectContractInfo: {// 当前选中合约元素
+                    capitalAmt:"",
+                    monthlyFees:"",
+                    monthlyPayments:"",
+                    term:""
+                }, 
+                contractGoodsBrand: '', //商品品牌
+                contractGoodsName: '', //商品名称
+                contractUserMblNo: '', //用户手机号
+                contractUserName: '', //用户名称
+                // hb
+                capitalAmt: '', //分期本金
+                goodsBrand: '', //商品品牌
+                goodsName: '', //商品名称
+                orderNo: '', //未知参数
+                term: null, //分期期数
+                userMblNo: '', //用户手机号
+                userName: '', //用户名称
+                trial: {}, // 利率相关信息
+                orderId: '', //订单id
+                payQrCodeUrl: '', // 二维码
+                termList: [], //分期期数列表
+                dataURL: '', // QRcode
+                showConfirm: false,
+            };
+        },
+        created() {
+            this.getContractList();
+        },
+        methods: {
+            // 处理合约的修改
+            handleChangeContract(val) {
+                this.selectContractInfo = this.contractList.find((item) => {
+                    return item.contId === val;
+                })
+            },
+            handleHide() {
+                this.showConfirm = false;
+            },
+            // 生成二维码
+            createdQRCode() {
+                this.showConfirm = false;
+                let queryObj = {
+                    orderId: this.orderId,
+                    totalAmount: this.trial.totalAmount,
+                    term: this.term,
+                    typeId: this.$route.query.typeId
+                }
+                if(this.activeTab===0){
+                    queryObj.term = this.selectContractInfo.term;
+                }
+                if (this.$route.query.typeId) {
+                    queryObj.typeId = this.$route.query.typeId;
+                }
+                this.$router.push({
+                    path: "/hb-getHBQRCode",
+                    query: queryObj
+                })
+            },
+            // 合约分期生成订单
+            contractInstallmentOrder() {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.selectContract)) {
+                    v.toast('请选择合约套餐');
+                    return false;
+                }
+                let reg = /^[A-Za-z0-9\u4e00-\u9fa5]+$/;
+                if (v.checkValEmpty(this.contractGoodsBrand)) {
+                    v.toast('请输入商品品牌');
+                    return false;
+                }
+                if (!reg.test(this.contractGoodsBrand)) {
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品品牌');
+                    return false;
+                }
+                if (v.checkValEmpty(this.contractGoodsName)) {
+                    v.toast('请输入商品名称');
+                    return false;
+                }
+                if (!reg.test(this.contractGoodsName)) {
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品名称');
+                    return false;
+                }
+                if (v.checkValEmpty(this.contractUserName)) {
+                    v.toast('请输入用户姓名');
+                    return false;
+                }
+                if (v.checkValEmpty(this.contractUserMblNo)) {
+                    v.toast('请输入用户手机号');
+                    return false;
+                }
+                if (!v.checkPhone(this.contractUserMblNo)) {
+                    v.toast('请输入正确的用户手机号');
+                    return false;
+                }
+                let params = {
+                    contId: this.selectContract,
+                    goodsName: this.contractGoodsName,
+                    goodsBrand: this.contractGoodsBrand,
+                    userName: this.contractUserName,
+                    userMblNo: this.contractUserMblNo,
+                }
+                this.$api.hbhyjCreate(params).then(res => {
+                    let body = res.body;
+                    this.orderId = body.orderId;
+                    this.payQrCodeUrl = body.payQrCodeUrl;
+                    this.trial.totalAmount = body.totalAmount;
+                    this.trial.repayPerMonth = body.repayPerMonth;
+                    this.trial.feeRate = body.feeRate;
+                    this.showConfirm = true;
+                    if (body.payQrCodeUrl) {
+                        sessionStorage.setItem("hbpayQrCodeUrl", body.payQrCodeUrl);
+                    }
+                })
+                // todo 数据组装,接口的调取
+            },
+            // 获取当前的合约列表
+            getContractList() {
+                this.$api.contractList({
+                    typeId: +this.$route.query.typeId
+                }).then(res => {
+                    this.contractList = res.body;
+                }, err => err);
+            }
+        },
+    };
+
+</script>
+<style lang='less' scoped >
+    .hb-order-confirm {
+        .trial-list {
+            padding-left: 20px;
+        }
+
+        .f-button-component .f-button {
+            margin-top: 12px;
+        }
+    }
+
+    .hb-credit-installment {
+        background-color: #f1f1f1;
+        padding-top: 54px;
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .qrCode-box {
+            padding-top: 0;
+            .flexLayout(center, center, row);
+
+            .qrCode {
+                width: 200px;
+                height: 200px;
+                box-sizing: border-box;
+                background-color: #fff;
+                border: 5px solid @color-border-theme;
+                padding: 5px;
+
+                img {
+                    width: 100%;
+                    height: 100%;
+                    vertical-align: middle;
+                    display: block;
+                }
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/store/hb-credit-installment.vue b/src/views/old/store/hb-credit-installment.vue
new file mode 100644
index 0000000..4efa5eb
--- /dev/null
+++ b/src/views/old/store/hb-credit-installment.vue
@@ -0,0 +1,714 @@
+<!--
+ * @Date: 2019-08-30 13:38:35
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-09 15:17:58
+ * @Description:
+ -->
+
+<template>
+    <div class="hb-credit-installment h-100-g">
+        <!-- <x-header title="办理分期" :left-options="{backText:''}"></x-header> -->
+        <!-- <tab :line-width=1 active-color='#bfa073'>
+            <tab-item v-for="(item, index) in tabList" :key="index" :selected="activeTab === index"
+                @on-item-click="handleTabChange(index)">{{ item }}</tab-item>
+        </tab> -->
+        <van-nav-bar title="用户付息" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar>
+        <!--商品分期-->
+        <div class="mer" :style="{background:$store.state.defaultBgColor}">
+            <div class="mer-head">
+                <div class="mer-head-item">
+                    <p>{{ capitalAmt? capitalAmt : '0.00' }}</p>
+                    <p>商家到账金额</p>
+                </div>
+                <div class="mer-head-line"></div>
+                <div class="mer-head-item">
+                    <p>{{ trial.totalAmount ? trial.totalAmount : '0.00' }}</p>
+                    <p>客户总还款额</p>
+                </div>
+                <div class="mer-head-line"></div>
+                <div class="mer-head-item">
+                    <p>{{ trial.repayPerMonth ? trial.repayPerMonth : '0.00'}}</p>
+                    <p>客户月还款额</p>
+                </div>
+            </div>
+        </div>
+        <group  class="group-content">
+            <div class="title">
+                <span class="line" :style="{background:$store.state.defaultBgColor}"></span>
+                分期信息
+            </div>
+            <div class="form-content">
+                <van-field
+                        class="ipt"
+                        v-model="capitalAmt"
+                        type="number"
+                        label="商品金额"
+                        placeholder="请输入商品金额"
+                        input-align="right"
+                        border="true"
+                        :maxlength="5"
+                />
+                <!-- @input="changeMoney" -->
+                <van-field
+                        class="fenqi"
+                        readonly
+                        clickable
+                        label="分期期数"
+                        :value="value"
+                        placeholder="请选择"
+                        @click="showPickerModel"
+                        input-align="right"
+                        border="true"
+                        is-link='true'
+                />
+                <van-field
+                        class="ipt"
+                        label="商品名称"
+                        placeholder="请输入商品名称"
+                        input-align="right"
+                        border="false"
+                        :maxlength="20"
+                        v-model="goodsName"
+                />
+                <van-field
+                        class="ipt myDisableIpt"
+                        label="月还款额"
+                        placeholder="请输入月还款额"
+                        input-align="right"
+                        border="false"
+                        :maxlength="20"
+                        v-model="monthMoney"
+                        disabled="true"
+                />
+                <van-field
+                        label-width="150px"
+                        class="ipt myDisableIpt"
+                        label="智享服务费率"
+                        placeholder="请输入智享服务费率"
+                        input-align="right"
+                        border="false"
+                        :maxlength="3"
+                        v-model="platRatePr"
+                        disabled="true"
+                />
+                <van-field
+                        label-width="150px"
+                        class="ipt myDisableIpt"
+                        label="花呗分期手续费率"
+                        placeholder="请输入花呗分期手续费率"
+                        input-align="right"
+                        border="false"
+                        :maxlength="3"
+                        v-model="zfbRatePr"
+                        disabled="true"
+                />
+
+            </div>
+            <div style="height: 10px; background: #f5f5f5;"></div>
+            <div class="title" style="border-radius:6px;">
+                <span class="line" :style="{background:$store.state.defaultBgColor}"></span>
+                用户信息
+            </div>
+            <div class="form-content">
+                <van-field
+                        class="ipt"
+                        label="用户姓名"
+                        placeholder="请输入用户姓名"
+                        input-align="right"
+                        border="false"
+                        :maxlength="10"
+                        v-model="userName"
+                />
+                <van-field
+                        class="ipt"
+                        type="tel"
+                        label="用户手机号"
+                        placeholder="请输入用户手机号"
+                        input-align="right"
+                        border="false"
+                        :maxlength="11"
+                        v-model="userMblNo"
+                />
+            </div>
+        </group>
+
+        <van-popup v-model="showPicker" position="bottom" :style="{ height: '30%'}">
+            <van-picker
+                    title="选择期数"
+                    show-toolbar
+                    item-height="30"
+                    :columns="termList"
+                    value-key="name"
+                    @cancel="showPicker = false"
+                    @confirm="selectTerms"
+            />
+        </van-popup>
+        <van-popup
+                v-model="showTwo"
+                @close="aferClose"
+                style="width:280px;height:150px;"
+        >
+            <van-icon name="cross" size="20px" style="position: absolute;right:10px;top:10px;color:#cccccc" @click="closeTwo" color="#CCCCCC"/>
+            <img src="../../../../static/img/img.png" style="width:60px;height:67px;margin-left: 110px;margin-top: 30px;">
+            <p style="font-size:14px;font-family:PingFang SC;font-weight:500;color:rgba(102,102,102,1);margin-top:10px;text-align:center">因{{this.showQi}}期业务调整,暂停{{this.showQi}}期办单通道。</p>
+        </van-popup>
+        <div class="btn-box">
+            <van-button round :color="$store.state.backColor" class="btn2" :class="sysPlat == 2 ? 'active' : ''" @click="goodInstallmentOrder">生成二维码</van-button>
+            <van-button round :color="$store.state.backColor" class="btn2" @click="WeChatSanCode" v-if="sysPlat != 2 && $route.query.zfbVersion != 5">扫描付款码</van-button>
+        </div>
+        <Vdialog @cancel="cancel" :show="showDia"></Vdialog>
+    </div>
+</template>
+
+<script>
+    import QRCode from 'qrcode';
+    import FConfirmSimple from '@/components/old/FConfirmSimple.vue';
+    import Vdialog from "@/components/common/v-dialog.vue";
+
+    export default {
+        name: 'hb-credit-installment',
+        components: {
+            FConfirmSimple,Vdialog
+        },
+        data() {
+            return {
+                zfbRate:'',//花呗分期手续费率
+                platRate:'',//智享服务费率
+                showTwo:false,
+                showQi:'',
+                showDia:false,
+                monthMoney: '', //月还款总额
+                contractGoodsBrand: '', //商品品牌
+                contractGoodsName: '', //商品名称
+                contractUserMblNo: '', //用户手机号
+                contractUserName: '', //用户名称
+                // hb
+                capitalAmt: '', //分期本金
+                goodsBrand: '', //商品品牌
+                goodsName: '', //商品名称
+                orderNo: '', //未知参数
+                term: null, //分期期数
+                userMblNo: '', //用户手机号
+                userName: '', //用户名称
+                trial: {}, // 利率相关信息
+                orderId: '', //订单id
+                payQrCodeUrl: '', // 二维码
+                termList: [], //分期期数列表
+                showConfirm: false,
+                value: "", //期数选择值
+                showPicker: false, //期数选择弹出层控制
+                backUrl:'',//红茄跳转链接
+                sysPlat: null,
+                isGoBack:'',//用于重新扫码后判断值
+            };
+        },
+        computed:{
+            zfbRatePr(){
+                if(this.zfbRate || this.zfbRate==0){
+                    return this.zfbRate + '%'
+                }else{
+                    return ''
+                }
+
+            },
+            platRatePr(){
+                if(this.platRate || this.platRate==0){
+                    return this.platRate + '%'
+                }else{
+                    return ''
+                }
+
+            }
+        },
+        watch: {
+            capitalAmt(newV) {
+                if (+newV > 0 && Number(this.term) > 0) {
+                    this.selectTerms(this.term);
+                }
+            }
+        },
+        created() {
+            if(sessionStorage.hb_session_info&&this.$route.query.isCreateOrderPush){
+                this.isGoBack = 1
+                let hb_session_info = JSON.parse(sessionStorage.hb_session_info)
+                this.value = hb_session_info.term,
+                    this.capitalAmt=hb_session_info.capitalAmt,
+                    this.term=hb_session_info.term,
+                    this.goodsName=hb_session_info.goodsName,
+                    this.userName=hb_session_info.userName,
+                    this.userMblNo=hb_session_info.userMblNo
+            }
+            //初始化
+            let sysPlat = localStorage.sib_mer_sysPlat
+            if (sysPlat === 'undefined' || sysPlat === '1') {
+                sysPlat = 1
+            }
+            if (sysPlat === '2') {
+                sysPlat = 2
+            }
+            this.sysPlat = sysPlat
+            this.$api.hbOrderInit({
+                prodId:this.$route.query.prodId*1,
+                zfbVersion:this.$route.query.zfbVersion
+            }).then(res => {
+                this.termList = [];
+                var arr = res.body.terms;
+                arr.forEach((ele, i) => {
+                    ele.name = ele.name + '期'
+                });
+                this.termList = arr
+
+            }, err => err);
+            //获取微信配置
+            this.getWeChatConfig()
+        },
+        methods: {
+            cancel(val){
+                this.showDia = val
+            },
+            showPickerModel(){
+                this.isGoBack = 2
+                this.showPicker = true
+            },
+            // 调用微信摄像头,扫一扫
+            WeChatSanCode(){
+                let sysPlat = localStorage.sib_mer_sysPlat
+                if (sysPlat === 'undefined' || sysPlat === '1') {
+                    sysPlat = 1
+                }
+                if (sysPlat === '2') {
+                    sysPlat = 2
+                }
+                let _this = this
+                let v = this.$tool;
+                if (v.checkValEmpty(this.capitalAmt)) {
+                    v.toast('请输入商品金额');
+                    return false;
+                }
+                if (!Number(this.capitalAmt)) {
+                    v.toast('请输入正确的商品金额');
+                    return false;
+                }
+                // 临时调整价格
+                if (
+                    Number(this.capitalAmt) < 0 ||
+                    Number(this.capitalAmt) > 50000
+                ) {
+                    v.toast('商品金额必须在100-50000元之间');
+                    return false;
+                }
+                let res = /^[A-Za-z0-9\u4e00-\u9fa5]+$/;
+                if (v.checkValEmpty(this.goodsName)) {
+                    v.toast('请输入商品名称');
+                    return false;
+                }
+                if (!res.test(this.goodsName)) {
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品名称');
+                    return false;
+                }
+                if (v.checkValEmpty(this.term)) {
+                    v.toast('请输入分期期数');
+                    return false;
+                }
+                if (v.checkValEmpty(this.userName)) {
+                    v.toast('请输入用户姓名');
+                    return false;
+                }
+                if (v.checkValEmpty(this.userMblNo)) {
+                    v.toast('请输入用户手机号');
+                    return false;
+                }
+                if (!v.checkPhone(this.userMblNo)) {
+                    v.toast('请输入正确的用户手机号');
+                    return false;
+                }
+                //判断是不是微信
+                if (sysPlat == 1) {
+                    this.checkIsReady().then(()=>{
+                        wx.scanQRCode({
+                            needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
+                            scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
+                            success: function (res) {
+                                // 当needResult 为 1 时,扫码返回的结果
+                                // 扫码成功后调用接口
+                                let obj = {
+                                    capitalAmt: _this.capitalAmt,
+                                    // goodsBrand: this.goodsBrand,
+                                    goodsName: _this.goodsName,
+                                    orderNo: _this.orderNo,
+                                    term: _this.term,
+                                    userMblNo: _this.userMblNo,
+                                    userName: _this.userName,
+                                    zfbVersion: _this.$route.query.zfbVersion,
+                                    payType: 2 ,//反扫
+                                    authCode: res.resultStr,
+                                    sysPlat: sysPlat
+                                };
+                                _this.$api.hbOrderCreate(obj).then(res=>{
+                                    _this.orderId = res.body.orderId;
+                                    _this.$router.push({
+                                        path:'/pay-result',
+                                        query:{
+                                            orderId: _this.orderId,
+                                            mode: 'hb'
+                                        }
+                                    })
+                                })
+                            }
+                        });
+                    })
+                }
+                //判断是不是支付宝
+                if (sysPlat == 2) {
+                    my.postMessage({'sendToMiniProgram': '0'})
+                    my.onMessage = function(e) {
+                        console.log(e);
+                        let obj = {
+                            capitalAmt: _this.capitalAmt,
+                            // goodsBrand: this.goodsBrand,
+                            goodsName: _this.goodsName,
+                            orderNo: _this.orderNo,
+                            term: _this.term,
+                            userMblNo: _this.userMblNo,
+                            userName: _this.userName,
+                            zfbVersion: _this.$route.query.zfbVersion,
+                            payType: 2 ,//反扫
+                            authCode: e,
+                            sysPlat: sysPlat
+                        };
+                        _this.$api.hbOrderCreate(obj).then(res=>{
+                            _this.orderId = res.body.orderId;
+                            _this.$router.push({
+                                path:'/pay-result',
+                                query:{
+                                    orderId: _this.orderId,
+                                    mode: 'hb'
+                                }
+                            })
+                        })
+                    }
+                }
+            },
+            // 异步准备微信环境
+            checkIsReady() {
+                return new Promise((resolve, reject) => {
+                    wx.ready(() => resolve());
+                    wx.error(err => reject(console.log(res + "wx.error")));
+                });
+            },
+            // 获取微信配置
+            getWeChatConfig(){
+                let url = location.href.split('#')[0]
+                this.$api.getTokenInfo({
+                    url: url
+                }).then(res=>{
+                    // 获取微信配置
+                    wx.config({
+                        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印
+                        appId: res.body.appId, // 必填,公众号的唯一标识
+                        timestamp: res.body.timestamp, // 必填,生成签名的时间戳
+                        nonceStr: res.body.nonceStr, // 必填,生成签名的随机串
+                        signature: res.body.signature,// 必填,签名
+                        jsApiList: ['checkJsApi','scanQRCode'], // 必填,需要使用的JS接口列表
+                        openTagList: [] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app']
+                    });
+                })
+            },
+            closeTwo(){
+                this.showTwo=false
+                this.showPicker = false
+            },
+            //顶部tabbar返回按钮
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+            selectTerms(val) {
+                console.log(val)
+                if (!this.capitalAmt) {
+                    this.$tool.toast('请输入商品金额');
+                    return;
+                }
+                if(val.serverStatus==0){
+                    this.showTwo = true
+                    this.showQi = val.code
+                    return
+                }
+                if(this.isGoBack!=1){
+                    //console.log(val.slice(0,-1))
+                    this.value = val.code;
+                    //let valNum = val.slice(0,-1)
+                    this.term = val.code;
+                }
+
+
+                this.$api.calcMonthMoney({
+                    capitalAmt: this.capitalAmt,
+                    term: this.value
+                }).then(res => {
+                    console.log(res.body)
+                    this.zfbRate = res.body.zfbRate
+                    this.platRate = res.body.platRate
+                    this.trial.totalAmount = res.body.totalAmount;
+                    this.trial.repayPerMonth = res.body.repayPerMonth;
+                    this.trial.feeRate = res.body.feeRate + '%';
+                    this.monthMoney = res.body.repayPerMonth
+                })
+                this.showPicker = false;
+            },
+            handleHide() {
+                this.showConfirm = false;
+            },
+            // 生成二维码
+            createdQRCode() {
+                this.showConfirm = false;
+                let queryObj = {
+                    orderId: this.orderId,
+                    totalAmount: this.trial.totalAmount,
+                    term: this.term,
+                    typeId: this.$route.query.typeId,
+                    zfbRate: this.zfbRate,
+                    platRate: this.platRate,
+                    capitalAmt: this.capitalAmt,
+                    backUrl: this.backUrl,
+                }
+                if (this.$route.query.typeId) {
+                    queryObj.typeId = this.$route.query.typeId;
+                }
+                this.$router.push({
+                    path: "/hb-getHBQRCode",
+                    query: queryObj
+                })
+            },
+            // 商品分期生成订单
+            goodInstallmentOrder() {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.capitalAmt)) {
+                    v.toast('请输入商品金额');
+                    return false;
+                }
+                if (!Number(this.capitalAmt)) {
+                    v.toast('请输入正确的商品金额');
+                    return false;
+                }
+                // 临时调整价格
+                if (
+                    Number(this.capitalAmt) < 100 ||
+                    Number(this.capitalAmt) > 50000
+                ) {
+                    v.toast('商品金额必须在100-50000元之间');
+                    return false;
+                }
+                let res = /^[A-Za-z0-9\u4e00-\u9fa5]+$/;
+                if (v.checkValEmpty(this.goodsName)) {
+                    v.toast('请输入商品名称');
+                    return false;
+                }
+                if (!res.test(this.goodsName)) {
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品名称');
+                    return false;
+                }
+                if (v.checkValEmpty(this.term)) {
+                    v.toast('请输入分期期数');
+                    return false;
+                }
+                if (v.checkValEmpty(this.userName)) {
+                    v.toast('请输入用户姓名');
+                    return false;
+                }
+                if (v.checkValEmpty(this.userMblNo)) {
+                    v.toast('请输入用户手机号');
+                    return false;
+                }
+                if (!v.checkPhone(this.userMblNo)) {
+                    v.toast('请输入正确的用户手机号');
+                    return false;
+                }
+                // 用来整体存储缓存数据
+                let hb_session_info = {
+                    capitalAmt:this.capitalAmt,
+                    term:this.term,
+                    goodsName:this.goodsName,
+                    userName:this.userName,
+                    userMblNo:this.userMblNo
+                }
+                sessionStorage.hb_session_info = JSON.stringify(hb_session_info)
+
+                let obj = {
+                    capitalAmt: this.capitalAmt,
+                    // goodsBrand: this.goodsBrand,
+                    goodsName: this.goodsName,
+                    orderNo: this.orderNo,
+                    term: this.term,
+                    userMblNo: this.userMblNo,
+                    userName: this.userName,
+                    zfbVersion: this.$route.query.zfbVersion,
+                    payType:1, //正扫
+                    sysPlat: this.sysPlat
+                };
+                this.$api.hbOrderCreate(obj).then(res => {
+                    let body = res.body;
+                    this.orderId = body.orderId;
+                    this.payQrCodeUrl = body.payQrCodeUrl;
+                    this.trial.totalAmount = body.totalAmount;
+                    this.trial.repayPerMonth = body.repayPerMonth;
+                    this.trial.feeRate = body.feeRate;
+                    this.showConfirm = true;
+                    this.zfbRate = res.body.zfbRate
+                    this.platRate = res.body.platRate
+
+                    this.backUrl = res.body.backUrl
+                    sessionStorage.hjBackUrl = res.body.backUrl
+                    //this.capitalAmt = res.body.capitalAmt
+
+                    if (body.payQrCodeUrl) {
+                        window.sessionStorage.setItem("hbpayQrCodeUrl", body.payQrCodeUrl);
+                        this.createdQRCode();
+                    }
+                }, err => {
+                    if(err.errorCode===30006007){
+                        this.showDia = true
+                    }
+                });
+            },
+        },
+    };
+
+</script>
+<style lang='less' scoped >
+    // /deep/.myDisableIpt{
+    //     color: #999999;
+    // }
+    /deep/.van-field__control:disabled {
+        color:  #666;
+        -webkit-text-fill-color:  #666;
+        background-color: transparent;
+        opacity: 1;
+    }
+
+    .ipt,
+    .fenqi {
+        & {
+            border-bottom: 1px solid rgba(238,238,238,1);
+            color: #333;
+            font-size: 16px;
+            height: 50px;
+        }
+    }
+    .mer{
+        width: 100%;
+        height: 150px;
+        background: linear-gradient(-45deg,rgba(104,98,133,1),rgba(76,69,113,1));
+        overflow: hidden;
+        &-head{
+            width: 96%;
+            margin: 28px 2% 0 2%;
+            height: 72px;
+            background:rgba(255,255,255,0.1);
+            // background: (0,0,0, 0.1);
+            border-radius: 36px;
+            .flex();
+            &-item{
+                width: 33%;
+                color: #fff;
+                text-align: center;
+                :first-child{
+                    margin-bottom: 11px;
+                    font-size: 20px;
+                    font-weight: bold;
+                }
+                :last-child{
+                    font-size: 12px;
+                }
+            }
+            &-line{
+                width: 1px;
+                height: 20px;
+                background: #fff;
+            }
+        }
+    }
+    .group-content{
+        transform: translateY(-25px);
+        width: 96%;
+        margin: 0 2%;
+    }
+    /deep/.weui-cells{
+        border-radius: 6px;
+        font-size: 16px;
+        input{
+            font-size: 14px;
+        }
+    }
+    .hb-order-confirm {
+        .trial-list {
+            padding-left: 20px;
+        }
+
+        .f-button-component .f-button {
+            margin-top: 12px;
+        }
+    }
+
+    .hb-credit-installment {
+        background-color: #F5F5F7;
+        // padding-top: 54px;
+        min-height: 100%;
+        .title {
+            padding: 14px 0px 14px 12px;
+            font-size: 16px;
+            font-weight: bold;
+            color: #333;
+            border-bottom: 1px solid rgba(238,238,238,1);
+            .line {
+                display: inline-block;
+                width: 3px;
+                height: 16px;
+                // margin-right: 8px;
+                background:rgba(137,110,219,1);
+                border-radius:0px 6px 0px 6px;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .qrCode-box {
+            padding-top: 0;
+            .flexLayout(center, center, row);
+
+            .qrCode {
+                width: 200px;
+                height: 200px;
+                box-sizing: border-box;
+                background-color: #fff;
+                border: 5px solid @color-border-theme;
+                padding: 5px;
+
+                img {
+                    width: 100%;
+                    height: 100%;
+                    vertical-align: middle;
+                    display: block;
+                }
+            }
+        }
+    }
+    .btn-box{
+        margin-top: 40px;
+        margin-bottom: 22px;
+        display: flex;
+        justify-content: space-around;
+        align-items: center;
+        .btn2{
+            width: 40%;
+            height: 44px;
+            background:rgba(137,110,219,1);
+            color: white;
+        }
+        .active {
+            width: 80%;
+        }
+    }
+
+</style>
diff --git a/src/views/old/store/hb-merchant-installment.vue b/src/views/old/store/hb-merchant-installment.vue
new file mode 100644
index 0000000..3012297
--- /dev/null
+++ b/src/views/old/store/hb-merchant-installment.vue
@@ -0,0 +1,439 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-09-24 18:22:58
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-27 15:10:45
+ * @Description:
+ -->
+<template>
+  <div class="hb-merchant-installment">
+    <van-nav-bar title="办理分期" left-arrow @click-left="onClickLeft" />
+    <div class="money-box">
+      <div class="item-box">
+        <p class="tit">商家到账金额</p>
+        <p v-if="this.capitalAmt == ''" class="money">0.00</p>
+        <p v-else class="money">{{this.capitalAmt}}</p>
+      </div>
+      <div class="item-box">
+        <p class="tit">客户总还款金额</p>
+        <p v-if="this.totalAmount == ''" class="money">0.00</p>
+        <p v-else class="money">{{this.totalAmount}}</p>
+      </div>
+      <div class="item-box">
+        <p class="tit">客户月还款金额</p>
+        <p v-if="this.monthMoney == ''" class="money">0.00</p>
+        <p v-else class="money">{{this.monthMoney}}</p>
+      </div>
+    </div>
+    <van-field
+      class="ipt"
+      v-model="howMouch"
+      type="number"
+      label="商品金额"
+      placeholder="请输入"
+      input-align="right"
+      border="true"
+      @input="changeMoney"
+      :maxlength="5"
+      required
+    />
+    <van-field
+      class="fenqi"
+      readonly
+      clickable
+      label="分期期数"
+      :value="value"
+      placeholder="请选择"
+      @click="showPicker = true"
+      input-align="right"
+      border="true"
+      required
+    />
+
+    <van-popup v-model="showPicker" position="bottom" :style="{ height: '30%' }">
+      <van-picker
+        title="选择期数"
+        show-toolbar
+        item-height="30"
+        :columns="columns"
+        @cancel="showPicker = false"
+        @confirm="onConfirm"
+      />
+    </van-popup>
+    <van-field
+      class="ipt"
+      label="商品名称"
+      placeholder="请输入"
+      input-align="right"
+      border="true"
+      :maxlength="20"
+      v-model="contractGoodsName"
+      required
+    />
+    <van-field
+      class="ipt"
+      label="商品品牌"
+      placeholder="请输入"
+      input-align="right"
+      border="true"
+      :maxlength="10"
+      v-model="contractGoodsBrand"
+    />
+    <van-field
+      class="ipt"
+      label="用户姓名"
+      placeholder="请输入"
+      input-align="right"
+      border="true"
+      :maxlength="10"
+      v-model="contractUserName"
+      required
+    />
+    <van-field
+      class="ipt"
+      type="tel"
+      label="用户手机号"
+      placeholder="请输入"
+      input-align="right"
+      border="true"
+      :maxlength="11"
+      v-model="contractUserMblNo"
+      required
+    />
+    <van-button
+      round
+      type="info"
+      class="btn"
+      block="true"
+      color="linear-gradient(to right, #4bb0ff, #6149f6)"
+      @click="goodInstallmentOrder"
+    >创建订单</van-button>
+    <!--点击创建订单展示 弹窗 -->
+    <FConfirmSimple
+      v-model="showConfirm"
+      ref="FConfirmQRCode"
+      @on-hide="handleHide"
+      iconClass="scene_Staging-dingdan"
+      class="hb-order-confirm"
+      :showIcon="true"
+    >
+      <div class="trial-list">
+        <div>还款总额:{{trial.totalAmount}}元</div>
+        <div>每月还款额:{{trial.repayPerMonth}}元</div>
+        <div>费率:{{trial.feeRate}}%</div>
+      </div>
+      <f-button @on-click="createdQRCode">生成二维码</f-button>
+    </FConfirmSimple>
+  </div>
+</template>
+<script>
+import QRCode from "qrcode";
+import FConfirmSimple from "@/components/old/FConfirmSimple.vue";
+import axios from "axios";
+import Vue from "vue";
+import { NavBar } from "vant";
+import { Grid, GridItem } from "vant";
+import { Field } from "vant";
+import { DropdownMenu, DropdownItem } from "vant";
+import { Popup } from "vant";
+import { Picker } from "vant";
+import { Toast } from "vant";
+import { async } from "q";
+
+Vue.use(Toast);
+Vue.use(Picker);
+Vue.use(Popup);
+Vue.use(DropdownMenu).use(DropdownItem);
+Vue.use(Field);
+Vue.use(Grid).use(GridItem);
+Vue.use(NavBar);
+export default {
+  components: {
+    FConfirmSimple
+  },
+  data() {
+    return {
+      showConfirm: false,
+      capitalAmt: "0.00", //商家到账金额
+      monthMoney: "0.00", //客户月还款总额
+      contractGoodsBrand: "", //商品品牌
+      contractGoodsName: "", //商品名称
+      contractUserMblNo: "", //用户手机号
+      contractUserName: "", //用户名称
+      totalAmount: "0.00",
+      orderNo: "", //未知参数
+      term: null, //分期期数
+      userMblNo: "", //用户手机号
+      userName: "", //用户名称
+      trial: {}, // 利率相关信息
+      orderId: "", //订单id
+      typeId: "",
+      payQrCodeUrl: "", // 二维码
+      termList: [], //分期期数列表
+      showConfirm: false,
+      howMouch: "", //商品金额
+      value: "", //期数选择值
+      showPicker: false, //期数选择弹出层控制
+      columns: [] //分期期数列表
+    };
+  },
+  created() {
+    this.$api.shtxOrderInit().then(
+      res => {
+        console.log(res);
+        var arr = res.body.terms;
+        arr.forEach((ele, i) => {
+          this.columns.push(`${ele.code}期`);
+        });
+        console.log(this.columns);
+      },
+      err => err
+    );
+  },
+  methods: {
+    handleHide() {
+      this.showConfirm = false;
+    },
+    //返回上一级按钮
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    //弹出层显示
+    showPopup() {
+      this.show = true;
+    },
+    // 弹出层期数选项控制
+    onConfirm(value) {
+      this.value = value;
+      //console.log(value.slice(0, -1));
+      this.showPicker = false;
+      this.term = value.slice(0, -1)
+      //得到月还款额
+      this.$api
+        .getMonthMoney({
+          totalAmount: this.howMouch,
+          term: value.slice(0, -1)
+        })
+        .then(res => {
+          console.log(res);
+          this.capitalAmt = res.body.capitalAmt;
+          this.monthMoney = res.body.repayPerMonth;
+          this.totalAmount = res.body.totalAmount;
+        });
+    },
+    changeMoney(){
+      if(this.howMouch != this.totalAmount && this.term!= null && this.howMouch !=''){
+        //得到月还款额
+      this.$api
+        .getMonthMoney({
+          totalAmount: this.howMouch,
+          term: this.value.slice(0, -1)
+        })
+        .then(res => {
+          this.capitalAmt = res.body.capitalAmt;
+          this.monthMoney = res.body.repayPerMonth;
+          this.totalAmount = res.body.totalAmount;
+        });
+      } else if(this.howMouch == ''){
+          this.capitalAmt = 0.00;
+          this.monthMoney = 0.00
+          this.totalAmount = 0.00
+      }
+    },
+    //订单生成
+    goodInstallmentOrder() {
+      this.totalAmount = this.howMouch
+      if(this.totalAmount != ''){
+        this.$api
+        .getMonthMoney({
+          totalAmount: this.howMouch,
+          term: this.value.slice(0, -1)
+        })
+        .then(res => {
+          console.log(res);
+          this.capitalAmt = res.body.capitalAmt;
+          this.monthMoney = res.body.repayPerMonth;
+          this.totalAmount = res.body.totalAmount;
+        });
+      }
+      let v = this.$tool;
+      if (v.checkValEmpty(this.totalAmount)) {
+        v.toast("请输入商品金额");
+        return ;
+      }
+      // if (!Number(this.totalAmount)) {
+      //   v.toast("请输入正确的结算金额");
+      //   return false;
+      // }
+      //临时调整价格
+      if (Number(this.totalAmount) <= 0 ) {
+        v.toast("商品金额不能为0");
+        return false;
+      }
+      let res = /^[A-Za-z0-9\u4e00-\u9fa5]+$/;
+      if (v.checkValEmpty(this.contractGoodsName)) {
+        v.toast("请输入商品名称");
+        return ;
+      }
+      if (!res.test(this.contractGoodsName)) {
+        v.toast("请输入文字/字母/数字且不包含特殊字符的商品名称");
+        return ;
+      }
+      if (v.checkValEmpty(this.term)) {
+        v.toast("请输入分期期数");
+        return ;
+      }
+        if (v.checkValEmpty(this.contractUserName)) {
+            v.toast('请输入用户姓名');
+            return false;
+        }
+        if (v.checkValEmpty(this.contractUserMblNo)) {
+            v.toast('请输入用户手机号');
+            return false;
+        }
+        if (!v.checkPhone(this.contractUserMblNo)) {
+            v.toast('请输入正确的用户手机号');
+            return false;
+        }
+      let queryObj = {
+        goodsBrand: this.contractGoodsBrand, //商品品牌
+        goodsName: this.contractGoodsName, //商品名称
+        prodId: 30000010, //产品id
+        term: this.value.slice(0, -1), //分期期数
+        totalAmount: this.totalAmount, //商品总价
+        userMblNo: this.contractUserMblNo, //用户电话号
+        userName: this.contractUserName // 用户名称
+      };
+      this.$api.shtxOrderCreate(queryObj).then(res => {
+        console.log(res);
+        this.orderId = res.body.orderId;
+        this.payQrCodeUrl = res.body.payQrCodeUrl;
+        this.trial.totalAmount = res.body.totalAmount;
+        this.trial.repayPerMonth = res.body.repayPerMonth;
+        this.trial.feeRate = res.body.feeRate;
+        this.showConfirm = true;
+      });
+    },
+    //生成二维码
+    createdQRCode() {
+      this.showConfirm = false;
+      var queryObj = {
+        term: this.value.slice(0, -1), //分期期数
+        payQrCodeUrl: this.payQrCodeUrl, //二维码
+        totalAmount: this.totalAmount //还款总额,本金
+      };
+      if (this.$route.query.typeId) {
+        queryObj.typeId = this.$route.query.typeId;
+      }
+      this.$router.push({
+        path: "/shtx-getShtxQRCode",
+        query: {
+          orderId: this.orderId,
+          ...queryObj
+        }
+      });
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.hb-merchant-installment {
+  & {
+    background-color: #e0e1e6;
+    width: 100%;
+    height: 100vh;
+  }
+  .money-box {
+    & {
+      width: 100%;
+      height: 13vh;
+      background-color: #e0e1e6;
+      display: flex;
+      justify-content: space-between;
+      text-align: center;
+    }
+    .item-box {
+      & {
+        display: flex;
+        flex-wrap: wrap;
+        align-content: center;
+      }
+      .tit {
+        font-size: 14px;
+        font-weight: 700;
+        display: inline-block;
+        vertical-align: middle;
+        width: 100%;
+      }
+      .money {
+        margin: 15px 0 0 0;
+        width: 100%;
+      }
+    }
+  }
+  .ipt,
+  .fenqi {
+    & {
+      border-bottom: 1px solid #e0e1e6;
+    }
+  }
+  .btn {
+    width: 80vw;
+    height: 6vh;
+    line-height: 6vh;
+    margin: auto;
+    position: fixed;
+    bottom: 3vh;
+    right: 10vw;
+  }
+  .hb-order-confirm {
+    .trial-list {
+      padding-left: 20px;
+    }
+
+    .f-button-component .f-button {
+      margin-top: 12px;
+    }
+  }
+
+  .hb-credit-installment {
+    background-color: #f1f1f1;
+    padding-top: 54px;
+    .title {
+      padding: 14px 12px;
+      font-size: 15px;
+      color: #333;
+      .line {
+        display: inline-block;
+        width: 2px;
+        height: 16px;
+        margin-right: 8px;
+        background: @color-text-three;
+        vertical-align: middle;
+        margin-top: -1px;
+      }
+    }
+
+    .qrCode-box {
+      padding-top: 0;
+      .flexLayout(center, center, row);
+
+      .qrCode {
+        width: 200px;
+        height: 200px;
+        box-sizing: border-box;
+        background-color: #fff;
+        border: 5px solid @color-border-theme;
+        padding: 5px;
+
+        img {
+          width: 100%;
+          height: 100%;
+          vertical-align: middle;
+          display: block;
+        }
+      }
+    }
+  }
+}
+</style>
diff --git a/src/views/old/store/hbcp.vue b/src/views/old/store/hbcp.vue
new file mode 100644
index 0000000..73be15c
--- /dev/null
+++ b/src/views/old/store/hbcp.vue
@@ -0,0 +1,147 @@
+<template>
+  <div class="hbcp-page">
+    <v-navbar title="花呗分期"></v-navbar>
+    <div class="list-box">
+      <p v-if="list.length > 0">请选择产品</p>
+      <div class="cp-box">
+        <div style="margin-top:16px" v-for="(item,i) in list" :key="i" >
+            <div class="box" @click="go(item)">
+              <img :src="item.icon" alt />
+              <p>{{item.typeName}}</p>
+            </div>
+        </div>
+      </div>
+      <p style="margin-top:40px" v-if="list2.length > 0">请选择消费场景</p>
+      <div class="cp-box-2">
+        <div style="margin-top:16px" v-for="(item,i) in list2" :key="i" >
+            <div class="box" @click="go(item)">
+              <img :src="item.icon" alt />
+              <p>{{item.typeName}}</p>
+            </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      list: [],
+      list2:[],
+    };
+  },
+  created() {
+    JSON.parse(localStorage.hbcp).forEach(e=>{
+      if(e.lineType==1){
+        this.list.push(e)
+      }else{
+        this.list2.push(e)
+      }
+    })
+    
+  },
+  methods: {
+    go(item) {
+      console.log(item)
+      // return
+      var path = "",
+        text = "";
+      item.typeId = Number(item.typeId);
+      if (item.isHbProd == 1) {
+        path = "/channel-selection";
+        switch (item.typeId) {
+          case 200002:
+            text = "用户付息通道";
+            break;
+          case 200009:
+            text = "商品消费通道";
+            break;
+          case 200010:
+            text = "商户贴息通道";
+            break;
+          case 200011:
+            text = "运营商消费通道";
+            break;
+        }
+      } else {
+        // switch (item.typeId) {
+        //   case 200011:
+        //     path = "/xyg/list";
+        //     break;
+        // }
+      }
+      this.$router.push({
+        path,
+        query: {
+          typeId: item.typeId,
+          prodId: item.prodId,
+          text: text
+        }
+      });
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.hbcp-page {
+  & {
+    min-height: 100vh;
+    background: #f5f5f7;
+  }
+  .list-box {
+    width: 94%;
+    min-height: 335px;
+    background: rgba(255, 255, 255, 1);
+    border-radius: 3px;
+    margin-top: 10px;
+    margin-left: 3%;
+    box-sizing: border-box;
+    padding: 24px 13px;
+    & > p {
+      font-size: 16px;
+      font-family: PingFang SC;
+      font-weight: 500;
+      color: rgba(51, 51, 51, 1);
+    }
+    & > .cp-box {
+      display: flex;
+      justify-content: space-around;
+      flex-wrap: wrap;
+      .box {
+        text-align: center;
+        width: 115px;
+        height: 90px;
+        background: rgba(255, 255, 255, 1);
+        box-shadow: 0px 0px 15px 0px rgba(66, 61, 93, 0.08);
+        border-radius: 8px;
+        padding-top: 15px;
+        box-sizing: border-box;
+      }
+      img {
+        width: 46px;
+        height: 46px;
+      }
+    }
+    & > .cp-box-2 {
+      display: flex;
+      justify-content: space-around;
+       flex-wrap: wrap;
+      .box {
+        text-align: center;
+        width: 115px;
+        height: 90px;
+        background: rgba(255, 255, 255, 1);
+        box-shadow: 0px 0px 15px 0px rgba(66, 61, 93, 0.08);
+        border-radius: 8px;
+        padding-top: 15px;
+        box-sizing: border-box;
+      }
+      img {
+        width: 46px;
+        height: 46px;
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/hbcp_sh.vue b/src/views/old/store/hbcp_sh.vue
new file mode 100644
index 0000000..d93a504
--- /dev/null
+++ b/src/views/old/store/hbcp_sh.vue
@@ -0,0 +1,180 @@
+<template>
+  <div class="hbcp-page">
+   <van-nav-bar title="选择通道" left-text="返回" left-arrow @click-left="onClickLeft" fixed style="line-height: 43px;">
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+    <div class="list-box">
+      <p v-if="list.length > 0">请选择产品</p>
+      <div class="cp-box">
+        <div style="margin-top:16px" v-for="(item,i) in list" :key="i" >
+            <div class="box" @click="go(item)">
+              <img :src="item.icon" alt />
+              <p>{{item.typeName}}</p>
+              <!-- <p v-if="item.openStatus==2" class="open">已开通</p>
+              <p v-if="item.openStatus==1" class="notOpen">开通中</p>
+              <p v-if="item.openStatus==3" style="color:#ED4014;margin-top: 8px;">未通过</p>
+              <p v-if="item.openStatus==0" style="color:#B3B3B3;margin-top: 8px;">未开通</p> -->
+            </div>
+        </div>
+      </div>
+      <p style="margin-top:40px" v-if="list2.length > 0">请选择消费场景</p>
+      <div class="cp-box-2">
+        <div style="margin-top:16px" v-for="(item,i) in list2" :key="i">
+            <div class="box" @click="go(item)">
+              <img :src="item.icon" alt />
+              <p>{{item.typeName}}</p>
+              <!-- <p v-if="item.openStatus==2 && item.typeId == 200011" class="open">已开通</p>
+              <p v-if="item.openStatus==1 && item.typeId == 200011" class="notOpen">开通中</p>
+              <p v-if="item.openStatus==3 && item.typeId == 200011" style="color:#ED4014;margin-top: 8px;">未通过</p>
+              <p v-if="item.openStatus==0 && item.typeId == 200011" style="color:#B3B3B3;margin-top: 8px;">未开通</p> -->
+            </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      list: [],
+      list2:[],
+    };
+  },
+  created() {
+    let list = JSON.parse(localStorage.getItem('hbcp_sh'))
+    list.forEach(e=>{
+      if(e.lineType==1){
+        this.list.push(e)
+      }else{
+        if(e.prodId != 30000008){
+          this.list2.push(e)
+        }
+      }
+    })
+    
+  },
+  methods: {
+    onClickLeft(){
+       this.$router.push('/main/productManagement');
+    },
+    go(item) {
+      console.log(item)
+      // return
+      var path = "",
+        text = "";
+      item.typeId = Number(item.typeId);
+      if (item.isHbProd == 1) {
+        path = "/channel-selection_sh";
+        switch (item.typeId) {
+          case 200002:
+            text = "用户付息通道";
+            break;
+          case 200009:
+            text = "商品消费通道";
+            break;
+          case 200010:
+            text = "商户贴息通道";
+            break;
+          case 200011:
+            text = "运营商消费通道";
+            break;
+        }
+      } else {
+        // switch (item.typeId) {
+        //   case 200011:
+        //     path = "/xyg/list";
+        //     break;
+        // }
+      }
+      this.$router.push({
+        path,
+        query: {
+          typeId: item.typeId,
+          prodId: item.prodId,
+          openStatus: item.openStatus
+        }
+      });
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.hbcp-page {
+  & {
+    min-height: 100vh;
+    padding-top: 56px;
+    background: #f5f5f7;
+  }
+  .list-box {
+    width: 94%;
+    min-height: 335px;
+    background: rgba(255, 255, 255, 1);
+    border-radius: 3px;
+    margin-top: 10px;
+    margin-left: 3%;
+    box-sizing: border-box;
+    padding: 24px 23px;
+    & > p {
+      font-size: 16px;
+      font-family: PingFang SC;
+      font-weight: 500;
+      color: rgba(51, 51, 51, 1);
+    }
+    & > .cp-box {
+      display: flex;
+      justify-content: space-between;
+      flex-wrap: wrap;
+      .box {
+        text-align: center;
+        width: 140px;
+        height: 100px;
+        background: rgba(255, 255, 255, 1);
+        box-shadow: 0px 0px 15px 0px rgba(66, 61, 93, 0.08);
+        border-radius: 8px;
+        padding-top: 15px;
+        box-sizing: border-box;
+        .open{
+          color:#19BE6B;
+          margin-top: 8px;
+        }
+        .notOpen{
+          color:#ED4014;
+          margin-top: 8px;
+        }
+      }
+      img {
+        width: 46px;
+        height: 46px;
+      }
+    }
+    & > .cp-box-2 {
+      display: flex;
+      justify-content: space-between;
+      flex-wrap: wrap;
+      .box {
+        text-align: center;
+        width: 140px;
+        height: 100px;
+        background: rgba(255, 255, 255, 1);
+        box-shadow: 0px 0px 15px 0px rgba(66, 61, 93, 0.08);
+        border-radius: 8px;
+        padding-top: 15px;
+        box-sizing: border-box;
+        .open{
+          color:#19BE6B;
+          margin-top: 8px;
+        }
+        .notOpen{
+          color:#ED4014;
+          margin-top: 8px;
+        }
+      }
+      img {
+        width: 46px;
+        height: 46px;
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/hbhy-installment.vue b/src/views/old/store/hbhy-installment.vue
new file mode 100644
index 0000000..a59e764
--- /dev/null
+++ b/src/views/old/store/hbhy-installment.vue
@@ -0,0 +1,448 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-10-18 16:12:03
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 16:50:51
+ * @Description: 
+ -->
+<template>
+  <div class="hbhy-box">
+    <!-- <van-nav-bar title="办理套餐" left-arrow @click-left="onClickLeft" fixed /> -->
+    <!-- <x-header title="办理套餐" :left-options="{backText:''}"></x-header> -->
+    <v-navbar title="办理套餐" fixed>
+            
+        </v-navbar>
+    <div class="mine-box">
+      <div class="left-box" ref="boxLeft" >
+        <!-- <div class="top-tit">
+            <p>常用套餐</p>
+        </div>-->
+        <div
+          class="list-tit"
+          v-for="(item,i) in myList"
+          :key="i"
+          @click="check(item,i)"
+          :class="item.baColor"
+        >
+          <div class="text-box" :class="item.checkColor" :style="{'border-left':`4px solid ${$store.state.backColor}`}">
+            <p v-if="i==0" style="line-height:30px;" :style="{color:$store.state.backColor}">常用套餐</p>
+            <p v-if="i!=0" :style="{color:$store.state.backColor}">{{item.categoryName}}</p>
+          </div>
+        </div>
+      </div>
+      <div class="right-box" ref="boxRight">
+        <div class="right-top" v-if="myContent[0].tit==2">
+          <p>{{this.myContent[0].categoryName}}</p>
+        </div>
+        <div class="right-top" v-if="myContent[0].tit==1">
+          <p>常用套餐</p>
+        </div>
+        <div v-for="(v,i) in myContent" :key="i" style="margin-top:20px;width:94%;margin-left:3%" v-if="v.tit==1">
+          <p>{{v.categoryName}}</p>
+          <div
+            class="right-text-box"
+            v-for="(ele,index) in v.contracts"
+            :key="index"
+            @click="goNext(ele,index)"
+          >
+            <div class="yuan" style="width:5%"></div>
+            <div class="taocan">
+              <p>
+                <span class="one">{{ele.packagePrices}}</span>
+                <span class="two">元套餐</span>
+              </p>
+            </div>
+            <div class="bus">
+              <p style="font-size:14px">{{ele.capitalAmt}}</p>
+              <p style="margin-top:5px;color:#999999">商户到账</p>
+            </div>
+            <div class="huankuan" style="margin-right:5px;margin-left:5px;">
+              <p style="font-size:14px">{{ele.monthlyPayments}}</p>
+              <p style="margin-top:5px;color:#999999">每月还款</p>
+            </div>
+            <div class="zong">
+              <p style="font-size:14px">{{ele.insAmt}}</p>
+              <p style="margin-top:5px;color:#999999">总还款额</p>
+            </div>
+            <div class="yuan" style="width:5%"></div>
+          </div>
+        </div>
+
+        <div v-for="(ele,i) in myContent" :key="i" style="margin-top:20px;width:94%;margin-left:3%" v-if="ele.tit==2">
+          <div
+            class="right-text-box"
+            :key="index"
+            @click="goNext(ele,index)"
+          >
+            <div class="yuan" style="width:5%"></div>
+            <div class="taocan">
+              <p>
+                <span class="one">{{ele.packagePrices}}</span>
+                <span class="two">元套餐</span>
+              </p>
+            </div>
+            <div class="bus">
+              <p style="font-size:14px">{{ele.capitalAmt}}</p>
+              <p style="margin-top:5px;color:#999999">商户到账</p>
+            </div>
+            <div class="huankuan" style="margin-right:5px;margin-left:5px;">
+              <p style="font-size:14px">{{ele.monthlyPayments}}</p>
+              <p style="margin-top:5px;color:#999999">每月还款</p>
+            </div>
+            <div class="zong">
+              <p style="font-size:14px">{{ele.insAmt}}</p>
+              <p style="margin-top:5px;color:#999999">总还款额</p>
+            </div>
+            <div class="yuan" style="width:5%"></div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import Vue from "vue";
+import { NavBar } from "vant";
+
+Vue.use(NavBar);
+export default {
+  data() {
+    return {
+      myList: [
+        {
+          tit: "常用套餐",
+          checkColor: { checkColor: true },
+          baColor: { baColor: true }
+        }
+      ], //左侧导航显示内容
+      myContent: [
+        {
+          taocan: "98",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "98",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "98",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "98",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "98",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "98",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "98",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "98",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "98",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "198",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "298",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        },
+        {
+          taocan: "398",
+          bus: "785",
+          huankuan: "64",
+          zong: "1264"
+        }
+      ], //右侧显示套餐内容
+      content: [], //暂存数据
+      typeId:'',
+    };
+  },
+  mounted() {
+    //console.log(this.$route.query)
+    //获取设备高度减去头部高度,防止高度溢出
+    this.$refs.boxLeft.style.height = `${document.body.clientHeight - 46}px`;
+    this.$refs.boxRight.style.height = `${document.body.clientHeight - 46}px`;
+    this.typeId = this.$route.query.typeId
+    this.$api
+      .categoryList({
+        typeId: this.$route.query.typeId
+      })
+      .then(res => {
+        console.log(res);
+        res.body.categoryList.forEach((ele, i) => {
+          ele.checkColor = { checkColor: false };
+          ele.baColor = { baColor: false };
+        });
+        //console.log(res.body.categoryList)
+        if(res.body.commonUse.length > 0){
+          res.body.commonUse.forEach((ele, i) => {
+          ele.checkColor = { checkColor: true };
+          ele.baColor = { baColor: true };
+          ele.tit = 1;
+          });
+          this.myList = [res.body.commonUse[0], ...res.body.categoryList];
+        }
+        if(res.body.commonUse.length <= 0){
+         var arr = res.body.commonUse.push({
+            checkColor : { checkColor: true },
+            baColor : { baColor: true },
+            tit : 1
+          })
+          console.log('arr',arr)
+          this.myList = [...res.body.commonUse, ...res.body.categoryList];
+        }
+        
+        this.myContent = [...res.body.commonUse];
+        this.content = res.body.commonUse;
+        console.log(this.myContent)
+      });
+  },
+  computed: {
+    getContent(){
+      
+    },
+  },
+  updated() {
+    console.log("修改了");
+    window.onresize;
+  },
+  methods: {
+    //路由回退
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    //左侧点击选中样式改变
+    check(item, i) {
+      console.log('item',item)
+      this.myList.forEach((ele, i) => {
+        ele.checkColor.checkColor = false;
+        ele.baColor.baColor = false;
+      });
+      item.checkColor.checkColor = true;
+      item.baColor.baColor = true;
+
+      if (i > 0) {
+        //console.log(1);
+        item.contracts.forEach((ele)=>{
+          ele.tit = 2
+        })
+        this.myContent = item.contracts;
+      } else {
+        //console.log(2);
+        item.tit = 1
+        this.myContent = this.content;
+      }
+      console.log("content", this.myContent);
+    },
+    //跳转办单页面
+    goNext(ele, index) {
+      console.log(ele)
+      this.$router.push({
+                path: "/hbhy-detail",
+                query: {
+                    packageTariff:ele.packagePrices,
+                    totalRepayment:ele.insAmt,
+                    monthlyRepayment:ele.monthlyPayments,
+                    trim:ele.term,
+                    merchantArrival:ele.capitalAmt,
+                    contId:ele.contId,
+                    contName:ele.contName,
+                    typeId:this.$route.query.typeId,
+                    zfbVersion:this.$route.query.zfbVersion,
+                    zfbRate:ele.zfbRate,
+                    platRate:ele.platRate
+                }
+            });
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.hbhy-box {
+  & {
+    height: 100vh;
+    background-color: #f5f5f5;
+  }
+  .mine-box {
+    display: flex;
+    width: 100%;
+    .left-box::-webkit-scrollbar {
+      display: none;
+    }
+    .left-box {
+      margin-top: 46px;
+      overflow-y: scroll;
+      width: 23%;
+      background-color: white;
+      .top-tit,
+      .list-tit {
+        border-bottom: 1px rgb(226, 226, 226) solid;
+        height: 60px;
+        box-sizing: border-box;
+      }
+      .top-tit {
+        padding: 25px 12px 24px 12px;
+        p {
+          color: #666666;
+          width: 100%;
+          text-align: center;
+        }
+      }
+      .baColor {
+        background-color: #f5f5f7;
+      }
+      .list-tit {
+        padding-top: 14px;
+        .checkColor {
+          border-left: 4px solid #896edb;
+          color: #896edb !important;
+        }
+
+        .text-box {
+          height: 30px;
+          color: #666666;
+          font-weight: Medium;
+          p {
+            display: block;
+            height: 30px;
+            width: 70%;
+            margin: auto auto;
+            word-break: break-all;
+            text-overflow: ellipsis;
+            display: -webkit-box;
+            -webkit-box-orient: vertical;
+            -webkit-line-clamp: 2;
+            overflow: hidden;
+          }
+        }
+      }
+    }
+    .right-box::-webkit-scrollbar {
+      display: none;
+    }
+    .right-box {
+      margin-top: 46px;
+      box-sizing: border-box;
+      padding-top: 15px;
+      width: 77%;
+      overflow-y: scroll;
+      background-color: #f5f5f7;
+      .right-top {
+        background-color: rgba(237, 237, 247, 1);
+        border: 1px dashed rgba(174, 172, 187, 1);
+        border-radius: 4px;
+        text-align: center;
+        width: 94%;
+        height: 36px;
+        margin: auto;
+        p {
+          font-size: 14px;
+          color: #423d5d;
+          line-height: 36px;
+        }
+      }
+      .right-text-box::after {
+        width: 16px;
+        height: 16px;
+        content: "";
+        right: -12px;
+        top: 24px;
+        position: absolute;
+        display: block;
+        background: #f5f5f5;
+        border-radius: 20px;
+        border-left: 1px solid #c3b5ec;
+      }
+      .right-text-box::before {
+        width: 16px;
+        height: 16px;
+        content: "";
+        left: -12px;
+        top: 24px;
+        position: absolute;
+        display: block;
+        background: #f5f5f5;
+        border-radius: 20px;
+        border-right: 1px solid #c3b5ec;
+      }
+      .right-text-box {
+        & {
+          display: flex;
+          width: 100%;
+          height: 62px;
+          margin: auto;
+          margin-top: 10px;
+          margin-bottom: 10px;
+          background: rgba(255, 255, 255, 1);
+          border: 1px solid rgba(195, 181, 236, 1);
+          border-radius: 5px;
+          position: relative;
+        }
+        .taocan {
+          width: 38%;
+          .one {
+            font-size: 14px;
+            color: #ff6666;
+            font-weight: bold;
+          }
+          .two {
+            font-size: 14px; 
+          }
+          p {
+            display: inline-block;
+            height: 20px;
+            width: 92%;
+            margin-top: 24px;
+            border-right: 1px solid black;
+            box-sizing: border-box;
+          }
+        }
+        .bus,
+        .huankuan,
+        .zong {
+          width: 25%;
+          font-size: 12px;
+          text-align: center;
+          margin-top: 16px;
+        }
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/hbjl/creat-hbjl.vue b/src/views/old/store/hbjl/creat-hbjl.vue
new file mode 100644
index 0000000..1157d3a
--- /dev/null
+++ b/src/views/old/store/hbjl/creat-hbjl.vue
@@ -0,0 +1,191 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-06-08 10:25:54
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-06-13 19:04:28
+ * @Description: 花呗间联办单
+--> 
+<template>
+  <div class="creat-hbjl-page">
+    <v-navbar title="创建订单"></v-navbar>
+    <div class="order-info-box">
+      <van-field center clearable label="还款期数">
+        <template #button>
+          <div>
+              <button
+              v-for="(item,index) in btnList"
+              :key="index"
+              style="margin:0 5px"
+              :class="isAct==index?'act':'noAct'"
+              @click="getTerm(item,index)"
+            >{{item.name}}期</button>
+          </div>
+        </template>
+      </van-field>
+      <van-field v-model="form.userAmt" label="到账金额" placeholder="请输入到账金额" @input="getTrial(1)" input-align="right" />
+      <van-field v-model="form.insAmt" label="还款金额" placeholder="请输入还款金额" @input="getTrial(2)" input-align="right" />
+    </div>
+    <div class="btn-box">
+      <button class="btn" @click="goNext">生成二维码</button>
+      <p>
+        <span>推广码:{{inviteCode}}</span>
+        <button class="small-btn" @click="copy">复制</button>
+      </p>
+    </div>
+    <van-dialog v-model="show" title="提示" confirmButtonColor="#423D5D" @confirm="onConfirm" show-cancel-button>
+      <div class="tip-box">
+        <p>由于相关政策及对应计算</p>
+        <p>还款金额发送变动</p>
+        <p>当前还款金额为:{{form.insAmt}}元</p>
+      </div>
+    </van-dialog>
+  </div>
+</template>
+<script>
+import {_copyToClipboard} from '@/utils/index';
+import Vue from "vue";
+import { Field } from "vant";
+import { Dialog } from "vant";
+
+Vue.use(Dialog);
+Vue.use(Field);
+export default {
+  data() {
+    return {
+      form: {
+        insAmt: "",
+        userAmt: "",
+        term: ''
+      },
+      show:false,
+      isAct: 0,
+      btnList: [],
+      inviteCode:'',
+      mgrId:''
+    };
+  },
+  created() {
+    this.$api.hbjlOrderInit().then(res => {
+      this.btnList = res.body.terms;
+      this.inviteCode = res.body.inviteCode
+      this.mgrId = res.body.mgrId
+      this.form.term = res.body.terms[0].code
+    });
+  },
+  methods: {
+    getTrial(i) {
+      if(i==1){
+        this.$api.hbjlOrderTrial({
+          insAmt:'',
+          userAmt:this.form.userAmt,
+          term:this.form.term
+        }).then(res=>{
+          this.form.insAmt = res.body.insAmt
+          this.form.userAmt = res.body.userAmt
+        })
+      }
+      if(i==2){
+        this.$api.hbjlOrderTrial({
+          insAmt:this.form.insAmt,
+          userAmt:'',
+          term:this.form.term
+        }).then(res=>{
+          this.form.insAmt = res.body.insAmt
+          this.form.userAmt = res.body.userAmt
+        })
+      }
+    },
+    // 期数选择
+    getTerm(item, index) {
+      this.isAct = index;
+      this.form.term = item.code;
+    },
+    goNext() {
+      this.show = true
+      
+    },
+    onConfirm(){
+      this.$router.push({
+        path:'/hbjl-qr',
+        query:{
+          ...this.form,
+          inviteCode:this.inviteCode,
+          mgrId:this.mgrId,
+        }
+      })
+    },
+    copy() {
+      _copyToClipboard(this.inviteCode);
+      this.$notify_success('复制成功');
+    },
+  }
+};
+</script>
+<style lang="less" scoped>
+.creat-hbjl-page {
+  & {
+    min-height: 100vh;
+    background: #efefef;
+  }
+  .order-info-box {
+    & {
+      background: #fff;
+      border-radius: 3px;
+      width: 359px;
+      min-height: 150px;
+      margin: 10px auto;
+    }
+    button {
+      width: 50px;
+      height: 28px;
+      outline: none;
+      border-radius: 3px;
+    }
+    .act {
+      background: rgba(244, 241, 255, 1);
+      border: 1px solid rgba(137, 110, 219, 1);
+      color: #896edb;
+    }
+    .noAct {
+      background: rgba(255, 255, 255, 1);
+      border: 1px solid rgba(230, 230, 230, 1);
+    }
+  }
+  .btn-box {
+    & {
+      text-align: center;
+      margin-top: 60px;
+    }
+    .btn {
+      width: 320px;
+      height: 44px;
+      background: rgba(137, 110, 219, 1);
+      border-radius: 22px;
+      border: 0;
+      outline: none;
+      color: #fff;
+    }
+    p{
+      margin-top: 24px;
+      .small-btn{
+        width:60px;
+        height:20px;
+        background:rgba(244,241,255,1);
+        border:1px solid rgba(137,110,219,1);
+        border-radius:3px;
+        font-size: 12px;
+        color: #896EDB;
+      }
+    }
+  }
+  .tip-box{
+        font-size:14px;
+        font-family:PingFang SC;
+        font-weight:500;
+        color:rgba(102,102,102,1);
+        line-height:20px;
+        text-align: center;
+        padding: 24px 0;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/hbjl/hbjl-qr.vue b/src/views/old/store/hbjl/hbjl-qr.vue
new file mode 100644
index 0000000..ecfd5f3
--- /dev/null
+++ b/src/views/old/store/hbjl/hbjl-qr.vue
@@ -0,0 +1,117 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-06-08 11:13:16
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-06-13 19:15:35
+ * @Description: 花呗间联二维码页面
+--> 
+<template>
+  <div class="hbjl-qr-vue">
+    <v-navbar title="生成订单"></v-navbar>
+    <div class="top-back-box">
+      <div class="back-line-box"></div>
+      <div class="qr-box">
+        <div class="code-box">
+          <img :src="qrCode" alt />
+        </div>
+        <div class="tip-box">
+          <p>二维码失效时间为半小时</p>
+          <p>请尽快提供给用户完成扫码</p>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import QRCode from 'qrcode';
+export default {
+  data() {
+    return {
+      qrCode:'',
+      params:{}
+    }
+  },
+  created(){
+    //创建二维码
+    this.params = { ...this.$route.query };
+    let url = JSON.stringify(this.params)
+    //let url = `{'insAmt':'${this.params.insAmt}','userAmt':'${this.params.userAmt}','term':'${this.params.term}','inviteCode':'${this.params.inviteCode}','mgrId':'${this.params.mgrId}'}`;
+    QRCode.toDataURL(
+        url,
+        {
+            margin: 1,
+            width: 400
+        },
+        (err, url) => {
+            if (err) console.error(err);
+            this.qrCode = url;
+        }
+    );
+  },
+};
+</script>
+<style lang="less" scoped>
+.hbjl-qr-vue {
+  & {
+    min-height: 100vh;
+    background: #efefef;
+    position: relative;
+  }
+  .top-back-box {
+    width: 100%;
+    height: 117px;
+    background: url("../../../../assets/img/bg_top.png");
+    background-size: cover;
+    display: flex;
+    justify-content: center;
+    flex-wrap: wrap;
+    // align-items: center;
+    .back-line-box {
+      width: 335px;
+      height: 14px;
+      background: rgba(56, 50, 87, 1);
+      border-radius: 7px;
+      margin-top: 49px;
+    }
+    .qr-box {
+      & {
+        width: 300px;
+        height: 300px;
+        background: rgba(255, 255, 255, 1);
+        box-shadow: 0px 12px 15px 0px rgba(63, 58, 80, 0.05);
+        border-radius: 0px 0px 5px 5px;
+        margin-top: -7px;
+        display: flex;
+        flex-wrap: wrap;
+        justify-content: center;
+      }
+      .code-box {
+        & {
+          width: 200px;
+          height: 200px;
+          background: url("../../../../assets/img/bg_code.png");
+          margin-top: 36px;
+          box-sizing: border-box;
+          padding: 8px;
+        }
+        img {
+          width: 184px;
+          height: 184px;
+        }
+      }
+      .tip-box {
+        & {
+          text-align: center;
+          width: 100%;
+        }
+        p {
+          font-size: 12px;
+          font-family: PingFang SC;
+          font-weight: 500;
+          color: rgba(153, 153, 153, 1);
+        }
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/lthyj.vue b/src/views/old/store/lthyj.vue
new file mode 100644
index 0000000..bc9c972
--- /dev/null
+++ b/src/views/old/store/lthyj.vue
@@ -0,0 +1,188 @@
+
+<template>
+    <div class="lthyj">
+        <v-navbar title="办理合约"></v-navbar>
+        <div class="info">
+            <div class="hyInfo">
+                <div class="title">合约信息</div>
+                <van-field readonly clickable
+                label="合约套餐"
+                :value="selectConInfo.contName"
+                placeholder="选择合约套餐"
+                @click="showPicker = true"
+                />
+                <van-cell title="月缴话费" :value="selectConInfo.monthConsAmt | dealMoney" />
+                <van-cell title="期数" :value="selectConInfo.term | dealTerm" />
+                <van-cell title="电子券金额" :value="selectConInfo.eleBondAmt | dealMoney" />
+                <van-cell title="直降金额" :value="selectConInfo.strDownAmt | dealMoney" />
+            </div>
+            <div class="spInfo">
+                <div class="title">商品信息</div>
+                <van-cell-group>
+                    <van-field v-model.trim="goodsInfo.goodsBrand" label="品牌" placeholder="请输入品牌" />
+                    <van-field v-model.trim="goodsInfo.goodsModel" label="规格" placeholder="请输入规格" />
+                    <van-field v-model.trim="goodsInfo.goodsPrice" label="价格" placeholder="请输入价格" />
+                </van-cell-group>
+            </div>
+        </div>
+        <van-button round type="info" color="#896EDB"  class="btn" @click='createdQRCode'>生成二维码</van-button>
+        <van-popup v-model="showPicker" round position="bottom">
+            <van-picker
+                show-toolbar
+                :columns="columns"
+                @cancel="showPicker = false"
+                @confirm="onConfirm"
+            />
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import QRCode from 'qrcode';
+    export default {
+        name: 'lthyj',
+        data() {
+            return {
+                columns: [],
+                tcInfoList: [],
+                showPicker: false,
+                // 合约信息
+                selectConInfo: {
+                    contId: '', 
+                    eleBondAmt: '', 
+                    monthConsAmt: '', 
+                    strDownAmt: '',
+                    contName: '',
+                    term: ''
+                },
+                // 商品信息
+                goodsInfo: {
+                    goodsBrand: '', //商品品牌
+                    goodsModel: '', // 商品型号
+                    goodsPrice: '' // 价格
+                },
+            };
+        },
+        filters: {
+            dealMoney(val) {
+                return val ? `${val}元` : ''
+            },
+            dealTerm(val) {
+                return val ? `${val}期` : ''
+            }
+        },
+        created() {
+            this.init()
+        },
+        methods: {
+            init() {
+                this.$api.cuccOrderInit().then(res => {
+                    this.tcInfoList = res.body
+                    this.columns = res.body.map(it => {
+                        return it.contName
+                    })
+                });
+            },
+            onConfirm(picker, value) {
+                console.log(picker, value)
+                this.selectConInfo.contId = this.tcInfoList[value].contId
+                this.selectConInfo.eleBondAmt = this.tcInfoList[value].eleBondAmt
+                this.selectConInfo.monthConsAmt = this.tcInfoList[value].monthConsAmt
+                this.selectConInfo.strDownAmt = this.tcInfoList[value].strDownAmt
+                this.selectConInfo.contName = this.tcInfoList[value].contName
+                this.selectConInfo.term = this.tcInfoList[value].term
+                
+                this.showPicker = false;
+            },
+            // 生成二维码
+            createdQRCode() {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.selectConInfo.contName)) {
+                    v.toast('请选择合约套餐');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsBrand)) {
+                    v.toast('请输入商品品牌');
+                    return false;
+                }
+                if (!/^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(this.goodsInfo.goodsBrand)) {
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品品牌');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsModel)) {
+                    v.toast('请输入商品规格');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsPrice)) {
+                    v.toast('请输入商品价格');
+                    return false;
+                }
+                if (!/^[1-9]\d{0,4}/.test(this.goodsInfo.goodsPrice)) {
+                    v.toast('请输入商品正确的价格');
+                    return false;
+                }
+                let queryObj = {
+                    ...this.goodsInfo,
+                    contId: this.selectConInfo.contId, // 合约id
+                };
+                this.$api.cuccOrderPreCreate(queryObj).then(res => {
+                    console.log(res)
+                    this.$router.push({
+                        path: "/lthyj-qrcode",
+                        query: {
+                            str: res.body
+                        }
+                    })
+                });
+
+            },
+        }
+    };
+
+</script>
+
+
+<style lang='less' scoped>
+    .lthyj {
+        width: 100%;
+        height: 100%;
+        background: #F3F4F5;
+        .van-cell {
+            height: 50px;
+        }
+        .info {
+            padding: 0 16px;
+            .hyInfo, .spInfo {
+                width: 100%;
+                background: #fff;
+                border-radius: 6px;
+                // padding: 0 12px;
+                margin-top: 10px;
+                box-sizing: border-box;
+                .title {
+                    padding-left: 12px;
+                    height: 50px;
+                    line-height: 50px;
+                    font-size: 16px;
+                    font-family: PingFang SC;
+                    font-weight: bold;
+                    color: #423D5D;
+                    border-bottom: 1px solid #E9E9E9;
+                }
+            }
+        }
+        .btn {
+            margin: 40px 0 20px 10% ;
+            width: 80%;
+        }
+    }
+
+</style>
+<style  scoped>
+    .spInfo >>> .van-field__control {
+        text-align: right;
+    }
+    .hyInfo >>> .van-field__control {
+        text-align: right;
+    }
+</style>
diff --git a/src/views/old/store/lthyjQrcode.vue b/src/views/old/store/lthyjQrcode.vue
new file mode 100644
index 0000000..51ac7f8
--- /dev/null
+++ b/src/views/old/store/lthyjQrcode.vue
@@ -0,0 +1,105 @@
+
+<template>
+    <div class="lthyjQrcode">
+        <v-navbar title="扫码办理"></v-navbar>
+        <div class="bj">
+            <div class="qrcodeBox">
+                <div class="qrcode">
+                    <img :src="qrCodeBase64Url" alt="qrcode" v-if="qrCodeBase64Url">
+                    <img :src="dataUrl" alt="" v-else >
+                </div>
+                <p class="notice">二维码失效时间为半小时请尽快提供给用户进行扫码</p>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+    import html2canvas from 'html2canvas';
+    import QRCode from 'qrcode';
+
+    export default {
+        name: 'contract-qrcode',
+        data() {
+            return {
+                dataUrl: '',
+                qrCodeBase64Url: '',
+                params: ''
+            }
+        },
+        methods: {
+            clickLeft() {
+                this.$router.go(-1)
+            }
+        },
+        created(){
+            QRCode.toDataURL(
+                JSON.stringify(this.$route.query.str), {
+                    margin: 0,
+                    width: 400
+                },
+                (err, url) => {
+                    if (err) console.error(err);
+                    this.dataUrl = url;
+                    setTimeout(() => {
+                        html2canvas(document.getElementById('QRCode')).then(
+                            canvas => {
+                                this.qrCodeBase64Url = canvas.toDataURL(
+                                    'image/jpeg'
+                                );
+                            }
+                        );
+                    }, 100);
+                }
+            );
+        }
+    }
+
+</script>
+<style lang="less" scoped>
+    .lthyjQrcode {
+        width: 100%;
+        height: 100%;
+        background: #F3F4F5;
+        .bj {
+            width: 100%;
+            height: 150px;
+            background: linear-gradient(-45deg, #686285, #4C4571);
+            position: relative;
+            .qrcodeBox {
+                position: absolute;
+                top: 40px;
+                left: 5.5%;
+                width: 89%;          
+                height: 287px;
+                background: #FFFFFF;
+                border-radius: 3px;
+                display: flex;
+                flex-direction: column;
+                align-items: center;
+                .qrcode {
+                    width: 190px;
+                    height: 190px;    
+                    border: 1px solid #514B75;
+                    margin-top: 28px;
+                    display: flex;
+                    flex-direction: column;
+                    align-items: center;
+                    justify-content: center;
+                    img {
+                        width: 182px;
+                        height: 182px;
+                    }
+                }
+                .notice {
+                    font-size: 12px;
+                    font-family: PingFang SC;
+                    font-weight: 500;
+                    color: #333333;
+                    line-height: 18px;
+                    text-align: center;
+                    margin-top: 16px;
+                }
+            }
+        }
+    }
+</style>
diff --git a/src/views/old/store/mobile/mobileInstallment.vue b/src/views/old/store/mobile/mobileInstallment.vue
new file mode 100644
index 0000000..4d691f4
--- /dev/null
+++ b/src/views/old/store/mobile/mobileInstallment.vue
@@ -0,0 +1,279 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 14:24:40
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-05 11:22:31
+ * @Description: 
+ -->
+/*
+* @Author: c.y
+* @Date: 2019-1-14 16:02:10
+ * @Last Modified by: CL
+ * @Last Modified time: 2019-01-30 11:53:21
+* @文件说明: 手机分期创建订单
+*/
+<template>
+    <div class="mobile-installment h-100-g">
+        <x-header title="办理分期" :left-options="{backText:''}"></x-header>
+        <group>
+            <x-input title='客户手机号' v-model.trim="mobileInfo.userMblNo"
+                     type="tel"
+                     :max='11'
+                     placeholder="请输入" text-align='right'></x-input>
+            <x-input title='客户姓名' v-model.trim="mobileInfo.userName" placeholder='请输入' :max='6'
+                     text-align='right'></x-input>
+            <x-input title='身份证' v-model.trim="mobileInfo.idNo" placeholder='请输入' :max='18'
+                     text-align='right'></x-input>
+            <selector title='手机品牌' placeholder='请选择' @on-change='other' v-model="mobileInfo.mblBrand" :options='mobileBrandList'
+                      :value-map="['code','name']"
+                      direction='rtl'></selector>
+            <x-input v-if="others" title='品牌名称' v-model.trim="mobileInfo.mblBrand1" placeholder='请输入' :max='10' text-align='right'></x-input>
+
+            <selector title='分期期数' placeholder='请选择' v-model="mobileInfo.term" :options='termList'
+                      :value-map="['code','name']"
+                      direction='rtl'></selector>
+            <x-input title='手机型号' v-model.trim="mobileInfo.mblModel" placeholder='请输入' :max='15'
+                     text-align='right'></x-input>
+            <x-input title='IMEI' v-model.trim="mobileInfo.mblImei" placeholder='请输入' :max='20'
+                     text-align='right'></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <x-input title='手机价格(元)' @input.native='blurToCalc'
+                     v-model.trim.number="mobileInfo.mblAmt"
+                     placeholder='最高12000元' :max='5'
+                     text-align='right'></x-input>
+            <div class="vux-1px-t" v-if="mobileInfo.mblAmt">
+                <p><span>首付比例:</span>{{ firstRate }}%</p>
+                <p><span>门店收取首付:</span>{{ firstAmt }}元</p>
+                <p><span>客户分期金额:</span>{{insAmt }}元</p>
+                <p><span>每期还款金额:</span>{{ termAmt }}元</p>
+            </div>
+        </group>
+        <f-button fixed @on-click='handleCreateOrder'>提交订单</f-button>
+    </div>
+</template>
+
+<script>
+    import { Cell} from 'vux';
+    export default {
+        name: 'mobile-installment',
+        components: {
+            Cell
+        },
+        data() {
+            return {
+                mobileInfo: {
+                    mblBrand: '', // 手机牌子
+                    mblModel: '', // 型号
+                    userMblNo: '', // 客户手机号
+                    userName: '', // 客户姓名
+                    idNo: '', // 客户身份证号---暂时添加
+                    mblImei: '', // imei
+                    mblAmt: '', // 手机价格
+                    term:'',// 分期期数
+                    mblBrand1:''
+                },
+                firstRate: '-', // 首付比例
+                firstAmt: '-', // 首付
+                insAmt: '-', // 分期金额
+                termAmt: '-', // 每期还款金额
+                mobileBrandList: [], // 手机品牌列表
+                termList: [], // 分期期数
+                others:false
+            };
+        },
+        methods: {
+            other(val){
+                if(this.mobileInfo.mblBrand == '其它'){
+                    this.others = true
+                }else{
+                    this.others = false;
+                }
+            },
+             //失去焦点时计算金额
+            blurToCalc(ele) {
+                 let v = this.$tool;
+                 if (!/^[1-9]\d{0,4}$/.test(ele.target.value)) {
+                     this.firstRate = '';
+                     this.firstAmt = '';
+                     this.insAmt = '';
+                     this.termAmt = '';
+                     this.mobileInfo.mblAmt = '';
+                     v.toast('请输入正确的手机价格');
+                     return false;
+                 } else if (Number(ele.target.value) > 12000) {
+                     this.firstRate = '';
+                     this.firstAmt = '';
+                     this.insAmt = '';
+                     this.termAmt = '';
+                     this.mobileInfo.mblAmt = '';
+                     v.toast('请输入12000以下价格');
+                     return false;
+                 }
+                 if(ele.target.value){
+                     this.firstRate = '-'; // 首付比例
+                     this.firstAmt = '-'; // 首付
+                     this.insAmt = '-'; // 分期金额
+                     this.termAmt= '-'; // 每期还款金额
+                     this.$api.ljOrderTrial({mblAmt: ele.target.value}).then(
+                         res=>{
+                             this.firstRate = res.body.firstRate;
+                             this.firstAmt = this.$tool.formatMoney(res.body.firstAmt);
+                             this.insAmt = this.$tool.formatMoney(res.body.insAmt);
+                             this.termAmt = this.$tool.formatMoney(res.body.termAmt);
+                         }, err => {
+                             this.firstRate = '-'; // 首付比例
+                             this.firstAmt = '-'; // 首付
+                             this.insAmt = '-'; // 分期金额
+                             this.termAmt= '-'; // 每期还款金额
+                         }
+                     )
+                 }
+            },
+            // 生成订单
+            handleCreateOrder() {
+                let v = this.$tool;
+                let fieldList = [{
+                        field: 'userMblNo',
+                        msg: '客户手机号'
+                    },
+                    {
+                        field: 'userName',
+                        msg: '客户姓名'
+                    },
+                    {
+                        field: 'idNo',
+                        msg: '身份证'
+                    },
+                    {
+                        field: 'mblBrand',
+                        msg: '手机品牌'
+                    },
+                    {
+                        field: 'term',
+                        msg: '分期期数'
+                    },
+                    {
+                        field: 'mblModel',
+                        msg: '手机型号'
+                    },
+                    {
+                        field: 'mblImei',
+                        msg: '手机IMEI'
+                    },
+                    {
+                        field: 'mblAmt',
+                        msg: '手机价格'
+                    }];
+                for (let i of fieldList) {
+                    if (v.checkValEmpty(this.mobileInfo[i.field])) {
+                        v.toast(`请输入${i.msg}`);
+                        return false;
+                    }
+                }
+                // 添加身份证号的验证 客户年龄需要20-25岁
+                let reg = /^[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)$/;
+                if (!reg.test(this.mobileInfo.idNo)) {
+                    v.toast('请输入正确的身份证号');
+                    return false;
+                }
+                if(!this.checkAgeRange(this.mobileInfo.idNo)) {
+                    v.toast('客户年龄需在20-55周岁之间');
+                    return false;
+                }
+
+                if(this.mobileInfo.mblBrand=='其它'){
+                    if (v.checkValEmpty(this.mobileInfo.mblBrand1)) {
+                        v.toast(`请输入品牌名称`);
+                        return false;
+                    }
+                }
+                if (!v.checkPhone(this.mobileInfo.userMblNo)) {
+                    v.toast('请输入正确的用户手机号');
+                    return false;
+                }
+                if (!/^[1-9]\d{0,4}$/.test(this.mobileInfo.mblAmt)) {
+                    v.toast('请输入正确的手机价格');
+                    return false;
+                }
+                let obj = {...this.mobileInfo};
+                if(obj.mblBrand =='其它'){
+                    obj.mblBrand = obj.mblBrand1
+                }
+               this.$api.ljOrderCreate(obj).then(
+                   res => {
+                        obj.crt = res.body.creTime;
+                        obj.firstAmt = res.body.firstAmt;
+                        obj.surplusAmt = res.body.surplusAmt;
+                        this.$router.push({
+                            path: "/mobile-submit-result",
+                            query:{...obj}
+                        })
+                    },
+                    err => err
+                );
+            },
+            // 判断客户年龄是否在20-50周岁
+            checkAgeRange (idNumber) {
+                if (idNumber.length !== 18) {
+                    this.$tool.toast('请输入正确的身份证号');
+                    return false;
+                }
+                // 获取当前系统时间
+                const curDate = new Date();
+                const curYear = curDate.getFullYear();
+                const curMonth = curDate.getMonth() + 1;
+                const curDay = curDate.getDate();
+                // 获取客户出生年月
+                const cusYear = Number(idNumber.substring(6, 10));
+                const cusMonth = Number(idNumber.substring(10, 12));
+                const cusDay = Number(idNumber.substring(12, 14));
+                // 周岁=今年-出生年(已过生日)(未过生日还要-1),判断当前是否在20-55周岁之间
+                // 判断是否过生日, 先判断月,当前月小于用户生日月,那么就未过生日
+                if (curMonth < cusMonth) {
+                    return curYear - cusYear - 1 >= 20 && curYear - cusYear - 1 <= 55;
+                // 如果月份相同,那么需要判断日期
+                } else if (curMonth === cusMonth) {
+                    // 当前日期小于客户生日日期,还未过生日
+                    if (curDay < cusDay) {
+                        return curYear - cusYear - 1 >= 20 && curYear - cusYear - 1 <= 55;
+                    } else {
+                        //  当前日期大于等于生日日期,以过生日
+                        return curYear - cusYear >= 20 && curYear - cusYear <= 55;
+                    }
+                // 已过生日
+                } else {
+                    return curYear - cusYear >= 20 && curYear - cusYear <= 55;
+                }
+            }
+        },
+        created() {
+           this.$api.ljOrderCreateInit().then(res => {
+               this.mobileBrandList = res.body.mblBrandList;
+               this.termList = res.body.termList;
+               this.mobileInfo.term =res.body.termList[0].code
+           }, err => err);
+        },
+    };
+</script>
+<style lang='less'>
+    .mobile-installment {
+        padding-bottom: 46px;
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        .vux-1px-t {
+            padding-left: 15px;
+            padding-bottom: 16px;
+            color: #3a3a3a;
+            span {
+                color: #666666;
+            }
+            font-size: 12px;
+            line-height: 1.2;
+            p {
+                padding-top: 16px;
+            }
+        }
+    }
+</style>
diff --git a/src/views/old/store/mobile/submitResult.vue b/src/views/old/store/mobile/submitResult.vue
new file mode 100644
index 0000000..8e4b5e8
--- /dev/null
+++ b/src/views/old/store/mobile/submitResult.vue
@@ -0,0 +1,98 @@
+<!--
+ * @Date: 2019-08-30 14:24:41
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 11:04:01
+ * @Description: 
+ -->
+<template>
+    <div class="mobile-result-page h-100-g">
+        <x-header title="提交结果" :left-options="{backText:''}"></x-header>
+        <div class="status-icon">
+            <i class="iconfont scene_Staging-danxuan"></i>
+        </div>
+        <div class="result">提交成功</div>
+        <div class="tips">客户订单已生成,有效期2小时,请指导客户通过以下手机号登录APP补充资料进行审核</div>
+        <div class="detail">
+            <p><span>品牌:</span>{{info.mblBrand}}</p>
+            <p><span>型号:</span>{{info.mblModel}}</p>
+            <p><span>姓名:</span>{{info.userName}}</p>
+            <p><span>手机号码:</span>{{info.userMblNo}}</p>
+            <p><span>手机价格:</span>{{info.mblAmt}}元</p>
+            <p><span>分期金额:</span>{{info.surplusAmt}}元</p>
+            <p><span>分期期数:</span>{{info.term}}</p>
+            <p><span>订单时间:</span>{{$tool.date(info.crt,'YYYY-MM-DD HH:mm')}}</p>
+        </div>
+        <f-button type="normal" @on-click="handleBack">返回首页</f-button>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'add-account',
+        data() {
+            return {
+                info:{}
+            };
+        },
+        methods: {
+            // 处理返回首页
+            handleBack () {
+                this.$router.push({
+                    path:'/business-center'
+                })
+            },
+            // 根据orderId获取详情
+            init () {
+
+            }
+        },
+        computed:{
+            info(){
+                let obj ={
+                    ...this.$route.query
+                }
+                return obj;
+            }
+        }
+    };
+</script>
+
+<style lang="less">
+    .mobile-result-page {
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        .status-icon {
+            text-align: center;
+        }
+        .iconfont {
+            font-size: 64px;
+            color: #BFA073;
+        }
+        .result {
+            font-size: 16px;
+            color: #BFA073;
+            text-align: center;
+        }
+        .tips {
+            padding: 10px 25px 25px;
+            color: #999;
+            font-size: 12px;
+            line-height: 1.6;
+            text-align: center;
+        }
+        .detail {
+            margin: 0 25px;
+            padding: 30px 0 20px 25px;
+            font-size: 14px;
+            line-height: 1.6;
+            color: #3A3A3A;
+            span {
+                color: #A3A3A3;
+            }
+            p {
+                padding-bottom: 10px;
+            }
+            background: #fff;
+        }
+    }
+</style>
diff --git a/src/views/old/store/pay-result.vue b/src/views/old/store/pay-result.vue
new file mode 100644
index 0000000..ec8a86e
--- /dev/null
+++ b/src/views/old/store/pay-result.vue
@@ -0,0 +1,154 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-07-08 16:47:37
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-07-09 13:59:25
+ * @Description: 
+--> 
+<template>
+  <div class="pay-result-page">
+    <v-navbar title="交易结果"></v-navbar>
+    <div class="res-box">
+      <div class="img-box">
+        <img v-if="orderStatus==0" src="../../../../static/img/ing.png" alt />
+        <img v-if="orderStatus==1" src="../../../../static/img/cg.png" alt />
+        <img v-if="orderStatus==2" src="../../../../static/img/cs.png" alt />
+        <img v-if="orderStatus==3" src="../../../../static/img/cs.png" alt />
+        <p>{{text}}</p>
+      </div>
+    </div>
+    <div class="btn-box">
+      <button class="btn-1" @click="goHome">返回首页</button>
+      <button class="btn-2" v-if="orderStatus==0" @click="goDetail">查看订单详情</button>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      timer: "", //定时器
+      text: "支付中,请稍候",
+      orderStatus: 0
+    };
+  },
+  computed: {
+    orderId() {
+      return this.$route.query.orderId;
+    }
+  },
+  created() {
+    this.orderSts();
+  },
+  methods: {
+    //轮询查询订单状态
+    orderSts() {
+      this.timer = setInterval(() => {
+        this.$api.hbOrderFindOrderSts({ orderId: this.orderId }).then(
+          res => {
+            this.orderStatus = res.body.orderStatus;
+            if (res.body.orderStatus == 1) {
+              clearInterval(this.timer);
+              this.text = "支付成功";
+            } else if (res.body.orderStatus == 2) {
+              clearInterval(this.timer);
+              this.text = "支付超时";
+            } else if (res.body.orderStatus == 3) {
+              clearInterval(this.timer);
+              this.text = "支付失败";
+            }
+          },
+          err => {
+            err, clearInterval(this.timer);
+          }
+        );
+      }, 10000);
+    },
+    goHome(){
+        this.$router.push('/main/product')
+    },
+    goDetail(){
+        if(this.$route.query.mode == 'hb'){
+            this.$router.push({
+                path:'/product/hb-detail',
+                query:{
+                    id:this.$route.query.orderId,
+                    mode:this.$route.query.mode
+                }
+            })
+        }
+        if(this.$route.query.mode == 'shtx'){
+            this.$router.push({
+                path:'/product/shtx-detail',
+                query:{
+                    id:this.$route.query.orderId,
+                    mode:this.$route.query.mode
+                }
+            })
+        }
+        
+    }
+  },
+  beforeRouteLeave(to, from, next) {
+    if (this.timer) {
+      clearInterval(this.timer);
+    }
+    next();
+  }
+};
+</script>
+<style lang="less" scoped>
+.pay-result-page {
+  & {
+    min-height: 100vh;
+    background-color: #f5f5f7;
+  }
+  .res-box {
+    width: 96vw;
+    height: 190px;
+    background: rgba(255, 255, 255, 1);
+    border-radius: 3px;
+    margin-left: 2vw;
+    margin-top: 10px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    p {
+      font-size: 14px;
+      font-family: PingFang SC;
+      font-weight: 500;
+      color: rgba(51, 51, 51, 1);
+    }
+    .img-box {
+      text-align: center;
+      img {
+        width: 95px;
+        height: 95px;
+      }
+    }
+  }
+  .btn-box {
+    padding-top: 44px;
+    text-align: center;
+    .btn-1 {
+      width: 86vw;
+      height: 44px;
+      background: rgba(137, 110, 219, 1);
+      border-radius: 22px;
+      border: 0;
+      outline: none;
+      color: #fff;
+      margin-bottom: 12px;
+    }
+    .btn-2 {
+      width: 86vw;
+      height: 44px;
+      background: rgba(247, 245, 255, 1);
+      border: 1px solid rgba(137, 110, 219, 1);
+      border-radius: 22px;
+      outline: none;
+      color: #896edb;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/productManagement.vue b/src/views/old/store/productManagement.vue
new file mode 100644
index 0000000..cd3a919
--- /dev/null
+++ b/src/views/old/store/productManagement.vue
@@ -0,0 +1,296 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-30 18:04:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-29 10:17:39
+ * @Description:
+ -->
+<template>
+    <div class="productManagement-page">
+        <x-header title="产品管理" :left-options="{backText: '', preventGoBack: true}" @on-click-back="goBackPage">
+        </x-header>
+        <!--<x-header slot="header" title="产品管理" :left-options="{backText:'',preventGoBack:true}"-->
+            <!--@on-click-back="pageGoBack()"></x-header>-->
+        <div class="productManagement-header" v-if="productList.length">
+            <ul class="productManagement-list">
+                <li @click="handleJump(i)" v-for="(i,index) in productList" :key="index">
+                    <!-- <i class="iconfont usable" :class="i.icon"></i> -->
+                     <img class="item-logo" :src="i.icon" :alt="i.typeName">
+                    <p>{{i.typeName}}</p>
+                </li>
+            </ul>
+        </div>
+        <f-no-data v-else></f-no-data>
+    </div>
+</template>
+
+<script>
+    import { mapState } from 'vuex';
+    export default {
+        name: 'productManagement',
+        data() {
+            return {
+                productList: [],
+                statusType: '',
+                orgType:'',
+            };
+        },
+        created(){
+            this.init();
+        },
+        computed:{
+            ...mapState(['userinfo']),
+
+
+
+        },
+        methods: {
+            goBackPage() {
+                this.$router.push({
+                    path: '/main/mine'
+                });
+            },
+            handleJump(productItem) {
+                let {
+                    typeId,
+                    openStatus
+                } = productItem,
+                path = '',
+                title = '',
+                query = {
+                    typeId
+                };
+                if(typeId == '200014'){
+                    if(openStatus == 2){
+                        path = '/huabei/staging_hbjl'
+                    }
+                    query={
+                        typeId,
+                        orgType: this.orgType,
+                        orgId: this.userinfo.orgId
+                    }
+                }
+               if (typeId === '200005') {
+                    if (this.orgType === 5) {
+                    // 0-待开通,1-开通中,2-已开通,3-开通失败
+                        switch (openStatus) {
+                            case 0:
+                                path = '/heyd/mgrOpen';
+                                break;
+                            case 1:
+                            case 2:
+                            case 3:
+                                path = '/heyd/open-result';
+                                break;
+                            case 4:
+                                path = '/heyd/open-result';
+                                break;
+                            default:
+                                path = '/heyd/mgrOpen';
+                                break;
+                        }
+                        if(this.statusType == 4 && openStatus == 1 && this.mgrIsOpen == 0){
+                            path = '/heyd/mgrOpen';
+                        }
+
+                    }else{
+                        switch (openStatus) {
+                            case 0:
+                                path = '/heyd/storeOpen';
+                                break;
+                            case 1:
+                            case 2:
+                            case 3:
+                                path = '/heyd/open-result';
+                                break;
+                            case 4:
+                                path = '/heyd/open-result';
+                                break;
+                            default:
+                                path = '/heyd/storeOpen';
+                                break;
+                        }
+                    }
+                    query = {
+                        typeId,
+                        orgType: this.orgType,
+                        openStatus: openStatus,
+                        icon: productItem.icon,
+                    }
+                }else if(typeId === '200011') {
+                   if (this.orgType === 5) {
+                       // 0-待开通,1-开通中,2-已开通,3-开通失败
+                       switch (openStatus) {
+                           case 0:
+                               path = '/xyg/mgrOpen';
+                               break;
+                           case 1:
+                           case 2:
+                           case 3:
+                               path = '/xyg/open-result';
+                               break;
+                           case 4:
+                               path = '/xyg/open-result';
+                               break;
+                           default:
+                               path = '/xyg/mgrOpen';
+                               break;
+                       }
+                       if(this.statusType == 4 && openStatus == 1 && this.mgrIsOpen == 0){
+                           path = '/xyg/mgrOpen';
+                       }
+
+                   }else{
+                       switch (openStatus) {
+                           case 0:
+                               path = '/xyg/storeOpen';
+                               break;
+                           case 1:
+                           case 2:
+                           case 3:
+                               path = '/xyg/open-result';
+                               break;
+                           case 4:
+                               path = '/xyg/open-result';
+                               break;
+                           default:
+                               path = '/xyg/storeOpen';
+                               break;
+                       }
+                   }
+                   query = {
+                       typeId,
+                       orgType: this.orgType,
+                       openStatus: openStatus,
+                       icon: productItem.icon,
+                   }
+               }else if (typeId === '200017') {
+                    if (this.orgType === 5) {
+                        // 0-待开通,1-开通中,2-已开通,3-开通失败
+                        switch (openStatus) {
+                            case 0:
+                                path = '/gzzj/mgrOpen';
+                                break;
+                            case 1:
+                            case 2:
+                            case 3:
+                                path = '/gzzj/open-result';
+                                break;
+                            case 4:
+                                path = '/gzzj/open-result';
+                                break;
+                            default:
+                                path = '/gzzj/mgrOpen';
+                                break;
+                        }
+                        if(this.statusType == 4 && openStatus == 1 && this.mgrIsOpen == 0){
+                            path = '/gzzj/mgrOpen';
+                        }
+
+                    }else{
+                        switch (openStatus) {
+                            case 0:
+                                path = '/gzzj/storeOpen';
+                                break;
+                            case 1:
+                            case 2:
+                            case 3:
+                                path = '/gzzj/open-result';
+                                break;
+                            case 4:
+                                path = '/gzzj/open-result';
+                                break;
+                            default:
+                                path = '/gzzj/storeOpen';
+                                break;
+                        }
+                    }
+                    query = {
+                        typeId,
+                        orgType: this.orgType,
+                        openStatus: openStatus,
+                        icon: productItem.icon,
+                    }
+                }
+                let val='';
+                    if (this.statusType === 5) {
+                         val = '营业员'
+                    } else if (this.statusType === 3) {
+                        val = '商户'
+                    } else if (this.statusType === 4) {
+                        val = '门店'
+                    } else {
+                        val = this.productList[0].statusType;
+                    }
+                query.title = title;
+                query.statusType = val;
+                this.$router.push({
+                    path,
+                    query
+                });
+            },
+            //初始化
+            init() {
+                this.$api.storeProdList({
+                }).then(res => {
+                    // console.log(res.body)
+                    // this.prodTypeList=[]
+                    this.mgrIsOpen = res.body.mgrIsOpen;
+                    this.orgType = res.body.orgType;
+                    this.statusType = res.body.prodTypeList[0].statusType || '';
+                    this.productList = res.body.prodTypeList;
+                });
+            }
+        },
+    };
+
+</script>
+
+<style lang="less">
+    .item-logo{
+        display: block-line;
+        vertical-align: middle;
+        width: 45px;
+        height: 45px;
+        margin-left: auto;
+    }
+    .productManagement-page {
+        padding-top: 54px;
+
+        height: 100%;
+        padding-top: 44px;
+
+        .productManagement-header {
+            height: 100%;
+            background: @color-white;
+            margin-top: 15px;
+
+            .productManagement-list {
+                overflow: hidden;
+                height: 100%;
+
+                .iconfont {
+                    font-size: 36px;
+                    color: @color-text-placeholder;
+                }
+
+                .usable {
+                    color: @color-text-three  !important;
+                }
+
+                li {
+                    list-style: none;
+                    float: left;
+                    width: 33%;
+                    text-align: center;
+                    padding: 20px 0;
+
+                    p {
+                        font-size: @font-size-small;
+                    }
+                }
+            }
+        }
+    }
+
+</style>
diff --git a/src/views/old/store/shsk/payResult.vue b/src/views/old/store/shsk/payResult.vue
new file mode 100644
index 0000000..92ad313
--- /dev/null
+++ b/src/views/old/store/shsk/payResult.vue
@@ -0,0 +1,144 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-27 09:14:20
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-10 09:36:40
+ * @Description: 商户收款支付结果页面
+-->
+<template>
+  <div class="payResult-page">
+    <van-nav-bar
+      title="支付结果"
+      left-text="返回"
+      left-arrow
+      @click-left="onClickLeft"
+      style="line-height: 43px"
+    >
+      <i
+        class="iconfont iconzuojiantou"
+        slot="left"
+        style="font-size: 25px"
+      ></i>
+    </van-nav-bar>
+    <div class="result">
+      <img
+        src="../../../../assets/img/支付成功.png"
+        alt=""
+        v-show="status == 1"
+      />
+      <img
+        src="../../../../assets/img/支付中.png"
+        alt=""
+        v-show="status == 0"
+      />
+      <img src="../../../../assets/img/超时.png" alt="" v-show="status == 2" />
+      <p>{{ text }}</p>
+    </div>
+    <div class="btn-box" v-show="status != 0">
+      <button
+      class="getQrCode"
+      @click="goback"
+      :style="{ background: $store.state.backColor, color: '#fff' }"
+    >
+      返回
+    </button>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      timeId:'',
+      status: 0,
+      text: "用户支付中,请稍后",
+    };
+  },
+  created() {
+    if(this.$route.query.needSearch == 1){
+      this.timeId = setInterval(() => {
+        this.search()
+      }, 2000);
+    }else{
+      this.search_status()
+    }
+    
+  },
+  methods: {
+    // 轮询 支付状态
+    search_status() {
+      let status = this.$route.query.orderStatus
+      this.status = status
+      console.log(this.status,status)
+        if(status==0){
+          this.text = '用户支付中,请稍后'
+        }else if(status==1){
+          this.text = '用户支付成功'
+        }else{
+          this.text = '用户支付失败,请重试'
+        }
+    },
+    search(){
+      this.$api.facepay_getStatus(
+       this.$route.query.orderId
+      ).then((res) => {
+        let orderStatus = res.body.orderStatus;
+        this.status = orderStatus
+        if(orderStatus == 0){
+          this.text = '用户支付中,请稍后'
+        }else if(orderStatus == 1){
+          this.text = '用户支付成功'
+          clearInterval(this.timeId);
+        }else{
+          this.text = '用户支付失败,请重试'
+          clearInterval(this.timeId);
+        }
+      });
+    },
+    goback(){
+      this.$router.push('/main/product')
+    }
+  },
+  beforeRouteLeave(to, from, next) {
+    clearInterval(this.timeId);
+    next();
+  },
+};
+</script>
+<style lang="less" scoped>
+.payResult-page {
+  & {
+    min-height: 100vh;
+    background: #f5f5f5;
+  }
+  .result {
+    & {
+      width: 359px;
+      height: 190px;
+      background: #ffffff;
+      border-radius: 3px;
+      margin: auto;
+      margin-top: 10px;
+      text-align: center;
+      box-sizing: border-box;
+      padding: 32px 0;
+    }
+    img {
+      width: 95px;
+      height: 95px;
+      margin-bottom: 16px;
+    }
+  }
+  .btn-box{
+    text-align: center;
+  }
+  .getQrCode {
+    width: 320px;
+    height: 44px;
+    outline: none;
+    border-radius: 22px;
+    border: 0;
+    margin-top: 42px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/shsk/shsk.vue b/src/views/old/store/shsk/shsk.vue
new file mode 100644
index 0000000..8fea33b
--- /dev/null
+++ b/src/views/old/store/shsk/shsk.vue
@@ -0,0 +1,231 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-26 15:12:47
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-16 10:01:32
+ * @Description: 商户收款页面
+-->
+<template>
+  <div class="store-shsk-page">
+    <van-nav-bar
+      title="商户收款"
+      left-text="返回"
+      left-arrow
+      @click-left="onClickLeft"
+      style="line-height: 43px"
+    >
+      <i
+        class="iconfont iconzuojiantou"
+        slot="left"
+        style="font-size: 25px"
+      ></i>
+    </van-nav-bar>
+    <div class="content">
+      <p class="title">收款金额</p>
+      <div class="input-box">
+        <span>¥</span>
+        <input type="text" v-model="price" placeholder="请输入收款金额" />
+      </div>
+      <p class="tip">本次收款渠道手续费:{{rate}}%</p>
+    </div>
+    <button
+      class="getQrCode"
+      @click="getQrCode"
+      :style="{ background: $store.state.backColor, color: '#fff' }"
+    >
+      生成收款二维码
+    </button>
+    <button
+      v-if="$route.query.zfbVersion != 5"
+      class="toQrCode"
+      @click="toQrCode"
+      :style="{
+        background: '#fff',
+        border: `solid 1px ${$store.state.backColor}`,
+        color: $store.state.backColor,
+      }"
+    >
+      扫描用户付款码
+    </button>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      rate:'0.38',
+      price:'',//金额
+    };
+  },
+  created() {
+    this.getWeChatConfig();
+  },
+  mounted(){
+    this.$api.shskProdFee({
+      payMethod:this.$route.query.payMethod,
+      zfbVersion:this.$route.query.zfbVersion
+    }).then(res=>{
+      this.rate = res.body.fee
+    })
+  },
+  methods: {
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    getQrCode(){
+        if(!this.price){
+          this.$tool.toast('交易金额不能为空');
+          return
+        }
+        this.$api.facepay_create({
+          payAmt:this.price,
+          term:0,
+          payType: 1,//反扫
+          zfbVersion:this.$route.query.zfbVersion,
+          payMethod:this.$route.query.payMethod
+        }).then(res=>{
+            let url = res.body.payQrCodeUrl;
+            let id = res.body.orderId;
+            this.$router.push({
+              path:'/getShskQRCode',
+              query:{
+                url:res.body.payQrCodeUrl,
+                orderId:res.body.orderId
+              }
+            })
+        })
+    },
+    toQrCode() {
+      let that = this
+      if(!this.price){
+        this.$tool.toast('交易金额不能为空');
+        return
+      }
+      this.checkIsReady().then(() => {
+        wx.scanQRCode({
+          needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
+          scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
+          success: function (res) {
+            // 当needResult 为 1 时,扫码返回的结果
+            // 扫码成功后调用接口
+            console.log(res)
+            that.$api.facepay_create({
+              payAmt:that.price,
+              term:0,
+              payType: 2,//正扫
+              zfbVersion:that.$route.query.zfbVersion,
+              payMethod:that.$route.query.payMethod,
+              authCode: res.resultStr,
+            }).then(res=>{
+                let id = res.body.orderId;
+                that.$router.push({
+                  path:'/shsk-payResult',
+                  query:{
+                    orderId:id,
+                    needSearch:1
+                  }
+                })
+            })
+          },
+        });
+      });
+    },
+    // 异步准备微信环境
+    checkIsReady() {
+      return new Promise((resolve, reject) => {
+        wx.ready(() => resolve());
+        wx.error(err => reject(console.log(res + "wx.error")));
+      });
+    },
+    // 获取微信配置
+    getWeChatConfig() {
+      let url = location.href.split("#")[0];
+      // let url = 'http://t.finlean.com/'
+      this.$api
+        .getTokenInfo({
+          url: url,
+        })
+        .then((res) => {
+          // 获取微信配置
+          wx.config({
+            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印
+            appId: res.body.appId, // 必填,公众号的唯一标识
+            timestamp: res.body.timestamp, // 必填,生成签名的时间戳
+            nonceStr: res.body.nonceStr, // 必填,生成签名的随机串
+            signature: res.body.signature, // 必填,签名
+            jsApiList: ["checkJsApi", "scanQRCode"], // 必填,需要使用的JS接口列表
+            openTagList: [], // 可选,需要使用的开放标签列表,例如['wx-open-launch-app']
+          });
+        });
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+.store-shsk-page {
+  & {
+    min-height: 100vh;
+    background: #f5f5f5;
+    text-align: center;
+  }
+  .content {
+    & {
+      text-align: left;
+      background: #fff;
+      width: 359px;
+      // height: 154px;
+      margin: auto;
+      margin-top: 10px;
+      box-sizing: border-box;
+      padding: 32px 12px;
+    }
+    .title {
+      font-size: 14px;
+      font-family: PingFang SC;
+      font-weight: 500;
+      color: #333333;
+    }
+    .input-box {
+      border-bottom: 1px solid #e6e6e6;
+      padding: 24px 0 7px 0;
+      span {
+        font-size: 20px;
+        font-family: PingFang SC;
+        font-weight: bold;
+        color: #333333;
+      }
+      input {
+        border: 0;
+        outline: none;
+        height: 30px;
+        font-size: 20px;
+      }
+      input::placeholder {
+        font-size: 20px;
+      }
+    }
+    .tip {
+      font-size: 12px;
+      font-family: PingFang SC;
+      font-weight: 500;
+      color: #999999;
+      margin-top: 16px;
+    }
+  }
+  .getQrCode {
+    width: 320px;
+    height: 44px;
+    outline: none;
+    border-radius: 22px;
+    border: 0;
+    margin-top: 42px;
+  }
+  .toQrCode {
+    width: 320px;
+    height: 44px;
+    outline: none;
+    border-radius: 22px;
+    margin-top: 16px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/wx-pay-score.vue b/src/views/old/store/wx-pay-score.vue
new file mode 100644
index 0000000..5f82dc5
--- /dev/null
+++ b/src/views/old/store/wx-pay-score.vue
@@ -0,0 +1,409 @@
+<!--
+ * @Date: 2019-08-30 13:38:35
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-09 15:17:58
+ * @Description:
+ -->
+
+<template>
+    <div class="hb-credit-installment h-100-g">
+        <!-- <x-header title="办理分期" :left-options="{backText:''}"></x-header> -->
+        <!-- <tab :line-width=1 active-color='#bfa073'>
+            <tab-item v-for="(item, index) in tabList" :key="index" :selected="activeTab === index"
+                @on-item-click="handleTabChange(index)">{{ item }}</tab-item>
+        </tab> -->
+    <van-nav-bar title="和微分" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+        <div class="search">
+            <selector title='活动编码' placeholder='请选择' @on-change='handleContIdChange' v-model="contSendCode"
+                  :options='form.cmccWxpayContList' :value-map="['contCode','contName']" direction='rtl'></selector>
+        </div>
+        <group  class="group-content">
+            <div class="title">
+                <span class="line" :style="{background:$store.state.defaultBgColor}"></span>
+                活动信息
+            </div>
+                <div class="form-content">
+                <x-input title='活动ID' v-model.trim="contSendCode" readonly text-align='right'></x-input>
+                <x-input title='活动名称' v-model.trim="contName" readonly text-align='right'></x-input>
+                <x-input title='合约期' v-model.trim="term" readonly text-align='right'></x-input>
+                <x-input title='担保金额' v-model.trim="guaranteedAmt" readonly text-align='right'></x-input>
+                <x-input title='月赠费金额' v-model.trim="monGiftAmt" readonly text-align='right'></x-input>
+            </div>
+             <div style="height: 10px; background: #f5f5f5;"></div>
+            <div class="title" style="border-radius:6px;">
+                <span class="line" :style="{background:$store.state.defaultBgColor}"></span>
+                用户信息
+            </div>
+            <div class="form-content">
+                <selector title='手机号类型' placeholder='请选择' @on-change='handleMblTypeChange' v-model="mblNoType"
+                          :options='form.mblNoTypeList' :value-map="['code','name']" direction='rtl'></selector>
+                <x-input title='用户姓名' v-model.trim="userName" placeholder='请输入' text-align='right' />
+                <selector title='归属地' placeholder='请选择' @on-change='handleRegionChange' v-model="regionCode"
+                          :options='form.regionList' :value-map="['code','name']" direction='rtl'></selector>
+                <x-input title='身份证号码' v-model.trim="idCardNo" placeholder='请输入' text-align='right' />
+                <van-field
+                        v-model="mblNo"
+                        clearable
+                        maxlength='11'
+                        type="number"
+                        placeholder="手机号码"
+                >
+                    <van-button class="mgs-btn" slot="button" size="small" @click="mblVertify" >可用查询</van-button>
+                </van-field>
+            </div>
+        </group>
+
+
+        <div class="btn-box">
+            <van-button round :color="$store.state.backColor" class="btn2" @click="wxScoreOrderCreate">生成二维码</van-button>
+        </div>
+        <Vdialog @cancel="cancel" :show="showDia"></Vdialog>
+  </div>
+</template>
+
+<script>
+    import QRCode from 'qrcode';
+    import FConfirmSimple from '@/components/old/FConfirmSimple.vue';
+    import Vdialog from "@/components/common/v-dialog.vue";
+    import {
+        mapState,
+        mapActions
+    } from 'vuex';
+    import {
+        Datetime,
+        XAddress,
+    } from 'vux';
+    export default {
+        name: 'wx-pay-score',
+        components: {
+            FConfirmSimple,Vdialog
+        },
+        data() {
+            return {
+                creditId: '',
+                contId: '',//合约id
+                contSendCode: '',//合约code
+                mblType:'',
+                regionCode:'',
+                mblNoType:'',
+                vertifyStatus:'',
+                userName: '',
+                idCardNo: '',
+                mblNo: '',
+                term: '',//合约期数
+                contName: '',//合约名称
+                guaranteedAmt: '',//担保金额
+                monGiftAmt: '',//月赠费金额
+                qrCode:'',
+                form: {
+                    cmccWxpayContList: {
+                        type: Array,
+                        default: () => {
+                            return [];
+                        }
+                    },
+                    mblNoTypeList: {
+                        type: Array,
+                        default: () => {
+                            return [];
+                        }
+                    },
+                    regionList: {
+                        type: Array,
+                        default: () => {
+                            return [];
+                        }
+                    }
+                }
+            };
+        },
+        computed:{
+
+        },
+        created(){
+            this.$api.wxScoreInit().then(res => {
+                this.form = res.body || {};
+                var arr = res.body.terms;
+            }, err => err);
+        },
+        methods: {
+            //顶部tabbar返回按钮
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+            // 套餐类型
+            handleContIdChange(val) {
+                let currentEle=JSON.parse(JSON.stringify(this.form.cmccWxpayContList)).find(item=>item.contCode===val)
+                this.contId = currentEle.contId;
+                this.contSendCode = currentEle.contCode;
+                this.contName = currentEle.contName;
+                this.term = currentEle.term;
+                this.guaranteedAmt = currentEle.guaranteedAmt;
+                this.monGiftAmt = currentEle.monGiftAmt;
+            },
+            // 账号类型
+            handleMblTypeChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.form.mblNoTypeList)).find((item) => {
+                    return item.code = val;
+                });
+            },
+            // 市区
+            handleRegionChange(val) {
+                let currentEle = JSON.parse(JSON.stringify(this.form.regionList)).find((item) => {
+                    return item.code = val;
+                });
+            },
+            // 账号类型
+            mblVertify(val) {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.mblNoType)) {
+                    v.toast('请选择手机号类型');
+                    return false;
+                }
+                if (v.checkValEmpty(this.contSendCode)) {
+                    v.toast('请选择活动套餐');
+                    return false;
+                }
+                if (v.checkValEmpty(this.userName)) {
+                    v.toast('请输入用户姓名');
+                    return false;
+                }
+                if (v.checkValEmpty(this.regionCode)) {
+                    v.toast('请选择归属地');
+                    return false;
+                }
+                if (v.checkValEmpty(this.idCardNo)) {
+                    v.toast('请输入用户身份证号');
+                    return false;
+                }
+                if (!v.checkPhone(this.mblNo)) {
+                    v.toast('请输入正确的用户手机号');
+                    return false;
+                }
+                this.$api.wxScoreVertify({
+                    cardNo: this.idCardNo,
+                    contCode:this.contSendCode,
+                    mblNo: this.mblNo,
+                    mblNoType: this.mblNoType,
+                    regionCode: this.regionCode
+                }).then(res => {
+                    this.creditId = res.body.creditId
+                    this.vertifyStatus = res.body.status
+                    if(this.vertifyStatus == 0){
+                        v.toast('号码不可用');
+                        return false;
+                    }else if(this.vertifyStatus == 1){
+                        v.toast('号码可用');
+                        return false;
+                    }
+                }, err => err);
+            },
+            // 提交订单
+            wxScoreOrderCreate(val) {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.contSendCode)) {
+                    v.toast('请选择活动套餐');
+                    return false;
+                }
+                if (v.checkValEmpty(this.mblNoType)) {
+                    v.toast('请选择手机号类型');
+                    return false;
+                }
+                if (v.checkValEmpty(this.userName)) {
+                    v.toast('请输入用户姓名');
+                    return false;
+                }
+                if (v.checkValEmpty(this.regionCode)) {
+                    v.toast('请选择归属地');
+                    return false;
+                }
+                if (v.checkValEmpty(this.idCardNo)) {
+                    v.toast('请输入用户身份证号');
+                    return false;
+                }
+                if (!v.checkPhone(this.mblNo)) {
+                    v.toast('请输入正确的用户手机号');
+                    return false;
+                }
+                if(this.vertifyStatus == 0){
+                    v.toast('号码不可用');
+                    return false;
+                }
+                this.$api.wxScoreCreate({
+                    creditId: this.creditId,
+                    contId: this.contId,
+                    cardNo: this.idCardNo,
+                    mblNo: this.mblNo,
+                    contCode: this.contSendCode,
+                    regionCode: this.regionCode,
+                    userName: this.userName
+                }).then(res => {
+                    this.qrCode = res.body.qrCode
+                    this.orderId = res.body.orderId
+                    if (this.qrCode) {
+                        this.createdQRCode();
+                    }
+                }, err => err);
+            },
+            // 生成二维码
+            createdQRCode() {
+                let queryObj = {
+                    qrCode:this.qrCode,
+                    orderId: this.orderId,
+                    contName: this.contName,
+                    term: this.term,
+                    guaranteedAmt: this.guaranteedAmt,
+                    monGiftAmt: this.monGiftAmt,
+                }
+                this.$router.push({
+                    path: "/wx-getWxQRCode",
+                    query: queryObj
+                })
+            },
+        },
+    };
+
+</script>
+<style lang='less' scoped >
+    // /deep/.myDisableIpt{
+    //     color: #999999;
+    // }
+    /deep/.van-field__control:disabled {
+        color:  #666;
+        -webkit-text-fill-color:  #666;
+        background-color: transparent;
+        opacity: 1;
+    }
+
+    .ipt,
+    .fenqi {
+        & {
+        border-bottom: 1px solid rgba(238,238,238,1);
+        color: #333;
+        font-size: 16px;
+        height: 50px;
+        }
+    }
+    //搜索框
+    .search {
+        margin-bottom: 20px;
+        padding: 5px 10px;
+    }
+    .mer{
+        width: 100%;
+        height: 150px;
+        background: linear-gradient(-45deg,rgba(104,98,133,1),rgba(76,69,113,1));
+        overflow: hidden;
+        &-head{
+            width: 96%;
+            margin: 28px 2% 0 2%;
+            height: 72px;
+            background:rgba(255,255,255,0.1);
+            // background: (0,0,0, 0.1);
+            border-radius: 36px;
+            .flex();
+            &-item{
+                width: 33%;
+                color: #fff;
+                text-align: center;
+                :first-child{
+                    margin-bottom: 11px;
+                    font-size: 20px;
+                    font-weight: bold;
+                }
+                :last-child{
+                    font-size: 12px;
+                }
+            }
+            &-line{
+                width: 1px;
+                height: 20px;
+                background: #fff;
+            }
+        }
+    }
+    .group-content{
+        transform: translateY(-25px);
+        width: 96%;
+        margin: 0 2%;
+    }
+    /deep/.weui-cells{
+        border-radius: 6px;
+        font-size: 16px;
+        input{
+            font-size: 14px;
+        }
+    }
+    .hb-order-confirm {
+        .trial-list {
+            padding-left: 20px;
+        }
+
+        .f-button-component .f-button {
+            margin-top: 12px;
+        }
+    }
+
+    .hb-credit-installment {
+        background-color: #F5F5F7;
+        // padding-top: 54px;
+        min-height: 100%;
+        .title {
+            padding: 14px 0px 14px 12px;
+            font-size: 16px;
+            font-weight: bold;
+            color: #333;
+            border-bottom: 1px solid rgba(238,238,238,1);
+            .line {
+                display: inline-block;
+                width: 3px;
+                height: 16px;
+                // margin-right: 8px;
+                background:rgba(137,110,219,1);
+                border-radius:0px 6px 0px 6px;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .qrCode-box {
+            padding-top: 0;
+            .flexLayout(center, center, row);
+
+            .qrCode {
+                width: 200px;
+                height: 200px;
+                box-sizing: border-box;
+                background-color: #fff;
+                border: 5px solid @color-border-theme;
+                padding: 5px;
+
+                img {
+                    width: 100%;
+                    height: 100%;
+                    vertical-align: middle;
+                    display: block;
+                }
+            }
+        }
+    }
+    .btn-box{
+        margin-top: 40px;
+        margin-bottom: 22px;
+        display: flex;
+        justify-content: space-around;
+        align-items: center;
+        .btn2{
+            width: 40%;
+            height: 44px;
+            background:rgba(137,110,219,1);
+            color: white;
+        }
+        .active {
+            width: 80%;
+        }
+    }
+
+</style>
diff --git a/src/views/old/store/wx-score-result.vue b/src/views/old/store/wx-score-result.vue
new file mode 100644
index 0000000..ec8a86e
--- /dev/null
+++ b/src/views/old/store/wx-score-result.vue
@@ -0,0 +1,154 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-07-08 16:47:37
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-07-09 13:59:25
+ * @Description: 
+--> 
+<template>
+  <div class="pay-result-page">
+    <v-navbar title="交易结果"></v-navbar>
+    <div class="res-box">
+      <div class="img-box">
+        <img v-if="orderStatus==0" src="../../../../static/img/ing.png" alt />
+        <img v-if="orderStatus==1" src="../../../../static/img/cg.png" alt />
+        <img v-if="orderStatus==2" src="../../../../static/img/cs.png" alt />
+        <img v-if="orderStatus==3" src="../../../../static/img/cs.png" alt />
+        <p>{{text}}</p>
+      </div>
+    </div>
+    <div class="btn-box">
+      <button class="btn-1" @click="goHome">返回首页</button>
+      <button class="btn-2" v-if="orderStatus==0" @click="goDetail">查看订单详情</button>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      timer: "", //定时器
+      text: "支付中,请稍候",
+      orderStatus: 0
+    };
+  },
+  computed: {
+    orderId() {
+      return this.$route.query.orderId;
+    }
+  },
+  created() {
+    this.orderSts();
+  },
+  methods: {
+    //轮询查询订单状态
+    orderSts() {
+      this.timer = setInterval(() => {
+        this.$api.hbOrderFindOrderSts({ orderId: this.orderId }).then(
+          res => {
+            this.orderStatus = res.body.orderStatus;
+            if (res.body.orderStatus == 1) {
+              clearInterval(this.timer);
+              this.text = "支付成功";
+            } else if (res.body.orderStatus == 2) {
+              clearInterval(this.timer);
+              this.text = "支付超时";
+            } else if (res.body.orderStatus == 3) {
+              clearInterval(this.timer);
+              this.text = "支付失败";
+            }
+          },
+          err => {
+            err, clearInterval(this.timer);
+          }
+        );
+      }, 10000);
+    },
+    goHome(){
+        this.$router.push('/main/product')
+    },
+    goDetail(){
+        if(this.$route.query.mode == 'hb'){
+            this.$router.push({
+                path:'/product/hb-detail',
+                query:{
+                    id:this.$route.query.orderId,
+                    mode:this.$route.query.mode
+                }
+            })
+        }
+        if(this.$route.query.mode == 'shtx'){
+            this.$router.push({
+                path:'/product/shtx-detail',
+                query:{
+                    id:this.$route.query.orderId,
+                    mode:this.$route.query.mode
+                }
+            })
+        }
+        
+    }
+  },
+  beforeRouteLeave(to, from, next) {
+    if (this.timer) {
+      clearInterval(this.timer);
+    }
+    next();
+  }
+};
+</script>
+<style lang="less" scoped>
+.pay-result-page {
+  & {
+    min-height: 100vh;
+    background-color: #f5f5f7;
+  }
+  .res-box {
+    width: 96vw;
+    height: 190px;
+    background: rgba(255, 255, 255, 1);
+    border-radius: 3px;
+    margin-left: 2vw;
+    margin-top: 10px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    p {
+      font-size: 14px;
+      font-family: PingFang SC;
+      font-weight: 500;
+      color: rgba(51, 51, 51, 1);
+    }
+    .img-box {
+      text-align: center;
+      img {
+        width: 95px;
+        height: 95px;
+      }
+    }
+  }
+  .btn-box {
+    padding-top: 44px;
+    text-align: center;
+    .btn-1 {
+      width: 86vw;
+      height: 44px;
+      background: rgba(137, 110, 219, 1);
+      border-radius: 22px;
+      border: 0;
+      outline: none;
+      color: #fff;
+      margin-bottom: 12px;
+    }
+    .btn-2 {
+      width: 86vw;
+      height: 44px;
+      background: rgba(247, 245, 255, 1);
+      border: 1px solid rgba(137, 110, 219, 1);
+      border-radius: 22px;
+      outline: none;
+      color: #896edb;
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/xyg/createcode.vue b/src/views/old/store/xyg/createcode.vue
new file mode 100644
index 0000000..a971f43
--- /dev/null
+++ b/src/views/old/store/xyg/createcode.vue
@@ -0,0 +1,420 @@
+<!--
+ * @Descripttion: 智享云生成二维码
+ * @Author:TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-3-1 15:00:00
+ * @LastEditTime: 2020-11-13 17:25:14
+ -->
+<template>
+    <div class="contract-installment-zxh">
+       <van-nav-bar title="信用购">
+          <i class="iconfont iconzuojiantou" slot="left" style="font-size:20px;color:#333;font-weight:blod" @click="goFrom"></i>
+        </van-nav-bar>
+        <div class="heyue-info">
+            <p class="tit">
+                <span>合约信息</span>
+                <span></span>
+            </p>
+            <!-- <div style="margin-bottom:16px">
+                <p style="margin-bottom:10px">
+                    <span style="color:#999999;font-size:13px">合约套餐</span>
+                    <span style="color:#FF6666;font-size:13px">*</span>
+                </p>
+                <el-select v-model="selectContract" placeholder="请选择">
+                  <el-option
+                    v-for="item in contractList"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                  </el-option>
+                </el-select>
+            </div> -->
+            <Ipt :type="'text'" :mustFill="true"  :tit="'合约套餐'" :readonly="true" v-model="contName"></Ipt>
+            <Ipt :type="'text'" :mustFill="true"  :tit="'结算金额'" :readonly="true" v-model="selectConInfo.capitalAmt"></Ipt>
+            <Ipt :type="'text'" :mustFill="true"  :tit="'月缴话费'" :readonly="true" v-model="selectConInfo.monthlyFees"></Ipt>
+            <Ipt :type="'text'" :mustFill="true" :tit="'期数'" :readonly="true" v-model="selectConInfo.term"></Ipt>
+        </div>
+        <div class="sp-info">
+            <p class="tit">
+                <span>商品信息</span>
+                <span></span>
+            </p>
+            <div style="margin-bottom:16px">
+                <p style="margin-bottom:10px">
+                    <span style="color:#999999;font-size:13px">商品类型</span>
+                </p>
+                <el-select v-model="goodsInfo.goodsType" placeholder="请选择">
+                  <el-option
+                    v-for="item in columns"
+                    :key="item.code"
+                    :label="item.name"
+                    :value="item.code"
+                    @change="onConfirm">
+                  </el-option>
+                </el-select>
+            </div>
+            <Ipt :type="'text'" :tit="'品牌'" :placeholder="'请输入品牌'" :readonly="false" v-model="goodsInfo.goodsBrand"></Ipt>
+            <Ipt :type="'text'" :tit="'名称'" :placeholder="'请输入名称'" :readonly="false" v-model="goodsInfo.goodsName"></Ipt>
+            <Ipt :type="'text'" :tit="'型号'" :placeholder="'请输入型号'" :readonly="false" v-model="goodsInfo.goodsModel"></Ipt>
+            <Ipt :type="'text'" :tit="'价格'" :placeholder="'请输入价格'" :readonly="false" v-model="goodsInfo.goodsPrice"></Ipt>
+            <Ipt :type="'text'" :tit="'IMEI'" :placeholder="'请输入IMEI'" :readonly="false" v-model.trim="goodsInfo.goodsImei" v-if="goodsInfo.goodsType==1"></Ipt>
+            <Ipt :type="'text'" :tit="'SN'" v-model.trim="goodsInfo.goodsSn" placeholder='请输入SN' :max='20' v-else></Ipt>
+        </div>
+        <van-button class="btn" round @click="submit">生成二维码</van-button>
+    </div>
+</template>
+
+<script>
+    import {
+        XAddress
+    } from 'vux';
+    import QRCode from 'qrcode';
+    import IDValidator from '@/utils/IDValidator';
+    import Vue from 'vue';
+    import { Picker } from 'vant';
+    import Ipt from '../../../../components/common/h-ipt'
+    Vue.use(Picker);
+    export default {
+        name: 'xyg_createcode',
+        components: {
+            XAddress,Ipt
+        },
+        data() {
+            return {
+                value:'',
+                showPicker: false,//弹出层
+               
+                cityList: [],
+                selectContract: '', // 选中的合约
+                contName:'',//合约名称
+                // 合约信息
+                selectConInfo: {
+                    capitalAmt: '', // 结算金额
+                    monthlyFees: '', // 月缴话费
+                    term: '', // 期数
+                },
+                // 商品信息
+                goodsInfo: {
+                    //selectContract: '', // 选中的合约
+                    goodsBrand: '', //商品品牌
+                    goodsName: '', //商品名称
+                    goodsModel: '', // 商品型号
+                    goodsPrice: '', // 价格
+                    goodsImei: '', // IMEI
+                    goodsSn: '', // SN
+                    goodsType:'',//设备类型,1-手机(IMEI)2-电子商品、3-智能家电、4-其他(SN)
+                },
+                contractList: [], // 合约列表
+                columns: [],//设备下拉表
+            }
+        },
+        created() {
+            if(sessionStorage.hb_session_info){
+                this.goodsInfo = JSON.parse(sessionStorage.hb_session_info)
+            }
+            this.contName = this.$route.query.prodName;
+            this.selectContract = this.$route.query.prodId
+            this.selectConInfo.capitalAmt = this.$route.query.prodAmt
+            this.selectConInfo.monthlyFees = this.$route.query.monthlyFees //月缴话费
+            this.selectConInfo.term = this.$route.query.term
+            
+            this.initWXToken(location.origin + location.pathname);
+            this.$api.getGoodsTypeList().then(res=>{
+                this.columns = res.body.prodTypes
+            })
+            this.$api.getArea().then(res => {
+                this.cityList = res.body.provList;
+            });
+        },
+        watch: {
+        },
+        methods: {
+            // 返回上一页
+            goFrom(){
+                this.$router.go(-1)
+            },
+            onConfirm() {
+                console.log(this.goodsInfo.goodsType)
+            //   this.value = value
+            //   this.goodsInfo.goodsType = index+1;
+              //this.showPicker = false;
+              if(this.goodsInfo.goodsType==1||this.goodsInfo.goodsType==''){
+                  this.goodsInfo.goodsSn = ''
+              }else{
+                  this.goodsInfo.goodsImei = ''
+              }
+            },
+            initWXToken(parUrl) {
+                this.$api.getTokenInfo({
+                    url: parUrl
+                }).then(
+                    function (res) {
+                        if (res.errorCode === 0) {
+                            // 第二步骤   只需要首页地址分享 ,需要在每次变化时调用
+                            wx.config({
+                                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+                                appId: res.body.appId,
+                                timestamp: res.body.timestamp, // 必填,生成签名的时间戳
+                                nonceStr: res.body.nonceStr, // 必填,生成签名的随机串
+                                signature: res.body.signature, // 必填,签名,见附录1
+                                jsApiList: [
+                                    'checkJsApi',
+                                    'scanQRCode',
+                                    'getLocation'
+                                ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+                            });
+                        }
+                    },
+                    function (error) {
+                        if (error.response) {
+                            console.log(error.response);
+                        }
+                    }
+                );
+            },
+            getLocation(){
+                console.log('getLocation');
+                let _this = this;
+                wx.getLocation({
+                    type: 'wgs84',
+                    success: function (res) {
+                        console.log(JSON.stringify(res));
+                        let longitude = res.longitude
+                        let latitude = res.latitude
+                        _this.$api.gpsAddr({
+                            gpsAddrLongitude: longitude,
+                            gpsAddrLatitude: latitude
+                        }).then(res => {
+                            console.log('gpsSucess');
+                        }, err => err);
+                    },
+                    cancel: function (res) {
+                        console.log('用户拒绝授权获取地理位置');
+                        _this.$api.gpsAddr({
+                            gpsAddrLongitude: '',
+                            gpsAddrLatitude: ''
+                        }).then(res => {
+                            console.log('gpsfail');
+                        }, err => err);
+                    }
+                })
+            },
+            // 处理合约的修改
+            contractChange(val) {
+                if (!val) {
+                    return;
+                }
+                this.selectConInfo = this.contractList.find((item) => {
+                    return item.contId === val;
+                })
+            },
+            // 生成二维码
+            submit() {
+                this.getLocation();
+                let v = this.$tool;
+                if (v.checkValEmpty(this.selectContract)) {
+                    v.toast('请选择合约套餐');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsBrand)) {
+                    v.toast('请输入商品品牌');
+                    return false;
+                }
+                if (!/^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(this.goodsInfo.goodsBrand)) {
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品品牌');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsName)) {
+                    v.toast('请输入商品名称');
+                    return false;
+                }
+                if (!/^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(this.goodsInfo.goodsName)) {
+
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品名称');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsModel)) {
+                    v.toast('请输入商品型号');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsPrice)) {
+                    v.toast('请输入商品价格');
+                    return false;
+                }
+                if (!/^[1-9]\d{0,4}/.test(this.goodsInfo.goodsPrice)) {
+                    v.toast('请输入商品正确的价格');
+                    return false;
+                }
+                if(this.goodsInfo.goodsType == 1){
+                    if (v.checkValEmpty(this.goodsInfo.goodsImei)) {
+                        v.toast('请输入商品IMEI');
+                        return false;
+                    }
+                }else{
+                    if (v.checkValEmpty(this.goodsInfo.goodsSn)) {
+                        v.toast('请输入商品SN');
+                        return false;
+                    }
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsType)) {
+                    v.toast('请选择设备类型');
+                    return false;
+                }
+                 // 用来整体存储缓存数据
+                let hb_session_info = {
+                  ...this.goodsInfo
+                }
+                sessionStorage.hb_session_info = JSON.stringify(hb_session_info)
+
+                let queryObj = {
+                    ...this.selectConInfo,
+                    ...this.goodsInfo,
+                    mgrId: sessionStorage.sid, // 办单员id
+                    contId: this.selectContract, // 合约id
+                    contName: this.contName,
+                    typeId: this.$route.query.typeId,
+                    seq:this.$route.query.seq
+                };
+
+                this.$router.push({
+                    path: "/contract-qrcode",
+                    query: queryObj
+                })
+            },
+            // 根据城市code 获取拼接的字符串
+            getAddrText(arr) {
+                let str = '';
+                this.cityList.forEach(item => {
+                    if (arr.indexOf(item.value) > -1) {
+                        str += item.name
+                    }
+                })
+                return str;
+            }
+        }
+    };
+</script>
+<style lang='less' >
+    .contract-installment-zxh {
+        min-height: 100vh;
+        background-color: #f1f1f1;
+        padding-bottom: 80px;
+        //overflow-y: scroll;
+        input::-webkit-input-placeholder{color:#333333;}
+        .van-cell {
+            padding: 0.22rem 0.32rem 0.22rem 8px;
+            border: 1px solid #CDD3F6;
+            border-radius: 4px;
+            background-color: #F9FAFF;
+            margin-bottom: 16px;
+        }
+        .van-cell:after {
+            content: " ";
+            position: absolute;
+            left: 0.3rem;
+            top: 0;
+            right: 0;
+            height: 0.02rem;
+            width: 98%;
+            border-top: 0.02rem solid #D9D9D9;
+            color: #D9D9D9;
+            transform-origin: 0 100%;
+            transform: scaleY(0.5);
+        }
+        .van-nav-bar__title {
+            max-width: 60%;
+            margin: 0 auto;
+            color: #333;
+            font-weight: bold;
+            font-size: 16px;
+        }
+        .el-input__inner{
+            background-color: #F9FAFF;
+            padding-left: 8px;
+        }
+        .el-select{
+            width: 100%;
+            height: 40px;
+        }
+        .heyue-info{
+            width:100%;
+            height:385px;
+            background:rgba(255,255,255,1);
+            box-shadow:1px 5px 13px 0px rgba(0, 0, 0, 0.08);
+            margin-top: 12px;
+            box-sizing: border-box;
+            padding: 17px 20px 0 20px;
+            .tit{
+                margin-bottom: 19px;
+                color: #6C4AD5;
+                font-size: 16px;
+                position: relative;
+                span:nth-of-type(1){
+                    display: inline-block;
+                    font-weight: bold;
+                }
+                span:nth-of-type(2){
+                    display: inline-block;
+                    width:64px;
+                    height:7px;
+                    background:rgba(255,236,190,0.5);
+                    position: absolute;
+                    left: 0;
+                    bottom: 0;
+                }
+            }
+        }
+        .sp-info{
+            width:375px;
+            height:560px;
+            background:rgba(255,255,255,1);
+            box-shadow:1px 5px 13px 0px rgba(0, 0, 0, 0.08);
+            border-radius:3px;
+            margin-top: 15px;
+            box-sizing: border-box;
+            padding: 17px 20px 0 20px;
+            .tit{
+                margin-bottom: 19px;
+                color: #6C4AD5;
+                font-size: 16px;
+                position: relative;
+                span:nth-of-type(1){
+                    display: inline-block;
+                    font-weight: bold;
+                }
+                span:nth-of-type(2){
+                    display: inline-block;
+                    width:64px;
+                    height:7px;
+                    background:rgba(255,236,190,0.5);
+                    position: absolute;
+                    left: 0;
+                    bottom: 0;
+                }
+            }
+        }
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+    }
+    .btn {
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 24px;
+        }
+</style>
diff --git a/src/views/old/store/xyg/message.vue b/src/views/old/store/xyg/message.vue
new file mode 100644
index 0000000..3ef6437
--- /dev/null
+++ b/src/views/old/store/xyg/message.vue
@@ -0,0 +1,105 @@
+
+<template>
+    <div class="getQRCode">
+        <!-- <x-header class="message-head" title="消息详情" :left-options="{backText:''}"></x-header> -->
+        <van-nav-bar title="消息详情" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar>
+        <div class="message-body">
+            <div class="notice">
+                <p class="notice-title">{{ message.msgTitle }}</p>
+                <p>{{ message.msgTime }}</p>
+            </div>
+            <span class="line"></span>
+            <div class="notice-continue" v-html=" message.msgCon">
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+import { XHeader } from 'vux';
+import {
+        dateFormat
+    } from 'vux'
+import { mapActions } from 'vuex';
+    export default {
+        name: 'message',
+        components: {
+             XHeader,
+        },
+        data() {
+            return {
+                messageId: this.$route.query.messageId,
+                message:{
+                    msgCon: '',
+                    msgTitle: '',
+                    msgTime: '',
+                }
+            }
+        },
+        computed:{
+
+        },
+        created() {
+            this.msgInt()
+            this.getCount()
+        },
+        methods: {
+            ...mapActions(['getCount']),
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+            msgInt() {
+                this.$api.noticeDetail({id: this.messageId}).then(res => {
+                    console.log(res.body)
+                    this.message.msgCon = res.body.noticeContent;
+                    this.message.msgTitle = res.body.title;
+                    this.message.msgTime = dateFormat(res.body.pubTime);
+                })
+                
+            }
+        }
+    }
+</script>
+<style lang="less" scoped>
+.getQRCode{
+    background: #F5F5F7;
+    width: 100%;
+    height: 100%;
+}
+.message-head{
+    position: relative;
+}
+.message-body{
+    width: 96%;
+    margin: 12px 2%;
+    margin-top: 10px;
+    background: #fff;
+    .notice{
+        padding: 15px 12px;
+        border-bottom: 1px solid #EEEEEE;
+        p{
+            color: #999999;
+        }
+        &-title{
+            font-size: 16px;
+            font-weight: bold;
+            color: #333333 !important;
+            margin-bottom: 10px;
+        }
+    }
+    .notice-continue{
+        width: 94%;
+        margin: 0px 2%;
+        padding: 15px 0;
+        white-space: wrap;
+        font-size: 14px;
+        word-wrap: break-word;
+        height: auto;
+        padding-left: 2%;
+        background: #fff;
+        color: #666666;
+        line-height: 22px;
+    }
+}
+</style>
diff --git a/src/views/old/store/xyg/set.vue b/src/views/old/store/xyg/set.vue
new file mode 100644
index 0000000..d73868d
--- /dev/null
+++ b/src/views/old/store/xyg/set.vue
@@ -0,0 +1,197 @@
+<!--
+ * @Descripttion: 智享云状态切换 + 数据资料的反显,无复杂逻辑
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-21 18:06:00
+ * @LastEditTime: 2019-09-02 11:15:49
+ -->
+<template>
+    <div class="zxh-set-box">
+        <x-header title="智享花" :left-options="{backText:''}"></x-header>
+        <group>
+            <x-switch title="状态" v-model="status"></x-switch>
+        </group>
+        <f-space></f-space>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                基本信息
+            </div>
+            <cell title="商户名称" :value="info.merName"></cell>
+            <cell title="营业执照号" :value="info.licenseNo"></cell>
+            <cell title="地址" :value="info.merAddr"></cell>
+            <cell title="详细地址" :value="info.merDtlAddr"></cell>
+            <cell title="营业面积" :value="info.merArea"></cell>
+            <cell title="成立日期" :value="info.foundDate | timeformat('yyyy-MM-dd')"></cell>
+            <cell title="协议开始时间" :value="(info.agreeStartTime || '') | parseDate"></cell>
+            <cell title="协议结束时间" :value="(info.agreeEndTime || '') | parseDate"></cell>
+        </group>
+        <f-space></f-space>
+
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                法人信息
+            </div>
+            <cell title="法人姓名" :value="info.legalName"></cell>
+            <cell title="法人身份证号" :value="info.legalIdNo"></cell>
+            <cell title="法人电话" :value="info.legalMblNo"></cell>
+            <cell title="法人家庭住址" :value="info.legalHomeAddr"></cell>
+        </group>
+        <f-space></f-space>
+
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                银行信息
+            </div>
+            <cell title="银行名称" :value="info.bankName"></cell>
+            <cell title="开户行" :value="info.bankDtlName"></cell>
+            <cell title="地址" :value="info.bankAddr"></cell>
+            <cell title="户名" :value="info.cardName"></cell>
+            <cell title="银行账号" :value="info.cardNo"></cell>
+            <cell title="账号类型" :value="info.cardTypeName"></cell>
+            <cell title="开户行行号" v-if="info.cardType ==='pu'" :value="info.bankNo"></cell>
+        </group>
+
+        <f-space></f-space>
+
+        <!-- 图片反显 -->
+        <section class="img-box">
+            <h4>营业执照照片</h4>
+            <div class="img-item" v-for="(item, index) in info.licencePhotos" :key="index"
+                :style="item.fileUrl | generate">
+            </div>
+        </section>
+        <section class="img-box">
+            <h4>法人身份证正反面照片</h4>
+            <div class="img-item" v-for="(item, index) in info.legalCardPhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>房产证或租赁合同</h4>
+            <div class="img-item" v-for="(item, index) in info.houseContractPhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>外景照、门头照片、前台照、内景照</h4>
+            <div class="img-item" v-for="(item, index) in info.storePhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>套餐活动清单、终端商品定价清单</h4>
+            <div class="img-item" v-for="(item, index) in info.mealBillPhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>运营商授权文件</h4>
+            <div class="img-item" v-for="(item, index) in info.accreditFilePhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <f-button fixed @on-click="submit">保存</f-button>
+    </div>
+</template>
+
+<script>
+    import {
+        XSwitch
+    } from 'vux';
+
+    export default {
+        name: "xyg_info",
+        components: {
+            XSwitch
+        },
+        data() {
+            return {
+                status: true,
+                info: {},
+                productInfo: {}
+            }
+        },
+        filters: {
+            generate(path) {
+                return {
+                    'background-image': `url(${path})`
+                }
+            },
+            parseDate(v = '') {
+                if (v) {
+                    return v.slice(0, 4) + '-' + v.slice(4, 6) + '-' + v.slice(-2);
+                } else {
+                    return '暂无';
+                }
+            }
+        },
+        created() {
+            this.init();
+        },
+        methods: {
+            init() {
+                this.$api.prodRefInit(this.$route.query).then(res => {
+                    this.productInfo = res.body;
+                    this.status = !!this.productInfo.status;
+                });
+                // 获取商户信息反显
+                this.$api.getXygMerInfo(this.$route.query.orgId).then(res => {
+                    this.info = res.body;
+                })
+            },
+            // 保存
+            submit() {
+                this.$api.prodSaveRef({
+                    ...this.$route.query,
+                    prodSkDtlInfoList: this.productInfo.prodSkDtlInfoList,
+                    status: this.status ? 1 : 0
+                }).then(() => {
+                    this.$notify('保存成功');
+                });
+            }
+        },
+    }
+</script>
+
+<style lang="less">
+    .zxh-set-box {
+        padding-bottom: 60px;
+
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .img-box {
+            padding: 0 12px;
+            background-color: #fff;
+            margin-bottom: 20px;
+
+            h4 {
+                font-weight: normal;
+                font-size: 15px;
+                line-height: 40px;
+            }
+
+            .img-item {
+                display: inline-block;
+                height: 100px;
+                width: 100px;
+                margin: 0 10px 10px 0;
+                border: 1Px dashed #d9d9d9;
+                background-repeat: no-repeat;
+                background-size: contain;
+                background-position: center;
+            }
+        }
+    }
+</style>
diff --git a/src/views/old/store/xyg/upload.vue b/src/views/old/store/xyg/upload.vue
new file mode 100644
index 0000000..4563382
--- /dev/null
+++ b/src/views/old/store/xyg/upload.vue
@@ -0,0 +1,498 @@
+<!--
+ * @Descripttion: 上传合约凭证
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-08 09:16:44
+ * @LastEditTime: 2019-09-03 09:25:14
+ -->
+<template>
+  <div class="zxh-upload-box h-100-g">
+    <x-header :left-options="{'backText': ''}" title="上传合约凭证" class="gradient-color"></x-header>
+    <div class="up-div">
+      <p>合约办理凭证截图</p>
+      <van-uploader :after-read="afterRead">
+        <div class="upload-div">
+          <img :src="pic" alt v-if="pic" />
+          <i class="iconfont iconzhaoxiang" v-else></i>
+        </div>
+      </van-uploader>
+      <p>合约手机号</p>
+      <Ipt v-model="form.contMblNo" :max="11" :placeholder="'请输入手机号'" :type="'text'"></Ipt>
+    </div>
+    <button class="btn" @click="submit">提交</button>
+    <!-- <div class="content" v-for="(item, index) in fileTypeArr" :key="index">
+            <h4 class="title">
+                <span>{{item.name}}</span>
+                <div @click="changeShowselect(item)">
+                    <i class="iconfont scene_Staging-xiangji"></i>
+                    <input ref="photo" type="file" accept="image/*" @change="getFile($event.currentTarget,item.code)">
+                    <input ref="picture" type="file" accept="image/*" capture="camera"
+                           @change="getFile($event.currentTarget,item.code)">
+                </div>
+            </h4>
+            <ul class="upload">
+                <li class="upload-item" v-for="(item, index) in item.fileIds" :key="index"
+                    :style="{'background-image':`url(${item.fileUrl})`}">
+                    <i class="iconfont scene_Staging-shibai1" @click="deleteImgItem(index)"></i>
+                </li>
+            </ul>
+        </div>
+        <group>
+            <x-input title="手机号" v-model="form.contMblNo" placeholder="请输入" text-align="right" :max="11"></x-input>
+        </group>
+        <f-button @on-click="submit()">提交</f-button>
+
+
+        <van-action-sheet v-model="showSelect" :close-on-click-overlay="false" cancel-text="取消" :actions="nav"
+                          @select="handleSelect">
+    </van-action-sheet> -->
+  </div>
+</template>
+
+<script>
+import { compress } from "@/utils/index";
+import { Actionsheet } from "vux";
+import Vue from "vue";
+import { Uploader } from "vant";
+import Ipt from "../../../../components/common/h-ipt";
+Vue.use(Uploader);
+export default {
+  name: "xyg_upload",
+  data() {
+    return {
+      pic: "",
+      showSelect: false,
+      nav: [
+        {
+          name: "拍照"
+        },
+        {
+          name: "从手机相册选择"
+        }
+      ],
+      form: {
+        orderId: "",
+        contMblNo: "",
+        fileIds: []
+      },
+      fileTypeArr: [],
+      currentItem: {}
+    };
+  },
+  components: {
+    Actionsheet,
+    Ipt
+  },
+  props: ["orderId"],
+  created() {
+    this.form.orderId = this.orderId;
+    this.$api.h_getXygFileType().then(res => {
+      let list = res.body || [];
+      this.fileTypeArr = list.map(item => {
+        return {
+          ...item,
+          fileIds: []
+        };
+      });
+      console.log(this.fileTypeArr)
+    });
+  },
+  methods: {
+    uploadSectionFile(f, t) {
+      //	图片上传
+      let self = this;
+      let Orientation;
+      let ndata;
+      let pic;
+      if (t.size <= 1 * 1024 * 1024) {
+        console.log("未压缩");
+        //判断图片是否小于1M,是就直接上传
+        ndata = f;
+        self.postImg(ndata);
+      } else {
+        //反之压缩图片
+        //BASE64转图片
+        var arr = f.split(","),
+          mime = arr[0].match(/:(.*?);/)[1],
+          bstr = atob(arr[1]),
+          n = bstr.length,
+          u8arr = new Uint8Array(n);
+        while (n--) {
+          u8arr[n] = bstr.charCodeAt(n);
+        }
+        pic = new File([u8arr], t.name, { type: mime });
+        let reader = new FileReader();
+        // 将图片将转成 base64 格式
+        reader.readAsDataURL(pic);
+        // 读取成功后的回调
+        reader.onloadend = function() {
+          let result = this.result;
+          //let result = f;
+          let img = new Image();
+          img.src = result;
+          img.onload = function() {
+            let data = self.compress(img, Orientation);
+            self.headerImage = data;
+            ndata = self.compress(img, Orientation);
+            //console.log('111',self.headerImage)
+            self.postImg(ndata);
+          };
+        };
+      }
+    },
+
+    async postImg(ndata) {
+      let self = this;
+      var FileUpload = function(ndata) {
+        //console.log(index)
+        self.$api
+          .uploadFile({
+            fileType:6304,
+            base64Data: ndata.split(",")[1], // 文件base64
+            suffix: ndata
+              .split(",")[0]
+              .split(";")
+              ["0"].split("/")[1]
+          })
+          .then(res => {
+            console.log("res", res.body);
+            console.log("self.fileTypeAr", self.fileTypeAr);
+            self.pic = ndata
+            //self.currentItem.fileIds.push(res.body)
+            //self.fileTypeArr.fileIds.push(res.body)
+            if(self.form.fileIds.length<1){
+                self.form.fileIds.push(res.body.id)
+            }else{
+                self.form.fileIds.shift()
+                self.form.fileIds.push(res.body.id)
+            }
+          });
+      };
+      await FileUpload(ndata);
+    },
+    compress(img, Orientation) {
+      let canvas = document.createElement("canvas");
+      let ctx = canvas.getContext("2d");
+      //瓦片canvas
+      let tCanvas = document.createElement("canvas");
+      let tctx = tCanvas.getContext("2d");
+      let initSize = img.src.length;
+      let width = img.width;
+      let height = img.height;
+      //如果图片大于四百万像素,计算压缩比并将大小压至400万以下
+      let ratio;
+      if ((ratio = (width * height) / 4000000) > 1) {
+        console.log("大于400万像素");
+        ratio = Math.sqrt(ratio);
+        width /= ratio;
+        height /= ratio;
+      } else {
+        ratio = 1;
+      }
+      canvas.width = width;
+      canvas.height = height;
+      // 		铺底色
+      ctx.fillStyle = "#fff";
+      ctx.fillRect(0, 0, canvas.width, canvas.height);
+      //如果图片像素大于100万则使用瓦片绘制
+      let count;
+      if ((count = (width * height) / 1000000) > 1) {
+        console.log("超过100W像素");
+        count = ~~(Math.sqrt(count) + 1); //计算要分成多少块瓦片
+        //            计算每块瓦片的宽和高
+        let nw = ~~(width / count);
+        let nh = ~~(height / count);
+        tCanvas.width = nw;
+        tCanvas.height = nh;
+        for (let i = 0; i < count; i++) {
+          for (let j = 0; j < count; j++) {
+            tctx.drawImage(
+              img,
+              i * nw * ratio,
+              j * nh * ratio,
+              nw * ratio,
+              nh * ratio,
+              0,
+              0,
+              nw,
+              nh
+            );
+            ctx.drawImage(tCanvas, i * nw, j * nh, nw, nh);
+          }
+        }
+      } else {
+        ctx.drawImage(img, 0, 0, width, height);
+      }
+      //修复ios上传图片的时候 被旋转的问题
+      if (Orientation != "" && Orientation != 1) {
+        switch (Orientation) {
+          case 6: //需要顺时针(向左)90度旋转
+            this.rotateImg(img, "left", canvas);
+            break;
+          case 8: //需要逆时针(向右)90度旋转
+            this.rotateImg(img, "right", canvas);
+            break;
+          case 3: //需要180度旋转
+            this.rotateImg(img, "right", canvas); //转两次
+            this.rotateImg(img, "right", canvas);
+            break;
+        }
+      }
+      //进行最小压缩
+      let ndata = canvas.toDataURL("image/jpeg", 0.1);
+
+      //console.log("压缩前:" + initSize);
+      //console.log("压缩后:" + ndata.length);
+      //console.log("ndata:" + ndata);
+
+      console.log(
+        "压缩率:" + ~~((100 * (initSize - ndata.length)) / initSize) + "%"
+      );
+      tCanvas.width = tCanvas.height = canvas.width = canvas.height = 0;
+
+      return ndata;
+    },
+    afterRead(file) {
+       this.uploadSectionFile(file.content, file.file) 
+    },
+    changeShowselect(item) {
+      if (item.fileIds.length) {
+        this.$tool.toast(`最多上传一张照片~`);
+        return;
+      }
+      this.showSelect = true;
+      this.currentItem = item;
+    },
+    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.92,
+            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);
+        };
+      });
+    },
+    handleSelect(item, index) {
+      if (index === 0) {
+        this.$refs["picture"][0].click();
+      } else {
+        this.$refs["photo"][0].click();
+      }
+      this.showSelect = false;
+    },
+    // 删除图片
+    deleteImgItem(index) {
+      this.currentItem.fileIds.splice(index, 1);
+    },
+    // 获取base64
+    getFile(el, fileType) {
+      let file = el.files[0];
+      if (typeof file === "undefined") return;
+      let reader = new FileReader(),
+        that = this;
+      reader.readAsDataURL(file);
+      reader.onload = function() {
+        that.imgCompress(this.result).then(base64 => {
+          that.upload(base64.split(",")[1], file.type.split("/")[1], fileType);
+        });
+      };
+    },
+    //上传文件
+    upload(base64, suffix, fileType) {
+      let params = {
+        fileType,
+        suffix,
+        base64Data: base64
+      };
+      console.log(fileType)
+      this.$api.uploadFile(params).then(res => {
+        this.currentItem.fileIds.push(res.body);
+      });
+    },
+    // 提交保存
+    submit() {
+      let form = this.form,
+        tel = form.contMblNo;
+
+      let len = this.fileTypeArr.length;
+      console.log(this.fileTypeArr)
+    //   for (let index = 0; index < len; index++) {
+    //     const item = this.fileTypeArr[index];
+    //     if (item.fileIds.length === 0) {
+    //       this.$tool.toast(`请上传${item.name}`);
+    //       return;
+    //     }
+    //   }
+        if(form.fileIds.length<1){
+            this.$tool.toast(`请上传合约凭证截图`)
+            return
+        }
+      if (tel.length === 0) {
+        this.$tool.toast("请输入电话号码");
+        return;
+      }
+
+      if (!this.$tool.checkPhone(tel)) {
+        this.$tool.toast("请输入正确的电话号码");
+        return;
+      }
+      let params = {
+        orderId: form.orderId,
+        contMblNo: tel,
+        fileIds: this.form.fileIds
+      };
+        
+    //   let fileIds = [];
+
+    //   for (let k = 0; k < len; k++) {
+    //     const item = this.fileTypeArr[k];
+    //     let arr = item.fileIds;
+    //     arr.forEach(child => {
+    //       fileIds.push(child.id);
+    //     });
+    //     // fileIds.push(...item.fileIds);
+    //   }
+
+      //params.fileIds = fileIds;
+      this.$api.h_uploadXygProtocol(params).then(res => {
+        this.$tool.toast("提交成功");
+        this.$router.go(-1);
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.zxh-upload-box {
+  padding-top: 56px;
+  background-color: #f1f1f1;
+  .up-div {
+    width: 100%;
+    height: 250px;
+    background: rgba(255, 255, 255, 1);
+    box-shadow: 1px 5px 13px 0px rgba(0, 0, 0, 0.08);
+    padding: 20px;
+    box-sizing: border-box;
+    p:nth-of-type(1) {
+      font-size: 14px;
+      font-family: PingFang SC;
+      font-weight: 500;
+      color: rgba(51, 51, 51, 1);
+      margin-bottom: 10px;
+    }
+    .upload-div {
+      width: 100px;
+      height: 100px;
+      background: rgba(249, 250, 255, 1);
+      border: 1px dashed rgba(205, 211, 246, 1);
+      border-radius: 4px;
+      text-align: center;
+      line-height: 100px;
+      img {
+        width: 100%;
+        height: 100%;
+      }
+      i {
+        font-size: 30px;
+        color: #8365e1;
+      }
+    }
+    p:nth-of-type(2) {
+      margin: 16px 0 10px 0;
+      font-size: 13px;
+      font-family: PingFang SC;
+      font-weight: 500;
+      color: rgba(153, 153, 153, 1);
+    }
+  }
+  .btn {
+    width: 88%;
+    height: 44px;
+    background: rgba(137, 110, 219, 1);
+    border-radius: 22px;
+    color: white;
+    outline: none;
+    border: 0;
+    margin-left: 6%;
+    margin-top: 37px;
+  }
+}
+
+.content {
+  margin-bottom: 10px;
+  padding-bottom: 12px;
+  background-color: @color-white;
+
+  .title {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 0 12px;
+    height: 49px;
+    line-height: 49px;
+    font-size: @font-size-base;
+    font-weight: @font-weight-base;
+
+    input {
+      display: none;
+    }
+  }
+}
+
+.upload {
+  margin: 5px 12px 0;
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  flex-wrap: wrap;
+
+  .upload-item {
+    margin-right: 12px;
+    width: 109px;
+    height: 109px;
+    position: relative;
+    background-position: center;
+    background-size: contain;
+    background-repeat: no-repeat;
+    margin-bottom: 12px;
+
+    &:nth-child(3n) {
+      margin-right: 0;
+    }
+
+    .iconfont {
+      position: absolute;
+      right: 3px;
+      top: 0;
+    }
+  }
+}
+
+#file {
+  display: none;
+}
+
+.scene_Staging-xiangji {
+  fill: @color-border-theme;
+  color: @color-border-theme;
+  font-size: 20px;
+}
+</style>
diff --git a/src/views/old/store/xyg/xyg-mation.vue b/src/views/old/store/xyg/xyg-mation.vue
new file mode 100644
index 0000000..d3dd58d
--- /dev/null
+++ b/src/views/old/store/xyg/xyg-mation.vue
@@ -0,0 +1,318 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-03-19 10:25:57
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-06-28 10:28:58
+ * @Description: 
+ -->
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-10-21 17:19:32
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-11-04 17:28:32
+ * @Description:
+ -->
+<template>
+  <div class="hbhy-big-box">
+    <!-- <van-nav-bar title="办理套餐" left-arrow @click-left="onClickLeft" /> -->
+    <!-- <x-header title="办理套餐" :left-options="{backText:''}"></x-header> -->
+    <v-navbar title="办理套餐" fixed></v-navbar>
+    <div class="color-box"></div>
+    <div class="package-information">
+      <div class="tit">
+        <p>套餐信息</p>
+      </div>
+      <div class="package-tariff">
+        <van-field
+        class="myStyle"
+          disabled
+          custom-style="color:#333333"
+          v-model="query.packageTariff"
+          label="套餐资费"
+          placeholder="请输入套餐资费"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="total-repayment">
+        <van-field
+        class="myStyle"
+          disabled
+          v-model="query.totalRepayment"
+          label="总还款额"
+          placeholder="请输入总还款额"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="monthly-repayment">
+        <van-field
+        class="myStyle"
+          disabled
+          v-model="query.monthlyRepayment"
+          label="每月还款"
+          placeholder="请输入每月还款"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="trim">
+        <van-field
+        class="myStyle"
+          disabled
+          v-model="query.trim"
+          label="还款期数"
+          placeholder="请输入还款期数"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="merchant-arrival">
+        <van-field
+          disabled
+          v-model="query.merchantArrival"
+          label="商户到账"
+          placeholder="请输入商户到账"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+    </div>
+    <div class="btn-grounp">
+        <button @click="goHbPage">花呗分期</button>
+        <button @click="goCxPage">储蓄卡分期</button>
+    </div>
+  </div>
+</template>
+<script>
+import Vue from "vue";
+import { NavBar } from "vant";
+import { Field } from "vant";
+import { Button } from "vant";
+import { Notify } from "vant";
+
+Vue.use(Notify);
+Vue.use(Button);
+Vue.use(Field);
+Vue.use(NavBar);
+export default {
+  data() {
+    return {
+      query: {
+        merchantArrival: "", //商户到账
+        trim: "", //分期期数
+        monthlyRepayment: "", //每月还款
+        totalRepayment: "", //总还款额
+        packageTariff: "", //套餐资费
+        contId: "", //套餐id
+        contName: "" //套餐名称
+      },
+      userName: "", //用户名
+      userNumber: "", //用户手机号
+      tradeName: "", //商品名称
+      contMblNo:"",//合约手机号
+      idNo:""//身份证号
+    };
+  },
+  mounted() {
+    this.query = this.$route.query;
+    console.log(this.query);
+  },
+  methods: {
+    goCxPage(){
+        this.$route.push({
+            path:"/xyg/list",
+            query:this.query
+        })
+    },
+    goHbPage(){
+        this.$route.push({
+            path:"/xyg/list",
+            query:this.query
+        })
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    createdQRCode() {
+      if (
+        this.userName == "" ||
+        this.userNumber == "" ||
+        this.tradeName == "" ||
+        this.contMblNo == "" ||
+        this.idNo == ""
+      ) {
+        Notify({ type: "primary", message: "姓名、入网号码、合约号码、身份证号、商品名称不能为空" });
+        return;
+      }
+      let params = {
+        contId: this.query.contId,
+        goodsName: this.tradeName,
+        userName: this.userName,
+        userMblNo: this.userNumber,
+        contMblNo:this.contMblNo,
+        idNo:this.idNo
+      };
+      this.$api.hbhyjCreate(params).then(res => {
+        let body = res.body;
+        this.orderId = body.orderId;
+        this.payQrCodeUrl = body.payQrCodeUrl;
+        this.totalAmount = body.totalAmount;
+        // this.trial.repayPerMonth = body.repayPerMonth;
+        // this.trial.feeRate = body.feeRate;
+        this.showConfirm = true;
+        if (body.payQrCodeUrl) {
+          sessionStorage.setItem("hbpayQrCodeUrl", body.payQrCodeUrl);
+        }
+        this.$router.push({
+          path: "/hb-getHBQRCode",
+          query: {
+            orderId: body.orderId,
+            payQrCodeUrl: body.payQrCodeUrl,
+            totalAmount: body.totalAmount,
+            term: this.query.trim,
+            typeId: this.query.typeId || ""
+          }
+        });
+      });
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.hbhy-big-box {
+  & {
+    position: relative;
+    background-color: #f5f5f5;
+    height: auto;
+    padding-bottom: 20px;
+    min-height: 100vh;
+  }
+  .color-box {
+    width: 100%;
+    height: 260px;
+    background: linear-gradient(
+      180deg,
+      rgba(85, 78, 128, 1),
+      rgba(66, 61, 93, 1)
+    );
+  }
+  .user-information {
+    & {
+      position: absolute;
+      width: 90%;
+      height: 220px;
+      background-color: white;
+      left: 5%;
+      top: 98px;
+      border-radius: 6px;
+    }
+    div {
+      height: 50px;
+      width: 100%;
+      border-bottom: 1px solid #f5f5f5;
+    }
+    .tit {
+      p {
+        color: #333333;
+        font-size: 16px;
+        font-weight: bold;
+        line-height: 50px;
+        margin-left: 5px;
+      }
+      p::before {
+        width: 3px;
+        height: 16px;
+        content: "";
+        background: rgba(137, 110, 219, 1);
+        border-radius: 0px 3px 0px 3px;
+        // left: -8px;
+        // top: 24px;
+        // position: absolute;
+        display: inline-block;
+        margin-right: 5px;
+      }
+    }
+  }
+  .package-information {
+    & {
+      width: 94%;
+      height: 302px;
+      background-color: white;
+      margin: auto;
+      margin-top: -150px;
+      border-radius:6px;
+    }
+    div:not(:last-child) {
+      height: 50px;
+      width: 100%;
+      border-bottom: 1px solid #f5f5f5;
+    }
+    /deep/ .van-field__control:disabled {
+        //color: #333333;
+        -webkit-text-fill-color: #333333!important;
+        background-color: transparent;
+        opacity: 1;
+      }
+    .tit {
+      p {
+        color: #333333;
+        font-size: 16px;
+        font-weight: bold;
+        line-height: 50px;
+        margin-left: 5px;
+      }
+      p::before {
+        width: 3px;
+        height: 16px;
+        content: "";
+        background: rgba(137, 110, 219, 1);
+        border-radius: 0px 3px 0px 3px;
+        // left: -8px;
+        // top: 24px;
+        // position: absolute;
+        display: inline-block;
+        margin-right: 5px;
+      }
+    }
+  }
+  .btn-grounp{
+      margin-top: 40px;
+      color: #fff;
+      text-align: center;
+      button:nth-of-type(1){
+            width:160px;
+            height:44px;
+            background:rgba(137,110,219,1);
+            border-radius:22px;
+            outline: none;
+            border: 0;
+            margin-right: 12px;
+      }
+      button:nth-of-type(2){
+            width:160px;
+            height:44px;
+            background:rgba(81,74,120,1);
+            border-radius:22px;
+            outline: none;
+            border: 0;
+      }
+  }
+}
+
+</style>
diff --git a/src/views/old/store/xyg/xygHb.vue b/src/views/old/store/xyg/xygHb.vue
new file mode 100644
index 0000000..8f7e597
--- /dev/null
+++ b/src/views/old/store/xyg/xygHb.vue
@@ -0,0 +1,419 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-03-19 12:38:43
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 10:54:46
+ * @Description: 信用购花呗办理套餐页面
+ -->
+<template>
+  <div class="hbhy-big-box">
+    <!-- <van-nav-bar title="办理套餐" left-arrow @click-left="onClickLeft" /> -->
+    <!-- <x-header title="办理套餐" :left-options="{backText:''}"></x-header> -->
+    <v-navbar title="办理套餐" fixed></v-navbar>
+    <div class="color-box"></div>
+    <div class="user-information">
+      <div class="tit">
+        <p>用户信息</p>
+      </div>
+      <div class="user-cont">
+        <van-field
+                v-model="contMblNo"
+                maxlength="11"
+                label="合约号码"
+                placeholder="请输入用户合约号码"
+                input-align="right"
+                label-class="input-text"
+                style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="user-name">
+        <van-field
+          v-model="userName"
+          label="用户姓名"
+          placeholder="请输入用户姓名"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="user-idno">
+        <van-field
+                v-model="idNo"
+                maxlength="18"
+                label="身份证号"
+                placeholder="请输入用户身份证号"
+                input-align="right"
+                label-class="input-text"
+                style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="user-number">
+        <van-field
+          v-model="tradeName"
+          label="商品名称"
+          placeholder="请输入商品名称"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+    </div>
+    <div class="package-information">
+      <div class="tit">
+        <p>套餐信息</p>
+      </div>
+      <div class="package-tariff">
+        <van-field
+        class="myStyle"
+          disabled
+          custom-style="color:#333333"
+          v-model="query.packagePrices"
+          label="套餐资费"
+          placeholder="请输入"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="total-repayment">
+        <van-field
+        class="myStyle"
+          disabled
+          v-model="query.totalPayments"
+          label="总还款额"
+          placeholder="请输入"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="monthly-repayment">
+        <van-field
+        class="myStyle"
+          disabled
+          v-model="query.retFee"
+          label="每月还款"
+          placeholder="请输入"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="trim">
+        <van-field
+        class="myStyle"
+          disabled
+          v-model="query.term"
+          label="还款期数"
+          placeholder="请输入"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="merchant-arrival">
+        <van-field
+          disabled
+          v-model="query.prodAmt"
+          label="结算金额"
+          placeholder="请输入"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+        <van-field
+          disabled
+          v-model="platRatePr"
+          label="智享服务费率"
+          label-width="150px"
+          placeholder="请输入"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+        <van-field
+          disabled
+          v-model="zfbRatePr"
+          label="花呗分期手续费率"
+          label-width="150px"
+          placeholder="请输入"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+    </div>
+    <van-button
+      round
+      type="default"
+      color="#896EDB"
+      style="margin-left:10%;margin-top:125px;width:80%;background:#896EDB;color:#fff"
+      @click="createdQRCode"
+    >生成二维码</van-button>
+    <Vdialog @cancel="cancel" :show="showDia"></Vdialog>
+  </div>
+</template>
+<script>
+import Vue from "vue";
+import { NavBar } from "vant";
+import { Field } from "vant";
+import { Button } from "vant";
+import { Notify } from "vant";
+import Vdialog from "@/components/common/v-dialog.vue";
+
+Vue.use(Notify);
+Vue.use(Button);
+Vue.use(Field);
+Vue.use(NavBar);
+export default {
+  components:{
+    Vdialog
+  },
+  data() {
+    return {
+      showDia:false,
+      query: {
+        platRate:'',
+        zfbRate:'',
+        prodAmt: "", //结算金额
+        term: "", //分期期数
+        retFee: "", //月还款
+        totalPayments: "", //总还款额
+        packagePrices: "", //套餐资费
+        // contId: "", //套餐id
+        // contName: "" //套餐名称
+      },
+      mblNo:'',//
+      userName: "", //用户名
+      //userNumber: "", //用户入网号码
+      tradeName: "", //商品名称
+      contMblNo:"",//合约手机号
+      idNo:"",//身份证号
+      //prodName:'',//商品名称
+    };
+  },
+  computed:{
+            zfbRatePr(){
+                if(this.query.zfbRate){
+                    return this.query.zfbRate + '%'
+                }else{
+                    return ''
+                }
+                
+            },
+            platRatePr(){
+                if(this.query.platRate){
+                    return this.query.platRate + '%'
+                }else{
+                    return ''
+                }
+                
+            }
+        },
+  created(){
+    if(sessionStorage.hb_session_info&&this.$route.query.isCreateOrderPush){
+      let hb_session_info = JSON.parse(sessionStorage.hb_session_info)
+        this.tradeName=hb_session_info.goodsName
+        this.userName=hb_session_info.userName
+        this.contMblNo=hb_session_info.contMblNo
+        this.idNo=hb_session_info.idNo
+    }
+  },
+  mounted() {
+    this.query = this.$route.query;
+    this.contMblNo = this.$route.query.mblNo
+    console.log(this.query);
+  },
+  methods: {
+    cancel(val){
+      this.showDia = val
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    createdQRCode() {
+      if (
+        this.userName == "" ||
+        this.tradeName == "" ||
+        this.contMblNo == "" ||
+        this.idNo == ""
+      ) {
+        Notify({ type: "primary", message: "姓名、合约号码、身份证号、商品名称不能为空" });
+        return;
+      }
+      // 用来整体存储缓存数据
+      let hb_session_info = {
+        goodsName: this.tradeName,
+        userName: this.userName,
+        contMblNo:this.contMblNo,
+        idNo:this.idNo,
+      }
+      sessionStorage.hb_session_info = JSON.stringify(hb_session_info)
+
+      let params = {
+        //contId:this.query.contId,
+        goodsName: this.tradeName,
+        userName: this.userName,
+        contMblNo:this.contMblNo,
+        idNo:this.idNo,
+        seq:this.query.seq,
+        term:this.query.term,
+        capitalAmt:this.query.prodAmt,
+        zfbVersion: this.$route.query.zfbVersion
+      };
+      this.$api.xygOrderCreateHbOrder(params).then(res => {
+        let body = res.body;
+        this.orderId = body.orderId;
+        this.payQrCodeUrl = body.payQrCodeUrl;
+        this.totalAmount = body.totalAmount;
+        this.capitalAmt = body.capitalAmt
+        // this.trial.repayPerMonth = body.repayPerMonth;
+        // this.trial.feeRate = body.feeRate;
+        this.showConfirm = true;
+        if (body.payQrCodeUrl) {
+          sessionStorage.setItem("xygHbpayQrCodeUrl", body.payQrCodeUrl);
+        }
+        this.$router.push({
+          path: "/xyg-getXygHbQRCode",
+          query: {
+            orderId: body.orderId,
+            payQrCodeUrl: body.payQrCodeUrl,
+            totalAmount: body.totalAmount,
+            term: this.query.term,
+            typeId: this.query.typeId || "",
+            platRate: this.query.platRate,
+            zfbRate: this.query.zfbRate,
+            capitalAmt:this.capitalAmt
+          }
+        });
+      },err=>{
+        if(err.errorCode===30006007){
+            this.showDia = true
+        }
+      });
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.hbhy-big-box {
+  & {
+    position: relative;
+    background-color: #f5f5f5;
+    height: auto;
+    padding-bottom: 60px;
+    min-height: 100vh;
+  }
+  .color-box {
+    width: 100%;
+    height: 260px;
+    background: linear-gradient(
+      180deg,
+      rgba(85, 78, 128, 1),
+      rgba(66, 61, 93, 1)
+    );
+  }
+  .user-information {
+    & {
+      position: absolute;
+      width: 94%;
+      height: 220px;
+      background-color: white;
+      left: 3%;
+      top: 98px;
+      border-radius: 6px;
+    }
+    div {
+      height: 50px;
+      width: 100%;
+      border-bottom: 1px solid #f5f5f5;
+    }
+    .tit {
+      p {
+        color: #333333;
+        font-size: 16px;
+        font-weight: bold;
+        line-height: 50px;
+        margin-left: 5px;
+      }
+      p::before {
+        width: 3px;
+        height: 16px;
+        content: "";
+        background: rgba(137, 110, 219, 1);
+        border-radius: 0px 3px 0px 3px;
+        // left: -8px;
+        // top: 24px;
+        // position: absolute;
+        display: inline-block;
+        margin-right: 5px;
+      }
+    }
+  }
+  .package-information {
+    & {
+      width: 94%;
+      height: 302px;
+      background-color: white;
+      margin: auto;
+      margin-top: 100px;
+      border-radius:6px;
+    }
+    div:not(:last-child) {
+      height: 50px;
+      width: 100%;
+      border-bottom: 1px solid #f5f5f5;
+    }
+    /deep/ .van-field__control:disabled {
+        //color: #333333;
+        -webkit-text-fill-color: #333333!important;
+        background-color: transparent;
+        opacity: 1;
+      }
+    .tit {
+      p {
+        color: #333333;
+        font-size: 16px;
+        font-weight: bold;
+        line-height: 50px;
+        margin-left: 5px;
+      }
+      p::before {
+        width: 3px;
+        height: 16px;
+        content: "";
+        background: rgba(137, 110, 219, 1);
+        border-radius: 0px 3px 0px 3px;
+        // left: -8px;
+        // top: 24px;
+        // position: absolute;
+        display: inline-block;
+        margin-right: 5px;
+      }
+    }
+  }
+}
+</style>
+
diff --git a/src/views/old/store/xyg/xygList.vue b/src/views/old/store/xyg/xygList.vue
new file mode 100644
index 0000000..3e556bf
--- /dev/null
+++ b/src/views/old/store/xyg/xygList.vue
@@ -0,0 +1,557 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-12-26 10:37:53
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-13 17:07:22
+ * @Description: 
+ -->
+<template>
+    <div class="order-hb-box h-100-g">
+        <van-nav-bar title="运营商消费">
+          <i class="iconfont iconzuojiantou" slot="left" style="font-size:18px;color:#fff;font-weight:blod" @click="goFrom"></i>
+        </van-nav-bar>
+        <div class="top-back">
+            <div class="big-cri">
+
+            </div>
+            <div class="small-cri">
+
+            </div>
+            <!-- <div class="btn-grounp">
+                <span class="btn-hb" ref="hb" @click="showHb">花呗分期</span>
+                <span class="btn-cx" ref="cx" @click="showCx">储蓄卡分期</span>
+                <span class="squer" ref="sqe"></span>
+            </div> -->
+        </div>
+        <div v-if="list.length > 0" class="list-box">
+             <MyList :defScroll="10" :finished="finished" :loading="loading" @scroll="init">
+               <div class="list-div" v-for="(item,i) in list" :key="i" @click="goHandle(item)">
+                   <p class="list-top">
+                       <i class="iconfont iconshanghuzhuce"></i>
+                       <span>{{item.mblNo}}</span>
+                       <span v-if="item.creTime">{{item.creTime | timeformat('yyyy-MM-dd HH:mm:ss')}}</span>
+                   </p>
+                   <div class="list-left">
+                       <p>{{item.prodAmt}}</p>
+                       <p>结算金额(元)</p>
+                   </div>
+                   <div class="list-right">
+                       <p>{{item.term}}</p>
+                       <p>分期期数(月)</p>
+                   </div>
+               </div>
+             </MyList>
+        </div>
+        <div v-else class="nothing-div">
+            <img class="nothing-pic" src="../../../../assets/img/xygpic.png" alt="暂无信用购数据">
+            <p class="nothing-text">暂无订单</p>
+        </div>
+        <van-popup v-model="show" closeable :style="{ width: '280px' }">
+            <template>
+                <div class="pro-div">
+                    <p>录入营业员编码</p>
+                    <p>该编号为营业员的移动工号,请确保准确无误,否则将无法为用户办理信用购业务。</p>
+                    <input type="text" placeholder="请输入营业员编码" v-model="iptObj.empCode">
+                    <input type="text" placeholder="请输入营业厅编码" v-model="iptObj.orgBizCode">
+                    <button @click="bindInfo">确定</button>
+                </div>
+            </template>
+        </van-popup>
+    </div>
+</template>
+<script>
+import Vue from 'vue';
+import MyList from "../../../../components/common/h-list"
+import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+import {
+        getParams
+    } from '@/utils/index';
+import { Popup } from 'vant';
+import { Toast } from 'vant';
+
+Vue.use(Toast);
+Vue.use(Popup);
+export default {
+    components:{
+        MyList
+    },
+    data() {
+        return {
+            iptObj:{
+                empCode: "",
+                orgBizCode: ""
+            },//弹出层输入框值
+            getWhichList:30000012,//判断获取花呗还是储蓄卡列表
+            show:false,//弹出层控制
+            goIdList:[],//判断跳转页面
+            lastId:'',//分页最后一笔订单ID
+            loading: false,
+            finished: false,
+            list: [],
+            typeId:'',
+            prodId:'',
+            mblNo:'',
+            prodAmt:"",
+            seq:"",
+            prodName:'',
+            monthlyFees:'',
+        }
+    },
+    created(){
+        this.typeId = this.$route.query.typeId
+        this.getCkeck()
+        //this.init()
+    },
+    methods:{
+        bindInfo(){
+            this.$api.xygOrderBindInfo(this.iptObj).then(res=>{
+                this.show = false
+                this.init()
+            })
+        },//绑定信息
+
+        getCkeck(){
+            this.$api.xygOrderCheckInfo().then(res=>{
+                if(res.body.isbind == 1){
+                    this.init()
+                }else{
+                    this.show = true
+                }
+            })
+        },//初始化获取  是否有绑定信息 有显示列表,没有显示绑定信息的弹出层
+
+        showCx(){
+            this.$refs.sqe.style["transform"] = `translateX(100%)` 
+            this.$refs.sqe.style["transition"] = `0.5s`
+            this.$refs.hb.style['color'] = `#fff`
+            this.$refs.cx.style['color'] = `#5C4CD0`
+            this.getWhichList = 30000011
+            this.list=[]
+            this.init()
+        },//tab切换储蓄卡
+
+        showHb(){
+            this.$refs.sqe.style["transform"] = `translateX(0%)` 
+            this.$refs.sqe.style["transition"] = `0.5s`
+            this.$refs.hb.style['color'] = `#5C4CD0`
+            this.$refs.cx.style['color'] = `#fff`
+            this.getWhichList = 30000012
+            this.list=[]
+            this.init()
+        },//tab切换花呗分期
+
+        // 返回上一页
+            goFrom(){
+                this.$router.go(-1)
+            },
+        // 跳转办单
+        goHandle(item){
+            this.prodId = item.prodId
+            this.mblNo = item.mblNo
+            this.prodAmt = item.prodAmt
+            this.seq = item.seq
+            this.prodName = item.prodName
+            if(item.hasCont == 0){
+                Toast('您暂不具有该合约,请分配以后重试');
+                return
+            }
+            
+            var path
+            if(this.getWhichList==30000011 && item.isUse == 1){
+                path = '/xyg/createcode'
+            }else if(this.getWhichList==30000011 && item.isUse == 0){
+                Toast('暂未开通');
+                return
+            } 
+            
+            if(this.getWhichList==30000012 && item.isUse == 1){ 
+                path = '/xyg/xygHb'
+            }else if(this.getWhichList==30000012 && item.isUse == 0){
+                Toast('暂未开通');
+                return
+            }
+            
+            console.log(path)
+            this.$router.push({
+                path:path,
+                query:{
+                //    contId:item.contId,
+                   prodId:this.prodId,
+                   mblNo:this.mblNo,
+                   prodAmt:this.prodAmt,
+                   seq: this.seq,
+                   prodName:this.prodName,
+                   term:item.term,
+                   typeId:this.typeId,
+                   monthlyFees:item.monthlyFees,
+                   totalPayments:item.totalPayments,
+                   retFee:item.retFee,
+                   packagePrices:item.packagePrices,
+                   platRate:item.platRate,
+                   zfbRate:item.zfbRate,
+                   zfbVersion: this.$route.query.zfbVersion
+                }
+            })
+        },    
+        //获取订单列表
+        init() {
+            if(this.list.length>0){
+                this.lastId = this.list[this.list.length-1].id
+            }
+            this.$api.getunhandingList({
+                prodId:this.getWhichList,
+                id:this.lastId
+            }).then(res=>{
+                this.goIdList = res.body.prodIds
+                if(res.body.orderItemInfos.length<10){
+                    this.loading = false
+                    this.finished = true
+                    this.list = [...this.list,...res.body.orderItemInfos]
+                }else{
+                    this.loading = false
+                    this.finished = false
+                    this.list = [...this.list,...res.body.orderItemInfos]
+                }
+            }).catch((err) => {
+                this.finished = true;
+                this.loading = false;
+            }); 
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+
+.order-hb-box {
+        background-color:#fff;
+        position: relative;
+    }
+    .van-hairline--bottom::after {
+        border: 0;
+    }
+    .van-nav-bar {
+        background-color: rgba(255,255,255,0);
+    }
+    .van-nav-bar__title {
+        max-width: 60%;
+        margin: 0 auto;
+        color: #fff;
+        font-weight: bold;
+        font-size: 16px;
+    }
+    .pro-div{
+        &{
+            padding: 30px 20px 16px 20px;
+            text-align: center;
+        }
+        p:nth-of-type(1){
+            font-size:16px;
+            font-family:PingFang SC;
+            font-weight:500;
+            color:rgba(0,0,0,1);
+            text-align: center;
+            margin-bottom: 12px;
+        }
+        p:nth-of-type(2){
+            font-size:12px;
+            font-family:PingFang SC;
+            font-weight:500;
+            color:rgba(153,153,153,1);
+            margin-bottom: 23px;
+        }
+        input{
+            width:244px;
+            height:36px;
+            background:rgba(255,255,255,1);
+            border:1px solid rgba(230,230,230,1);
+            border-radius:18px;
+            padding-left: 21px;
+            box-sizing: border-box;
+            margin-bottom: 31px;
+        }
+        button{
+            width:175px;
+            height:36px;
+            background:rgba(137,110,219,1);
+            border-radius:18px;
+            color:#fff;
+            border: 0;
+            outline: none;
+        }
+    }
+    .top-back{
+        width:100%;
+        height:130px;
+        background:linear-gradient(180deg,rgba(137,110,219,1),rgba(90,74,207,1));
+        position: relative;
+        overflow: hidden;
+        top: -46px;
+        .big-cri{
+            width:92px;
+            height:92px;
+            background:rgba(255,255,255,1);
+            opacity:0.1;
+            border-radius:50%;
+            position: absolute;
+            top: -13px;
+            right: -46px;
+        }
+        .small-cri{
+            width:55px;
+            height:55px;
+            background:rgba(255,255,255,1);
+            opacity:0.05;
+            border-radius:50%;
+            position: absolute;
+            top: 49px;
+            left: 7px;
+        }
+        .btn-grounp{
+            width:94%;
+            margin-left: 3%;
+            margin-top: 55px;
+            height:36px;
+            background:rgba(138,117,220,1);
+            border-radius:18px;
+            position: relative;
+            text-align: center;
+            line-height: 36px;
+            .squer{
+                display: inline-block;
+                width:50%;
+                height:36px;
+                background:rgba(255,255,255,1);
+                border-radius:18px;
+                position: absolute;
+                top: 0;
+                left: 0;
+            }
+            .btn-hb{
+                position: relative;
+                z-index: 100;
+                display: inline-block;
+                outline: none;
+                border: 0;
+                color:#5C4CD0;
+                width:49%;
+                height:36px;
+                border-radius:18px;
+            }
+            .btn-cx{
+                position: relative;
+                z-index: 100;
+                display: inline-block;
+                outline: none;
+                border: 0;
+                color:#fff;
+                width:49%;
+                height:36px;
+                border-radius:18px;
+            }
+        }
+    }
+    .list-box{
+        height: 83vh;
+        width: 100%;
+        overflow: scroll;
+        position: absolute;
+        top: 105px;
+        .list-div{
+            width:94%;
+            height:130px;
+            background:rgba(255,255,255,1);
+            box-shadow:0px 1px 19px 0px rgba(91,55,201,0.16);
+            border-radius:3px;
+            margin-left: 3%;
+            margin-bottom: 15px;
+            box-sizing: border-box;
+            padding: 18px 8px 0 8px;
+            position: relative;
+            .list-top{
+                border-bottom:1px solid #E5E5E5;
+                padding-bottom: 13px; 
+                i{
+                    font-size: 18px;
+                    color: #8365E1;
+                    display: inline-block;
+                    vertical-align: middle;
+                }
+                span:nth-of-type(1){
+                    font-size:16px;
+                    font-weight:bold;
+                    color:rgba(51,51,51,1);
+                    display: inline-block;
+                    vertical-align: middle;
+                    width: 40%;
+                }
+                span:nth-of-type(2){
+                    font-size: 12px;
+                    color: #666666;
+                    display: inline-block;
+                    vertical-align: middle;
+                    width: 50%;
+                    text-align: right;
+                }
+            }
+            .list-left::after{
+                content: '';
+                width:1px;
+                height:32px;
+                background:rgba(230,230,230,1);
+                position: absolute;
+                top: 73px;
+                left: 49%;
+            }
+            .list-left,.list-right{
+                display: inline-block;
+                width: 49%;
+                padding-top: 19px;
+                text-align: center;
+                p:nth-of-type(1){
+                    font-size:18px;
+                    font-family:PingFang SC;
+                    font-weight:bold;
+                    margin-bottom: 7px;
+                    color:rgba(51,51,51,1);
+                }
+                p:nth-of-type(2){
+                    font-size:12px;
+                    font-family:PingFang SC;
+                    font-weight:500;
+                    color:rgba(153,153,153,1);
+                }
+            }
+        }
+    }
+    .nothing-div{
+        text-align: center;
+        margin-top: 15vh;
+        .nothing-pic{
+            width: 165px;
+            height: 94px;
+        }
+        .nothing-text{
+            font-size:14px;
+            font-family:PingFang SC;
+            font-weight:500;
+            color:rgba(51,51,51,1);
+            margin-top: 16px;
+        }
+    }
+    .list-box::-webkit-scrollbar,.withdrawals-box::-webkit-scrollbar {
+        display: none;
+    }
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+    // .xyg-list-box{
+    //     min-height: 100vh;
+    //     background-color: #F5F5F7;
+    //     .order-list {
+    //         padding: 0 8px 30px;
+    //         .list-item {
+    //            width: 98%;
+    //            background: #fff;
+    //            padding:20px 8px 10px 8px; 
+    //            box-sizing: border-box;
+    //            margin: 10px 1%;
+    //         }
+    //         .amt-term{
+    //             position: relative;
+    //             .box::after{
+    //                 content: "";
+    //                 position: absolute;
+    //                 height: 36px;
+    //                 color: #EBEBEB;
+    //                 top: 0;
+    //                 right: 50%;
+    //                 border-right:1px solid #EBEBEB;
+    //             }
+    //             div{
+    //                 display: inline-block;
+    //                 width: 49%;
+    //                 text-align: center;
+    //                 p{
+    //                     margin-bottom:7px; 
+    //                 }
+    //                 p:nth-of-type(1){
+    //                     color: #2B2B2B;
+    //                     font-size: 18px;
+    //                     font-weight: bold;
+    //                 }
+    //                 p:nth-of-type(2){
+    //                     color: #989898;
+    //                     font-size: 12px;
+    //                 }
+    //             }
+    //         }
+    //         .tel-time{
+    //             background-color: #F7F5FB;
+    //             height: 40px; 
+    //             box-sizing: border-box;
+    //             padding: 0 5px;
+    //             margin-top:10px;
+    //             span{
+    //                 display: inline-block;
+    //                 line-height: 40px;
+    //                 width: 49%;
+    //             }
+    //             span:nth-of-type(1){
+    //                 font-size: 14px;
+    //                 color: #848485;
+    //             }
+    //             span:nth-of-type(2){
+    //                 text-align: right;
+    //                 font-size: 12px;
+    //                 color: #979796;
+    //             }
+    //         }
+    //     }
+    // }
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/zxh/createcode.vue b/src/views/old/store/zxh/createcode.vue
new file mode 100644
index 0000000..e21561d
--- /dev/null
+++ b/src/views/old/store/zxh/createcode.vue
@@ -0,0 +1,258 @@
+<!--
+ * @Descripttion: 智享云生成二维码
+ * @Author:TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-3-1 15:00:00
+ * @LastEditTime: 2019-09-02 11:13:02
+ -->
+<template>
+    <div class="contract-installment-zxh">
+        <x-header title="智享花" :left-options="{backText:''}"></x-header>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                合约信息
+            </div>
+            <selector title='合约套餐' placeholder='请选择' v-model="selectContract" :options='contractList'
+                :value-map="['contId','contName']" @on-change='contractChange' direction='rtl'></selector>
+            <x-input title='结算金额' v-model.trim="selectConInfo.capitalAmt" readonly text-align='right'><span slot="right"
+                    style="font-size: 14px;">元</span></x-input>
+            <x-input title='月缴话费' v-model.trim="selectConInfo.monthlyFees" readonly text-align='right'><span
+                    slot="right" style="font-size: 14px;">元</span></x-input>
+            <x-input title='期数' v-model.trim="selectConInfo.term" readonly text-align='right'><span slot="right"
+                    style="font-size: 14px;">期</span></x-input>
+        </group>
+        <f-space></f-space>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                商品信息
+            </div>
+            <x-input title='品牌' v-model.trim="goodsInfo.goodsBrand" placeholder='请输入' :max='10' text-align='right'>
+            </x-input>
+            <x-input title='名称' v-model.trim="goodsInfo.goodsName" placeholder='请输入' :max='10' text-align='right'>
+            </x-input>
+            <x-input title='型号' v-model.trim="goodsInfo.goodsModel" placeholder='请输入' :max='15' text-align='right'>
+            </x-input>
+            <x-input title='价格' v-model.trim="goodsInfo.goodsPrice" placeholder='请输入' :max='5' text-align='right'>
+            </x-input>
+            <x-input title='IMEI' v-model.trim="goodsInfo.goodsImei" placeholder='请输入' :max='20' text-align='right'>
+            </x-input>
+
+        </group>
+
+        <van-button class="btn" round @click="submit">生成二维码</van-button>
+    </div>
+</template>
+
+<script>
+    import {
+        XAddress
+    } from 'vux';
+    import QRCode from 'qrcode';
+    import IDValidator from '@/utils/IDValidator';
+
+    export default {
+        name: 'heyd_createcode',
+        components: {
+            XAddress
+        },
+        data() {
+            return {
+                cityList: [],
+                selectContract: '', // 选中的合约
+                // 合约信息
+                selectConInfo: {
+                    capitalAmt: '', // 结算金额
+                    monthlyFees: '', // 月缴话费
+                    term: '', // 期数
+                },
+                // 商品信息
+                goodsInfo: {
+                    goodsBrand: '', //商品品牌
+                    goodsName: '', //商品名称
+                    goodsModel: '', // 商品型号
+                    goodsPrice: '', // 价格
+                    goodsImei: '', // IMEI
+                },
+                contractList: [], // 合约列表
+            }
+        },
+        created() {
+            this.initWXToken(location.origin + location.pathname);
+            this.$api.h_contractList({
+                typeId: this.$route.query.typeId
+            }).then(res => {
+                this.contractList = res.body;
+            }, err => err);
+            this.$api.getArea().then(res => {
+                this.cityList = res.body.provList;
+            });
+        },
+        watch: {
+        },
+        methods: {
+            initWXToken(parUrl) {
+                this.$api.getTokenInfo({
+                    url: parUrl
+                }).then(
+                    function (res) {
+                        if (res.errorCode === 0) {
+                            // 第二步骤   只需要首页地址分享 ,需要在每次变化时调用
+                            wx.config({
+                                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+                                appId: res.body.appId,
+                                timestamp: res.body.timestamp, // 必填,生成签名的时间戳
+                                nonceStr: res.body.nonceStr, // 必填,生成签名的随机串
+                                signature: res.body.signature, // 必填,签名,见附录1
+                                jsApiList: [
+                                    'checkJsApi',
+                                    'scanQRCode',
+                                    'getLocation'
+                                ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+                            });
+                        }
+                    },
+                    function (error) {
+                        if (error.response) {
+                            console.log(error.response);
+                        }
+                    }
+                );
+            },
+            getLocation(){
+                console.log('getLocation');
+                let _this = this;
+                wx.getLocation({
+                    type: 'wgs84',
+                    success: function (res) {
+                        console.log(JSON.stringify(res));
+                        let longitude = res.longitude
+                        let latitude = res.latitude
+                        _this.$api.gpsAddr({
+                            gpsAddrLongitude: longitude,
+                            gpsAddrLatitude: latitude
+                        }).then(res => {
+                            console.log('gpsSucess');
+                        }, err => err);
+                    },
+                    cancel: function (res) {
+                        console.log('用户拒绝授权获取地理位置');
+                        _this.$api.gpsAddr({
+                            gpsAddrLongitude: '',
+                            gpsAddrLatitude: ''
+                        }).then(res => {
+                            console.log('gpsfail');
+                        }, err => err);
+                    }
+                })
+            },
+            // 处理合约的修改
+            contractChange(val) {
+                if (!val) {
+                    return;
+                }
+                this.selectConInfo = this.contractList.find((item) => {
+                    return item.contId === val;
+                })
+            },
+            // 生成二维码
+            submit() {
+                this.getLocation();
+                let v = this.$tool;
+                if (v.checkValEmpty(this.selectContract)) {
+                    v.toast('请选择合约套餐');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsBrand)) {
+                    v.toast('请输入商品品牌');
+                    return false;
+                }
+                if (!/^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(this.goodsInfo.goodsBrand)) {
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品品牌');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsName)) {
+                    v.toast('请输入商品名称');
+                    return false;
+                }
+                if (!/^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(this.goodsInfo.goodsName)) {
+
+                    v.toast('请输入文字/字母/数字且不包含特殊字符的商品名称');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsModel)) {
+                    v.toast('请输入商品型号');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsPrice)) {
+                    v.toast('请输入商品价格');
+                    return false;
+                }
+                if (!/^[1-9]\d{0,4}/.test(this.goodsInfo.goodsPrice)) {
+                    v.toast('请输入商品正确的价格');
+                    return false;
+                }
+                if (v.checkValEmpty(this.goodsInfo.goodsImei)) {
+                    v.toast('请输入商品IMEI');
+                    return false;
+                }
+
+                let queryObj = {
+                    ...this.selectConInfo,
+                    ...this.goodsInfo,
+                    mgrId: sessionStorage.sid, // 办单员id
+                    contId: this.selectContract, // 合约id
+                    typeId: this.$route.query.typeId
+                };
+
+                this.$router.push({
+                    path: "/contract-qrcode",
+                    query: queryObj
+                })
+            },
+            // 根据城市code 获取拼接的字符串
+            getAddrText(arr) {
+                let str = '';
+                this.cityList.forEach(item => {
+                    if (arr.indexOf(item.value) > -1) {
+                        str += item.name
+                    }
+                })
+                return str;
+            }
+        }
+    };
+</script>
+<style lang='less' >
+    .contract-installment-zxh {
+        padding-top: 54px;
+        background-color: #f1f1f1;
+        padding-bottom: 80px;
+        overflow-y: scroll;
+
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+    }
+    .btn {
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+        }
+</style>
diff --git a/src/views/old/store/zxh/message.vue b/src/views/old/store/zxh/message.vue
new file mode 100644
index 0000000..3ef6437
--- /dev/null
+++ b/src/views/old/store/zxh/message.vue
@@ -0,0 +1,105 @@
+
+<template>
+    <div class="getQRCode">
+        <!-- <x-header class="message-head" title="消息详情" :left-options="{backText:''}"></x-header> -->
+        <van-nav-bar title="消息详情" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+            <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        </van-nav-bar>
+        <div class="message-body">
+            <div class="notice">
+                <p class="notice-title">{{ message.msgTitle }}</p>
+                <p>{{ message.msgTime }}</p>
+            </div>
+            <span class="line"></span>
+            <div class="notice-continue" v-html=" message.msgCon">
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+import { XHeader } from 'vux';
+import {
+        dateFormat
+    } from 'vux'
+import { mapActions } from 'vuex';
+    export default {
+        name: 'message',
+        components: {
+             XHeader,
+        },
+        data() {
+            return {
+                messageId: this.$route.query.messageId,
+                message:{
+                    msgCon: '',
+                    msgTitle: '',
+                    msgTime: '',
+                }
+            }
+        },
+        computed:{
+
+        },
+        created() {
+            this.msgInt()
+            this.getCount()
+        },
+        methods: {
+            ...mapActions(['getCount']),
+            onClickLeft() {
+                this.$router.go(-1);
+            },
+            msgInt() {
+                this.$api.noticeDetail({id: this.messageId}).then(res => {
+                    console.log(res.body)
+                    this.message.msgCon = res.body.noticeContent;
+                    this.message.msgTitle = res.body.title;
+                    this.message.msgTime = dateFormat(res.body.pubTime);
+                })
+                
+            }
+        }
+    }
+</script>
+<style lang="less" scoped>
+.getQRCode{
+    background: #F5F5F7;
+    width: 100%;
+    height: 100%;
+}
+.message-head{
+    position: relative;
+}
+.message-body{
+    width: 96%;
+    margin: 12px 2%;
+    margin-top: 10px;
+    background: #fff;
+    .notice{
+        padding: 15px 12px;
+        border-bottom: 1px solid #EEEEEE;
+        p{
+            color: #999999;
+        }
+        &-title{
+            font-size: 16px;
+            font-weight: bold;
+            color: #333333 !important;
+            margin-bottom: 10px;
+        }
+    }
+    .notice-continue{
+        width: 94%;
+        margin: 0px 2%;
+        padding: 15px 0;
+        white-space: wrap;
+        font-size: 14px;
+        word-wrap: break-word;
+        height: auto;
+        padding-left: 2%;
+        background: #fff;
+        color: #666666;
+        line-height: 22px;
+    }
+}
+</style>
diff --git a/src/views/old/store/zxh/set.vue b/src/views/old/store/zxh/set.vue
new file mode 100644
index 0000000..6935865
--- /dev/null
+++ b/src/views/old/store/zxh/set.vue
@@ -0,0 +1,197 @@
+<!--
+ * @Descripttion: 智享云状态切换 + 数据资料的反显,无复杂逻辑
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-21 18:06:00
+ * @LastEditTime: 2019-09-02 11:15:49
+ -->
+<template>
+    <div class="zxh-set-box">
+        <x-header title="智享花" :left-options="{backText:''}"></x-header>
+        <group>
+            <x-switch title="状态" v-model="status"></x-switch>
+        </group>
+        <f-space></f-space>
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                基本信息
+            </div>
+            <cell title="商户名称" :value="info.merName"></cell>
+            <cell title="营业执照号" :value="info.licenseNo"></cell>
+            <cell title="地址" :value="info.merAddr"></cell>
+            <cell title="详细地址" :value="info.merDtlAddr"></cell>
+            <cell title="营业面积" :value="info.merArea"></cell>
+            <cell title="成立日期" :value="info.foundDate | timeformat('yyyy-MM-dd')"></cell>
+            <cell title="协议开始时间" :value="(info.agreeStartTime || '') | parseDate"></cell>
+            <cell title="协议结束时间" :value="(info.agreeEndTime || '') | parseDate"></cell>
+        </group>
+        <f-space></f-space>
+
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                法人信息
+            </div>
+            <cell title="法人姓名" :value="info.legalName"></cell>
+            <cell title="法人身份证号" :value="info.legalIdNo"></cell>
+            <cell title="法人电话" :value="info.legalMblNo"></cell>
+            <cell title="法人家庭住址" :value="info.legalHomeAddr"></cell>
+        </group>
+        <f-space></f-space>
+
+        <group>
+            <div class="title">
+                <span class="line"></span>
+                银行信息
+            </div>
+            <cell title="银行名称" :value="info.bankName"></cell>
+            <cell title="开户行" :value="info.bankDtlName"></cell>
+            <cell title="地址" :value="info.bankAddr"></cell>
+            <cell title="户名" :value="info.cardName"></cell>
+            <cell title="银行账号" :value="info.cardNo"></cell>
+            <cell title="账号类型" :value="info.cardTypeName"></cell>
+            <cell title="开户行行号" v-if="info.cardType ==='pu'" :value="info.bankNo"></cell>
+        </group>
+
+        <f-space></f-space>
+
+        <!-- 图片反显 -->
+        <section class="img-box">
+            <h4>营业执照照片</h4>
+            <div class="img-item" v-for="(item, index) in info.licencePhotos" :key="index"
+                :style="item.fileUrl | generate">
+            </div>
+        </section>
+        <section class="img-box">
+            <h4>法人身份证正反面照片</h4>
+            <div class="img-item" v-for="(item, index) in info.legalCardPhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>房产证或租赁合同</h4>
+            <div class="img-item" v-for="(item, index) in info.houseContractPhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>外景照、门头照片、前台照、内景照</h4>
+            <div class="img-item" v-for="(item, index) in info.storePhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>套餐活动清单、终端商品定价清单</h4>
+            <div class="img-item" v-for="(item, index) in info.mealBillPhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <section class="img-box">
+            <h4>运营商授权文件</h4>
+            <div class="img-item" v-for="(item, index) in info.accreditFilePhotos" :key="index"
+                :style="item.fileUrl | generate"></div>
+        </section>
+        <f-button fixed @on-click="submit">保存</f-button>
+    </div>
+</template>
+
+<script>
+    import {
+        XSwitch
+    } from 'vux';
+
+    export default {
+        name: "heyd_info",
+        components: {
+            XSwitch
+        },
+        data() {
+            return {
+                status: true,
+                info: {},
+                productInfo: {}
+            }
+        },
+        filters: {
+            generate(path) {
+                return {
+                    'background-image': `url(${path})`
+                }
+            },
+            parseDate(v = '') {
+                if (v) {
+                    return v.slice(0, 4) + '-' + v.slice(4, 6) + '-' + v.slice(-2);
+                } else {
+                    return '暂无';
+                }
+            }
+        },
+        created() {
+            this.init();
+        },
+        methods: {
+            init() {
+                this.$api.prodRefInit(this.$route.query).then(res => {
+                    this.productInfo = res.body;
+                    this.status = !!this.productInfo.status;
+                });
+                // 获取商户信息反显
+                this.$api.getMerInfo(this.$route.query.orgId).then(res => {
+                    this.info = res.body;
+                })
+            },
+            // 保存
+            submit() {
+                this.$api.prodSaveRef({
+                    ...this.$route.query,
+                    prodSkDtlInfoList: this.productInfo.prodSkDtlInfoList,
+                    status: this.status ? 1 : 0
+                }).then(() => {
+                    this.$notify('保存成功');
+                });
+            }
+        },
+    }
+</script>
+
+<style lang="less">
+    .zxh-set-box {
+        padding-bottom: 60px;
+
+        .title {
+            padding: 14px 12px;
+            font-size: 15px;
+            color: #333;
+
+            .line {
+                display: inline-block;
+                width: 2px;
+                height: 16px;
+                margin-right: 8px;
+                background: @color-text-three;
+                vertical-align: middle;
+                margin-top: -1px;
+            }
+        }
+
+        .img-box {
+            padding: 0 12px;
+            background-color: #fff;
+            margin-bottom: 20px;
+
+            h4 {
+                font-weight: normal;
+                font-size: 15px;
+                line-height: 40px;
+            }
+
+            .img-item {
+                display: inline-block;
+                height: 100px;
+                width: 100px;
+                margin: 0 10px 10px 0;
+                border: 1Px dashed #d9d9d9;
+                background-repeat: no-repeat;
+                background-size: contain;
+                background-position: center;
+            }
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/old/store/zxh/upload.vue b/src/views/old/store/zxh/upload.vue
new file mode 100644
index 0000000..459e24c
--- /dev/null
+++ b/src/views/old/store/zxh/upload.vue
@@ -0,0 +1,273 @@
+<!--
+ * @Descripttion: 上传合约凭证
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-08 09:16:44
+ * @LastEditTime: 2019-09-03 09:25:14
+ -->
+<template>
+    <div class="zxh-upload-box h-100-g">
+        <x-header :left-options="{'backText': ''}" title="上传合约凭证" class="gradient-color"></x-header>
+        <div class="content" v-for="(item, index) in fileTypeArr" :key="index">
+            <h4 class="title">
+                <span>{{item.name}}</span>
+                <div @click="changeShowselect(item)">
+                    <i class="iconfont scene_Staging-xiangji"></i>
+                    <input ref="photo" type="file" accept="image/*" @change="getFile($event.currentTarget,item.code)">
+                    <input ref="picture" type="file" accept="image/*" capture="camera"
+                        @change="getFile($event.currentTarget,item.code)">
+                </div>
+            </h4>
+            <ul class="upload">
+                <li class="upload-item" v-for="(item, index) in item.fileIds" :key="index"
+                    :style="{'background-image':`url(${item.fileUrl})`}">
+                    <i class="iconfont scene_Staging-shibai1" @click="deleteImgItem(index)"></i>
+                </li>
+            </ul>
+        </div>
+        <group>
+            <x-input title="手机号" v-model="form.contMblNo" placeholder="请输入" text-align="right" :max="11"></x-input>
+        </group>
+        <f-button @on-click="submit()">提交</f-button>
+
+
+        <van-action-sheet v-model="showSelect" :close-on-click-overlay="false" cancel-text="取消" :actions="nav"
+            @select="handleSelect">
+        </van-action-sheet>
+    </div>
+</template>
+
+<script>
+    import {
+        compress
+    } from "@/utils/index";
+    import {
+        Actionsheet
+    } from "vux";
+
+    export default {
+        name: "heyd_upload",
+        data() {
+            return {
+                showSelect: false,
+                nav: [{
+                        name: '拍照'
+                    },
+                    {
+                        name: '从手机相册选择'
+                    },
+                ],
+                form: {
+                    orderId: '',
+                    contMblNo: '',
+                    fileIds: []
+                },
+                fileTypeArr: [],
+                currentItem: {}
+            }
+        },
+        components: {
+            Actionsheet
+        },
+        props: ["orderId"],
+        created() {
+            this.form.orderId = this.orderId;
+            this.$api.h_getFileType().then(res => {
+                let list = res.body || [];
+                this.fileTypeArr = list.map(item => {
+                    return {
+                        ...item,
+                        fileIds: []
+                    }
+                })
+            })
+        },
+        methods: {
+            changeShowselect(item) {
+                if (item.fileIds.length) {
+                    this.$tool.toast(`最多上传一张照片~`)
+                    return
+                }
+                this.showSelect = true;
+                this.currentItem = item;
+            },
+            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.92,
+                            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);
+                    }
+                })
+            },
+            handleSelect(item, index) {
+                if (index === 0) {
+                    this.$refs['picture'][0].click();
+                } else {
+                    this.$refs['photo'][0].click();
+                }
+                this.showSelect = false;
+            },
+            // 删除图片
+            deleteImgItem(index) {
+                this.currentItem.fileIds.splice(index, 1);
+            },
+            // 获取base64
+            getFile(el, fileType) {
+                let file = el.files[0];
+                if (typeof file === 'undefined') return;
+                let reader = new FileReader(),
+                    that = this;
+                reader.readAsDataURL(file);
+                reader.onload = function () {
+                    that.imgCompress(this.result).then(base64 => {
+                        that.upload(base64.split(',')[1], file.type.split('/')[1], fileType);
+                    })
+                }
+            },
+            //上传文件
+            upload(base64, suffix, fileType) {
+                let params = {
+                    fileType,
+                    suffix,
+                    base64Data: base64
+                }
+                this.$api.uploadFile(params).then(res => {
+                    this.currentItem.fileIds.push(res.body);
+                })
+            },
+            // 提交保存
+            submit() {
+                let form = this.form,
+                    tel = form.contMblNo;
+
+                let len = this.fileTypeArr.length;
+                for (let index = 0; index < len; index++) {
+                    const item = this.fileTypeArr[index];
+                    if (item.fileIds.length === 0) {
+                        this.$tool.toast(`请上传${item.name}`)
+                        return
+                    }
+                }
+
+
+                if (tel.length === 0) {
+                    this.$tool.toast("请输入电话号码")
+                    return;
+                }
+
+                if (!this.$tool.checkPhone(tel)) {
+                    this.$tool.toast("请输入正确的电话号码")
+                    return
+                }
+                let params = {
+                    orderId: form.orderId,
+                    contMblNo: tel,
+                    fileIds: []
+                };
+
+
+                let fileIds = [];
+
+                for (let k = 0; k < len; k++) {
+                    const item = this.fileTypeArr[k];
+                    let arr = item.fileIds;
+                    arr.forEach(child => {
+                        fileIds.push(child.id)
+                    })
+                    // fileIds.push(...item.fileIds);
+                }
+
+                params.fileIds = fileIds;
+                this.$api.h_uploadProtocol(params).then(res => {
+                    this.$tool.toast("提交成功")
+                    this.$router.go(-1)
+                })
+            }
+        }
+    }
+</script>
+
+<style lang="less" scoped>
+    .zxh-upload-box {
+        padding-top: 54px;
+        background-color: #f1f1f1;
+    }
+
+    .content {
+        margin-bottom: 10px;
+        padding-bottom: 12px;
+        background-color: @color-white;
+
+        .title {
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            padding: 0 12px;
+            height: 49px;
+            line-height: 49px;
+            font-size: @font-size-base;
+            font-weight: @font-weight-base;
+
+            input {
+                display: none;
+            }
+        }
+    }
+
+    .upload {
+        margin: 5px 12px 0;
+        display: flex;
+        justify-content: flex-start;
+        align-items: center;
+        flex-wrap: wrap;
+
+        .upload-item {
+            margin-right: 12px;
+            width: 109px;
+            height: 109px;
+            position: relative;
+            background-position: center;
+            background-size: contain;
+            background-repeat: no-repeat;
+            margin-bottom: 12px;
+
+            &:nth-child(3n) {
+                margin-right: 0;
+            }
+
+            .iconfont {
+                position: absolute;
+                right: 3Px;
+                top: 0;
+            }
+        }
+    }
+
+    #file {
+        display: none;
+    }
+
+    .scene_Staging-xiangji {
+        fill: @color-border-theme;
+        color: @color-border-theme;
+        font-size: 20px;
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/order/credit.vue b/src/views/order/credit.vue
new file mode 100644
index 0000000..e66f597
--- /dev/null
+++ b/src/views/order/credit.vue
@@ -0,0 +1,299 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 18:49:04
+ * @Description: 信用卡分期——订单
+ -->
+<template>
+    <div class="order-hb-box">
+        <v-navbar title="信用卡分期订单" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init" >
+                <v-order-item :name="item.userName || '无'" :user='item.label' :time='+item.creTime' :list='item.list'
+                    v-for="(item,k) in list" :key="k" @click="go(item.orderId)"></v-order-item>
+            </van-list>
+
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+
+        <v-filter v-model="isShow" :belongArr="belongArr" :periodsArr="periodsArr" :statusArr="statusArr" :hasSearch="true"
+            @search="(v)=>search(v,true)"></v-filter>
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading:false,
+                finished:false,
+
+                exporShow:false,
+
+                isShow: false,
+                list: [],
+                orderData: [],
+                belongArr: [],
+                periodsArr: [],
+                statusArr: [],
+                filter: {}
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        created() {
+            this.getOrderReport()
+            this.getOrderInit()
+        },
+        methods: {
+              calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            search(v,isClear){
+                this.filter.orderId ="";
+                this.finished = false;
+                this.init(v,isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.userinfo.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        insTermVoList = body.insTermVoList || [],
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [];
+                    this.periodsArr = insTermVoList;
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                }).catch((err) => {
+
+                });
+
+            },
+            // 跳转到详情页面
+            go(id) {
+                this.$router.push(`/product/credit-detail?id=${id}`)
+            },
+            // 获取订单列表
+            init(params = this.filter,isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.getCreditOrderList(params).then(res => {
+                    this.filter = {...params};
+                    if(isClear){
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.settAmt,
+                                        label: '商品金额(元)',
+                                    },
+                                    {
+                                        value: item.insTermStr,
+                                        label: '分期期数(月)',
+                                    }
+                                ]
+                            })
+                        })
+                        // this.msgList.push(...list);
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            //订单导出
+            exportFile() {
+                    if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.creditExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+                    //
+                    // this.$dialog.alert({
+                    //     showCancelButton: false,
+                    //     message: `<div>
+                    //             <p>已将信息发送至邮箱,请注意查收</p>
+                    //             <p>${this.userinfo.email}</p>
+                    //         </div>`
+                    // }).then(() => {
+                    //
+                    // });
+                }).catch((err) => {
+
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-hb-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/dmf.vue b/src/views/order/dmf.vue
new file mode 100644
index 0000000..81d5ff3
--- /dev/null
+++ b/src/views/order/dmf.vue
@@ -0,0 +1,337 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-23 16:29:56
+ * @Description: 商户收款订单
+ -->
+<template>
+    <div class="order-hb-box">
+        <v-navbar title="商户收款订单" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init">
+                <v-order-item :user='item.merName' :orderId='item.orderId' :time='item.creTime' :list='item.list'
+                    v-for="(item,index) in list" :key="index" @click="go(item.orderId)"></v-order-item>
+            </van-list>
+
+        </div>
+        <v-button-circle icon='icondaochu' title='导出'  @click="exportFile"></v-button-circle>
+        <v-filter v-model="isShow" :belongArr="belongArr" :statusArr="statusArr" :zfbVersionArr="zfbVersionArr"
+            customTitle="分期本金" :hasMoney="false" @search="(v)=>search(v,true)"></v-filter>
+
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;"
+                            @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+
+                exporShow: false,
+
+                loading: false,
+                finished: false,
+                isShow: false,
+                list: [],
+                filter: {},
+                statusArr: [],
+                belongArr: [],
+                zfbVersionArr:[],
+                countPrice: 0, //今日交易金额
+                orderData: []
+            }
+        },
+        created() {
+            this.getOrderInit()
+            this.getOrderReport()
+
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            typeId() {
+                return this.$route.query.typeId
+            },
+            prodId() {
+                return this.$route.query.prodId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        methods: {
+
+            //订单导出
+            exportFile() {
+                if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.facepayOrderExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+
+                    // this.$dialog.alert({
+                    //     showCancelButton: false,
+                    //     message: `<div>exportFile
+                    //             <p>已将信息发送至邮箱,请注意查收</p>
+                    //             <p>${this.userinfo.email}</p>
+                    //         </div>`
+                    // }).then(() => {
+                    //
+                    // });
+                }).catch((err) => {
+
+                });
+            },
+
+
+
+            search(v, isClear) {
+                this.filter.orderId = "";
+                this.finished = false;
+                this.init(v, isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.userinfo.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [],
+                        zfbVersionList = body.zfbVersions || [];
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                    this.zfbVersionArr = zfbVersionList;
+                }).catch((err) => {
+
+                });
+
+            },
+            go(id) {
+                this.$router.push(`/product/dmf-detail?id=${id}`)
+            },
+            // 计算产品状态
+            getStatus(v) {
+                if(v==2){
+                    return {
+                        text: '订单超时',
+                        color: 'error'
+                    }
+                }else if(v==3){
+                    return {
+                        text: '退款成功',
+                        color: 'warning'
+                    }
+                }else if(v==0){
+                    return {
+                        text: '待支付',
+                        color: 'warning'
+                    }
+                }
+                return {
+                    text: '交易成功',
+                    color: 'success'
+                }
+            },
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.mgrName
+                        break;
+                }
+            },
+            init(params = this.filter, isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.getDmfOrderList(params).then(res => {
+                    this.filter = {
+                        ...params
+                    };
+                    if (isClear) {
+                        this.list = [];
+                    }
+                    let list = res.body.dmfOrderVoList || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            let info = this.getStatus(item.status)
+                            this.calcLabel(item)
+                            this.list.push({
+                                ...item,
+                                list:[
+                                    {
+                                    value: item.payAmt,
+                                    label: '支付金额',
+                                },{
+                                    value: info.text,
+                                    label: '订单状态',
+                                    color: info.color
+                                }]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                    this.isShow = false;
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-hb-box {
+        padding-top: 55px;
+        background-color: @c-bg-f5;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+
+    .popup-content {
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+
+        .icon-box {
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background: rgba(66, 61, 93, 0.1);
+            border-radius: 50%;
+            transform: translate(-50%, -50%);
+
+            .child {
+                height: 55px;
+                width: 55px;
+                background: rgba(66, 61, 93, 0.8);
+                border-radius: 50%;
+            }
+        }
+
+        .text {
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+
+            .top {
+                color: @c-text-666;
+            }
+        }
+
+        .btn-submit {
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/gjzj.vue b/src/views/order/gjzj.vue
new file mode 100644
index 0000000..57f0bd5
--- /dev/null
+++ b/src/views/order/gjzj.vue
@@ -0,0 +1,318 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 18:50:21
+ * @Description: 购机直降订单
+ -->
+<template>
+    <div class="order-hb-box">
+
+        <v-navbar title="购机直降订单" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init">
+                <v-order-item :name="item.userName || '无'" :user='item.label' :time='item.creTime' :list='item.list'
+                    v-for="(item,index) in list" :key="index"
+                    @click="$router.push(`/product/gjzj-detail?id=${item.orderId}`)">
+                </v-order-item>
+            </van-list>
+
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+        <v-filter v-model="isShow" :belongArr="belongArr" :statusArr="statusArr" customTitle="手机价格" :hasSearch="true"
+            @search="(v)=>search(v,true)"></v-filter>
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading: false,
+                finished: false,
+
+                exporShow:false,
+
+                isShow: false,
+                list: [],
+                filter: {},
+                statusArr: [],
+                belongArr: [],
+                orderData: [],
+
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        created() {
+            this.getOrderInit()
+            this.getOrderReport()
+
+
+        },
+        methods: {
+            search(v, isClear) {
+                this.filter.orderId = "";
+                this.finished = false;
+                this.init(v, isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [];
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                }).catch((err) => {
+
+                });
+            },
+                  calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            //获取购机直降列表
+            init(params = this.filter, isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.getGjzjList(params).then(res => {
+                    this.filter = {
+                        ...params
+                    };
+                    if (isClear) {
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            let color = '';
+                            switch (item.status) {
+                                case 1:
+                                    color = 'success';
+                                    break;
+                                case 2:
+                                    color = 'error';
+                                    break;
+                                case 0:
+                                case 6:
+                                    color = 'warning';
+                                    break;
+                            }
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.insAmt,
+                                        label: '商品金额(元)',
+                                    },
+                                    {
+                                        value: item.insTermStr,
+                                        label: '分期期数(月)'
+                                    },
+                                    {
+                                        value: item.statusStr,
+                                        label: '订单状态',
+                                        color
+                                    }
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            // 获取订单统计数据
+
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+            // 导出
+            exportFile() {
+                    if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.gjzjExport(this.filter).then((res) => {
+
+
+                    this.exporShow = true;
+
+
+                    // this.$dialog.alert({
+                    //     showCancelButton: false,
+                    //     message: `<div>
+                    //         <p>已将信息发送至邮箱,请注意查收</p>
+                    //         <p>${this.userinfo.email}</p>
+                    //     </div>`
+                    // }).then(() => {
+                    //
+                    // });
+                }).catch((err) => {
+
+                });
+            }
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-hb-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/gzzj.vue b/src/views/order/gzzj.vue
new file mode 100644
index 0000000..d8ba569
--- /dev/null
+++ b/src/views/order/gzzj.vue
@@ -0,0 +1,271 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 18:49:56
+ * @Description: 智享花订单  该页面跟购机直降相差无几
+ -->
+<template>
+    <div class="order-hb-box h-100-g">
+        <v-navbar title="公众租机订单" fixed>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init">
+                <v-gzzj-order-item :userName="item.userName || '无'" :storeName="item.label" :mblNo="item.mblNo" :orderTime='item.creTime' :signTime='item.signTime' :list='item.list' :orderId='item.orderId'
+                    v-for="(item,index) in list" :key="index"
+                    @click="$router.push(`/product/gzzj-detail?id=${item.orderId}`)">
+                </v-gzzj-order-item>
+            </van-list>
+
+        </div>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading: false,
+                finished: false,
+                storeOrgType:"",
+                exporShow:false,
+                isShow: false,
+                list: [],
+                filter: {},
+                statusArr: [],
+                belongArr: [],
+                orderData: [],
+
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        created() {
+            this.getOrderInit()
+            this.getOrderReport()
+        },
+        methods: {
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.storeName
+                        if(this.storeOrgType == 5){
+                        item.label = ''
+                        break;
+                        }
+                }
+            },
+            search(v, isClear) {
+                this.filter.orderId = "";
+                this.finished = false;
+                this.init(v, isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [];
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                }).catch((err) => {
+
+                });
+                if(this.orgType == 4) {
+                    this.$api.storeProdList({}).then(res => {
+                        this.storeOrgType = res.body.orgType;
+                    });
+                }
+            },
+            //获取订单列表
+            init(params = this.filter, isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.getGzzjOrder(params).then(res => {
+                    this.filter = {
+                        ...params
+                    };
+                    if (isClear) {
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            let color = '';
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.insAmt,
+                                        label: '分期本金(元)',
+                                    },
+                                    {
+                                        value: item.insTermStr,
+                                        label: '分期期数(月)'
+                                    },
+                                    {
+                                        value: item.statusStr,
+                                        label: '订单状态',
+                                        color
+                                    }
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+            // 导出
+            exportFile() {
+                if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.gzzjExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+
+                }).catch((err) => {
+
+                });
+            }
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-hb-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/hb.vue b/src/views/order/hb.vue
new file mode 100644
index 0000000..c74283f
--- /dev/null
+++ b/src/views/order/hb.vue
@@ -0,0 +1,334 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 16:54:51
+ * @Description: 花呗订单
+ -->
+<template>
+    <div class="order-hb-box">
+        <v-navbar :title="typeId ==200002? '用户付息' : '商品消费'" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init" >
+                <v-order-item :name="item.userName || '无'" :user='item.label' :time='+item.creTime' :list='item.list'
+                    v-for="(item,k) in list" :key="k" @click="go(item.orderId)"></v-order-item>
+            </van-list>
+
+        </div>
+        <v-button-circle icon='icondaochu' v-if="hasExport" title='导出' @click="exportFile"></v-button-circle>
+
+        <v-filter v-model="isShow" :belongArr="belongArr" :periodsArr="periodsArr" :statusArr="statusArr" customTitle="分期本金" :hasSearch="true" :zfbVersionArr="zfbVersionArr"
+            @search="(v)=>search(v,true)"></v-filter>
+
+
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g" >
+                    <div class="child flex-center-g" :style="{background:$store.state.backColor, opacity: 0.8}">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;" :style="{color:$store.state.backColor}">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading:false,
+                finished:false,
+
+                exporShow:false,
+
+                isShow: false,
+                list: [],
+                orderData: [],
+                belongArr: [],
+                periodsArr: [],
+                statusArr: [],
+                zfbVersionArr:[],
+                filter: {}
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            },
+            hasExport(){
+                if(localStorage.hjToken){
+                    return false
+                }else{
+                    return true
+                }
+            }
+        },
+        created() {
+            // this.init()
+            console.log(this.orgType)
+            this.getOrderReport()
+            this.getOrderInit()
+        },
+        methods: {
+            search(v,isClear){
+                this.filter.orderId ="";
+                this.finished = false;
+                this.init(v,isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.userinfo.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        insTermVoList = body.insTermVoList || [],
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [],
+                        zfbVersionList = body.zfbVersions || [];
+                    this.periodsArr = insTermVoList;
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                    console.log('zfbVersionList:',zfbVersionList)
+                    this.zfbVersionArr = zfbVersionList;
+                }).catch((err) => {
+
+                });
+
+            },
+            // 跳转到详情页面
+            go(id) {
+                this.$router.push(`/product/hb-detail?id=${id}&typeId=${this.typeId}`)
+            },
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            // 获取订单列表
+            init(params = this.filter,isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.getHBList(params).then(res => {
+                    this.filter = {...params};
+                    if(isClear){
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            let color = 'success';
+                            switch (item.status) {
+                                case 1:
+                                    color = 'success';
+                                    break;
+                                case 2:
+                                    color = 'error';
+                                    break;
+                                case 0:
+                                    color = 'warning';
+                                    break;
+                                case 3:
+                                    color = 'warning';
+                                    break;
+                            }
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.settAmt,
+                                        label: '分期本金(元)',
+                                    },
+                                    {
+                                        value: item.insTermStr,
+                                        label: '分期期数(月)',
+                                    },
+                                    {
+                                        value: item.statusStr,
+                                        label: '订单状态',
+                                        color
+                                    }
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            //订单导出
+            exportFile() {
+                    if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.hbExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+
+                    // this.$dialog.alert({
+                    //     showCancelButton: false,
+                    //     message: `<div>
+                    //             <p>已将信息发送至邮箱,请注意查收</p>
+                    //             <p>${this.userinfo.email}</p>
+                    //         </div>`
+                    // }).then(() => {
+                    //
+                    // });
+                }).catch((err) => {
+
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-hb-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+               
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/hbjl.vue b/src/views/order/hbjl.vue
new file mode 100644
index 0000000..80df6a5
--- /dev/null
+++ b/src/views/order/hbjl.vue
@@ -0,0 +1,322 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-06-09 16:44:45
+ * @Description: 花呗订单
+ -->
+<template>
+    <div class="hbjl-box">
+        <v-navbar title="花呗间联" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init" >
+                <v-order-item :name="item.userName || '无'" :user='item.label' :time='+item.creTime' :list='item.list'
+                    v-for="(item,k) in list" :key="k" @click="go(item.orderId)"></v-order-item>
+            </van-list>
+
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+
+        <v-filter v-model="isShow" :belongArr="belongArr" :periodsArr="periodsArr" :statusArr="statusArr" customTitle="分期本金" :hasSearch="false" 
+            @search="(v)=>search(v,true)"></v-filter>
+
+
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading:false,
+                finished:false,
+
+                exporShow:false,
+
+                isShow: false,
+                list: [],
+                orderData: [],
+                belongArr: [],
+                periodsArr: [],
+                statusArr: [],
+                filter: {}
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }
+            }
+        },
+        created() {
+            // this.init()
+            console.log(this.orgType)
+            this.getOrderReport()
+            this.getOrderInit()
+        },
+        methods: {
+            search(v,isClear){
+                this.filter.orderId ="";
+                this.finished = false;
+                this.init(v,isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.userinfo.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        insTermVoList = body.insTermVoList || [],
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [],
+                        zfbVersionList = body.zfbVersions || [];
+                    this.periodsArr = insTermVoList;
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                   
+                }).catch((err) => {
+
+                });
+
+            },
+            // 跳转到详情页面
+            go(id) {
+                this.$router.push(`/product/hbjl-detail?id=${id}&typeId=${this.typeId}`)
+            },
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            // 获取订单列表
+            init(params = this.filter,isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.hbjlOrderList(params).then(res => {
+                    this.filter = {...params};
+                    if(isClear){
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            let color = 'success';
+                            switch (item.status) {
+                                case 1:
+                                    color = 'success';
+                                    break;
+                                case 2:
+                                    color = 'error';
+                                    break;
+                                case 0:
+                                    color = 'warning';
+                                    break;
+                                case 3:
+                                    color = 'warning';
+                                    break;
+                            }
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.settAmt,
+                                        label: '分期本金(元)',
+                                    },
+                                    {
+                                        value: item.insTermStr,
+                                        label: '分期期数(月)',
+                                    },
+                                    {
+                                        value: item.statusStr,
+                                        label: '订单状态',
+                                        color
+                                    }
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            //订单导出
+            exportFile() {
+                    if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.hbjlOrderExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+
+                    // this.$dialog.alert({
+                    //     showCancelButton: false,
+                    //     message: `<div>
+                    //             <p>已将信息发送至邮箱,请注意查收</p>
+                    //             <p>${this.userinfo.email}</p>
+                    //         </div>`
+                    // }).then(() => {
+                    //
+                    // });
+                }).catch((err) => {
+
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    if(this.orgType!= 4){
+                        var num = body.merNum || 0;
+                        this.orderData.push({
+                            title: this.dataLabel,
+                            num
+                        })
+                    }
+                   
+                }).catch((err) => {
+
+                })
+            },
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .hbjl-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/order-lthyj.vue b/src/views/order/order-lthyj.vue
new file mode 100644
index 0000000..cb4d952
--- /dev/null
+++ b/src/views/order/order-lthyj.vue
@@ -0,0 +1,277 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 16:54:51
+ * @Description: 花呗订单
+ -->
+<template>
+    <div class="order-lthyj">
+        <v-navbar title="订单列表">
+            <!-- <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template> -->
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <!-- <v-datacard class='info' :list="orderData"></v-datacard> -->
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init" >
+                <new-v-order-item :name="item.userName || '无'"  :time='+item.signTime' :list='item.list' :orderId="item.orderId"
+                    v-for="(item,k) in list" :key="k" @click="go(item.orderId)">
+                </new-v-order-item>
+            </van-list>
+        </div>
+        <!-- <v-button-circle icon='icondaochu' v-if="hasExport" title='导出' @click="exportFile"></v-button-circle> -->
+        <!-- <v-filter v-model="isShow" :belongArr="belongArr" :periodsArr="periodsArr" :statusArr="statusArr" customTitle="分期本金" :hasSearch="true" :zfbVersionArr="zfbVersionArr"
+            @search="(v)=>search(v,true)">
+        </v-filter> -->
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g" >
+                    <div class="child flex-center-g" :style="{background:$store.state.backColor, opacity: 0.8}">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;" :style="{color:$store.state.backColor}">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading:false,
+                finished:false,
+
+                exporShow:false,
+
+                isShow: false,
+                list: [],
+                orderData: [],
+                belongArr: [],
+                periodsArr: [],
+                statusArr: [],
+                zfbVersionArr:[],
+                filter: {}
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            },
+            hasExport(){
+                if(localStorage.hjToken){
+                    return false
+                }else{
+                    return true
+                }
+            }
+        },
+        created() {
+            // this.init()
+            // this.getOrderReport()
+            // this.getOrderInit()
+        },
+        methods: {
+            // search(v,isClear){
+            //     this.filter.orderId ="";
+            //     this.finished = false;
+            //     this.init(v,isClear)
+            //     this.getOrderReport(v)
+            // },
+            // 获取过滤条件
+            // getOrderInit() {
+            //     this.$api.getOrderInit({
+            //         orgType: this.userinfo.orgType,
+            //         prodTypeId: this.typeId
+            //     }).then((res) => {
+            //         let body = res.body,
+            //             insTermVoList = body.insTermVoList || [],
+            //             orderStatusList = body.orderStatusList || [],
+            //             orgBaseInfVoList = body.orgBaseInfVoList || [],
+            //             zfbVersionList = body.zfbVersions || [];
+            //         this.periodsArr = insTermVoList;
+            //         this.statusArr = orderStatusList;
+            //         this.belongArr = orgBaseInfVoList;
+            //         console.log('zfbVersionList:',zfbVersionList)
+            //         this.zfbVersionArr = zfbVersionList;
+            //     }).catch((err) => {
+
+            //     });
+            // },
+            // 跳转到详情页面
+            go(id) {
+                this.$router.push(`/product/lthyj-detail?id=${id}&typeId=${this.typeId}`)
+            },
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            // 获取订单列表
+            init(params = this.filter,isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.cuccOrderList(params).then(res => {
+                    this.filter = {...params};
+                    if(isClear){
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            let color = 'success';
+                            switch (item.status) {
+                                case 1:
+                                    color = 'success';
+                                    break;
+                                case 2:
+                                    color = 'error';
+                                    break;
+                                case 0:
+                                    color = 'warning';
+                                    break;
+                                case 3:
+                                    color = 'warning';
+                                    break;
+                            }
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.strDownAmt,
+                                        label: '分期本金(元)',
+                                    },
+                                    {
+                                        value: item.term,
+                                        label: '分期期数(月)',
+                                    },
+                                    {
+                                        value: item.orderStatus,
+                                        label: '订单状态',
+                                        color
+                                    }
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-lthyj {
+        height: 100%;
+        background-color: @c-bg-f5;
+    }
+    .order-list {
+        margin-top: 10px;
+        padding: 0 8px 30px;
+        background-color: @c-bg-f5;
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/phone.vue b/src/views/order/phone.vue
new file mode 100644
index 0000000..d8bf027
--- /dev/null
+++ b/src/views/order/phone.vue
@@ -0,0 +1,345 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-27 10:24:42
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-03 11:11:55
+ * @Description:
+ -->
+<template>
+    <div class="phone-box h-100-g">
+        <v-navbar title="手机分期订单" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+
+        <div class="num-box">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+        </div>
+        <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init">
+            <div class="mobile-order-list" v-for="(item,index) in list" :key="index">
+                <div class="header vux-1px-b">
+                    <span>{{item.mblBrand}}&nbsp;{{item.mblModel}}</span>
+                    <span v-if="orgType==1">商户名称:{{item.merName}}</span>
+                </div>
+                <div class="body">
+                    <div class="content">
+                        <p>姓名:<span>{{item.userName}}</span></p>
+                        <p>手机:<span>{{item.mblNo}}</span></p>
+                        <p>手机价格:<span class="mony">{{item.settAmt}}元</span></p>
+                        <p>门店收取首付:<span class="mony">{{item.firstAmt}}元</span></p>
+                        <p>首付比例:<span>{{item.firstRate}}%</span></p>
+                        <p>分期金额:<span class="mony">{{item.surplusAmt}}元</span></p>
+                        <p>每期还款金额:<span class="mony">{{item.termAmt}}元</span></p>
+                        <p>分期期数:<span>{{item.insTerm}}期</span></p>
+                    </div>
+                    <div class="status">{{item.statusStr}}</div>
+                </div>
+                <div class="footer vux-1px-b">
+                    <time>
+                        <i class="iconfont scene_Staging-shijian"></i>
+                        <span>{{item.creTime | timeformat('yyyy-MM-dd HH:mm')}} </span>
+                    </time>
+                    <!-- <span>门店名称:{{item.storeName}}</span> -->
+                    <span v-if="orgType==3">门店名称:{{item.storeName}}</span>
+                    <span v-if="orgType==4">办单员:{{item.recordPerson}}</span>
+                    <span v-if="orgType==2">商户名称:{{item.merName}}</span>
+                    <span v-if="orgType==1">渠道名称:{{item.chanName}}</span>
+                </div>
+            </div>
+        </van-list>
+
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+
+        <v-filter v-model="isShow" :belongArr="belongArr" :statusArr="statusArr" customTitle="手机价格" :hasSearch="true"
+            @search="(v)=>search(v,true)"></v-filter>
+
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                finished: false,
+                loading: false,
+
+                isShow: false,
+                list: [],
+                statusArr: [],
+                belongArr: [],
+                filter: {},
+                orderData: [],
+
+                exporShow:false,
+
+            }
+        },
+        created() {
+            this.getOrderInit()
+            this.getOrderReport()
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            typeId() {
+                return this.$route.query.typeId
+            },
+            prodId() {
+                return this.$route.query.prodId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        methods: {
+            search(v, isClear) {
+                this.filter.orderId = "";
+                this.finished = false;
+                this.init(v, isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [];
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                }).catch((err) => {
+
+                });
+
+            },
+            //获取订单
+            init(params = this.filter, isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.ljOrderList(params).then(res => {
+                    this.filter = {
+                        ...params
+                    };
+                    if (isClear) {
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        this.list.push(...list)
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            // 订单导出
+            exportFile() {
+                if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.ljOrderExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+
+                    // this.$dialog.alert({
+                    //     showCancelButton: false,
+                    //     message: `<div>
+                    //             <p>已将信息发送至邮箱,请注意查收</p>
+                    //             <p>${this.userinfo.email}</p>
+                    //         </div>`
+                    // }).then(() => {
+                    //
+                    // });
+                }).catch((err) => {
+
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .phone-box {
+        padding-top: 44px;
+        background-color: #f1f1f1;
+
+    }
+
+    .num-box {
+        margin: 0 8px;
+    }
+
+    .mobile-order-list {
+        background: @c-bg-fff;
+        margin-bottom: 10px;
+
+    }
+
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+    .header {
+        display: flex;
+        padding: 0 12px;
+        line-height: 44px;
+        font-size: @font-12;
+
+
+        >span:first-child {
+            font-size: 15px;
+            color: @c-text-default;
+            flex: 1;
+        }
+    }
+
+    .footer {
+        display: flex;
+        padding: 0 12px;
+        line-height: 44px;
+        font-size: @font-12;
+        background: rgba(191, 160, 115, 0.1);
+
+        time {
+            flex: 1;
+        }
+    }
+
+    .body {
+        display: flex;
+        padding: 12px;
+        align-items: center;
+
+        .content {
+            flex: 1;
+            font-size: @font-12;
+            line-height: 2;
+
+            span {
+                padding-left: 5px;
+            }
+
+            .mony {
+                color: @c-text-default;
+
+            }
+        }
+
+        .status {
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/shtx.vue b/src/views/order/shtx.vue
new file mode 100644
index 0000000..fbabea9
--- /dev/null
+++ b/src/views/order/shtx.vue
@@ -0,0 +1,322 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-09-26 12:33:49
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-04-09 11:30:57
+ * @Description: 
+ -->
+<template>
+    <div class="order-hb-box">
+        <v-navbar title="商户贴息" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init" >
+                <v-order-item :name="item.userName || '无'" :user='item.label' :time='+item.creTime' :list='item.list'
+                    v-for="(item,k) in list" :key="k" @click="go(item.orderId)"></v-order-item>
+            </van-list>
+
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+
+        <v-filter v-model="isShow" :belongArr="belongArr" :periodsArr="periodsArr" :statusArr="statusArr" customTitle="商家到账金额" :hasSearch="true" :zfbVersionArr="zfbVersionArr"
+            @search="(v)=>search(v,true)"></v-filter>
+
+
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading:false,
+                finished:false,
+                exporShow:false,
+                isShow: false,
+                list: [],
+                orderData: [],
+                belongArr: [],
+                periodsArr: [],
+                statusArr: [],
+                zfbVersionArr:[],
+                filter: {}
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        created() {
+            // this.init()
+            this.getOrderReport()
+            this.getOrderInit()
+        },
+        methods: {
+            search(v,isClear){
+                this.filter.orderId ="";
+                this.finished = false;
+                this.init(v,isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.userinfo.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        insTermVoList = body.insTermVoList || [],
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [],
+                        zfbVersionList = body.zfbVersions || [];
+                    this.periodsArr = insTermVoList;
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                    this.zfbVersionArr = zfbVersionList;
+                }).catch((err) => {
+
+                });
+
+            },
+            // 跳转到详情页面
+            go(id) {
+                this.$router.push(`/product/shtx-detail?id=${id}`)
+            },
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            // 获取订单列表
+            init(params = this.filter,isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.getHBList(params).then(res => {
+                    this.filter = {...params};
+                    if(isClear){
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            let color = 'success';
+                            switch (item.status) {
+                                case 1:
+                                    color = 'success';
+                                    break;
+                                case 2:
+                                    color = 'error';
+                                    break;
+                                case 0:
+                                    color = 'warning';
+                                    break;
+                                case 3:
+                                    color = 'warning';
+                                    break;
+                            }
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.settAmt,
+                                        label: '商家到账金额(元)',
+                                    },
+                                    {
+                                        value: item.insTermStr,
+                                        label: '分期期数(月)',
+                                    },
+                                    {
+                                        value: item.statusStr,
+                                        label: '订单状态',
+                                        color
+                                    }
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            //订单导出
+            exportFile() {
+                    if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.hbExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+
+                    // this.$dialog.alert({
+                    //     showCancelButton: false,
+                    //     message: `<div>
+                    //             <p>已将信息发送至邮箱,请注意查收</p>
+                    //             <p>${this.userinfo.email}</p>
+                    //         </div>`
+                    // }).then(() => {
+                    //
+                    // });
+                }).catch((err) => {
+
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-hb-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/wxScore.vue b/src/views/order/wxScore.vue
new file mode 100644
index 0000000..d99fd37
--- /dev/null
+++ b/src/views/order/wxScore.vue
@@ -0,0 +1,204 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 16:54:51
+ * @Description: 花呗订单
+ -->
+<template>
+    <div class="order-lthyj">
+        <v-navbar title="微信分订单列表" fixed >
+            <template v-slot:right >
+                <div class="flex-center-g" @click="isShowFilter = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init" >
+                <v-wxScore-order-item :userName="item.userName || '无'"  :time='+item.creTime' :list='item.list' :contName="item.contName"
+                                      :term="item.term" v-for="(item,k) in list" :key="k" @click="go(item.id)">
+                </v-wxScore-order-item>
+            </van-list>
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+        <v-filter  v-model="isShowFilter" :hasTime="false" :hasMoney="false" :hasSearch="true" :hasWxScore="true" @search="(v)=>search(v,true)"></v-filter>
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g" >
+                    <div class="child flex-center-g" :style="{background:$store.state.backColor, opacity: 0.8}">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;" :style="{color:$store.state.backColor}">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                exporShow:false,
+                loading:false,
+                finished:false,
+                isShow: false,
+                isShowFilter:false,
+                list: [],
+                orderData: [],
+                belongArr: [],
+                periodsArr: [],
+                statusArr: [],
+                filter: {}
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+        },
+        methods: {
+            search(v,isClear){
+                this.filter.id ="";
+                this.finished = false;
+                this.init(v,isClear)
+            },
+            go(orderId) {
+                this.$router.push({
+                    path:'/product/wxScore-detail',
+                    query:{
+                        orderId:orderId
+                    }
+                })
+            },
+            //订单导出
+            exportFile() {
+                if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.wxScoreExport(this.filter).then((res) => {
+                    this.exporShow = true;
+                }).catch((err) => {
+
+                });
+            },
+            // 获取订单列表
+            init(params = this.filter,isClear) {
+                console.log("111");
+                this.loading = true;
+                this.$api.wxScoreList(params).then(res => {
+                    this.filter = {...params};
+                    if(isClear){
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.id = list[list.length - 1].id;
+                        list.forEach(item => {
+                            let color = 'success';
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                    value: item.guaranteedAmt,
+                                    label: '担保金额',
+                                    },
+                                    {
+                                        value: item.mblNo,
+                                        label: '用户手机号',
+                                    },
+                                    {
+                                        value: item.status,
+                                        label: '订单状态',
+                                    },
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+
+    .order-lthyj {
+        height: 100%;
+        background-color: @c-bg-f5;
+    }
+    .order-list {
+        margin-top: 60px;
+        padding: 0 8px 30px;
+        background-color: @c-bg-f5;
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/xyg-cx.vue b/src/views/order/xyg-cx.vue
new file mode 100644
index 0000000..7aead06
--- /dev/null
+++ b/src/views/order/xyg-cx.vue
@@ -0,0 +1,329 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-03-19 11:02:45
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-03-19 11:20:52
+ * @Description: 
+ -->
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 16:11:37
+ * @Description: 花呗订单
+ -->
+<template>
+    <div class="order-hb-box">
+        <v-navbar :title="typeId ==200012? '信用购-花呗' : '信用购-储蓄'" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init" >
+                <v-order-item :name="item.userName || '无'" :user='item.label' :time='+item.creTime' :list='item.list'
+                    v-for="(item,k) in list" :key="k" @click="go(item.orderId)"></v-order-item>
+            </van-list>
+
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+
+        <v-filter v-model="isShow" :belongArr="belongArr" :periodsArr="periodsArr" :statusArr="statusArr" customTitle="分期本金" :hasSearch="true"
+            @search="(v)=>search(v,true)"></v-filter>
+
+
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading:false,
+                finished:false,
+
+                exporShow:false,
+
+                isShow: false,
+                list: [],
+                orderData: [],
+                belongArr: [],
+                periodsArr: [],
+                statusArr: [],
+                filter: {}
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        created() {
+            // this.init()
+            console.log(this.orgType)
+            this.getOrderReport()
+            this.getOrderInit()
+        },
+        methods: {
+            search(v,isClear){
+                this.filter.orderId ="";
+                this.finished = false;
+                this.init(v,isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.userinfo.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        insTermVoList = body.insTermVoList || [],
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [];
+                    this.periodsArr = insTermVoList;
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                }).catch((err) => {
+
+                });
+
+            },
+            // 跳转到详情页面
+            go(id) {
+                this.$router.push(`/product/hb-detail?id=${id}&typeId=${this.typeId}`)
+            },
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            // 获取订单列表
+            init(params = this.filter,isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.getHBList(params).then(res => {
+                    this.filter = {...params};
+                    if(isClear){
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            let color = 'success';
+                            switch (item.status) {
+                                case 1:
+                                    color = 'success';
+                                    break;
+                                case 2:
+                                    color = 'error';
+                                    break;
+                                case 0:
+                                    color = 'warning';
+                                    break;
+                                case 3:
+                                    color = 'warning';
+                                    break;
+                            }
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.settAmt,
+                                        label: '分期本金(元)',
+                                    },
+                                    {
+                                        value: item.insTermStr,
+                                        label: '分期期数(月)',
+                                    },
+                                    {
+                                        value: item.statusStr,
+                                        label: '订单状态',
+                                        color
+                                    }
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            //订单导出
+            exportFile() {
+                    if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.hbExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+
+                    // this.$dialog.alert({
+                    //     showCancelButton: false,
+                    //     message: `<div>
+                    //             <p>已将信息发送至邮箱,请注意查收</p>
+                    //             <p>${this.userinfo.email}</p>
+                    //         </div>`
+                    // }).then(() => {
+                    //
+                    // });
+                }).catch((err) => {
+
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-hb-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/xyg-hb.vue b/src/views/order/xyg-hb.vue
new file mode 100644
index 0000000..5789c09
--- /dev/null
+++ b/src/views/order/xyg-hb.vue
@@ -0,0 +1,323 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-03-19 11:02:28
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-03-23 16:47:35
+ * @Description: 
+ -->
+<template>
+    <div class="order-hb-box">
+        <v-navbar title="运营商消费-花呗分期订单" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init" >
+                <v-order-item :name="item.userName || '无'" :user='item.label' :time='+item.creTime' :list='item.list'
+                    v-for="(item,k) in list" :key="k" @click="go(item.orderId)"></v-order-item>
+            </van-list>
+
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+
+        <v-filter v-model="isShow" :belongArr="belongArr" :periodsArr="periodsArr" :statusArr="statusArr" customTitle="结算金额" :hasSearch="true"
+            @search="(v)=>search(v,true)"></v-filter>
+
+
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading:false,
+                finished:false,
+
+                exporShow:false,
+
+                isShow: false,
+                list: [],
+                orderData: [],
+                belongArr: [],
+                periodsArr: [],
+                statusArr: [],
+                filter: {}
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        created() {
+            // this.init()
+            console.log(this.orgType)
+            this.getOrderReport()
+            this.getOrderInit()
+        },
+        methods: {
+            search(v,isClear){
+                this.filter.orderId ="";
+                this.finished = false;
+                this.init(v,isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.userinfo.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        insTermVoList = body.insTermVoList || [],
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [];
+                    this.periodsArr = insTermVoList;
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                }).catch((err) => {
+
+                });
+
+            },
+            // 跳转到详情页面
+            go(id) {
+                this.$router.push(`/product/xyg-hb-detail?id=${id}&typeId=${this.typeId}`)
+            },
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            // 获取订单列表
+            init(params = this.filter,isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.xygOrderHbList(params).then(res => {
+                    this.filter = {...params};
+                    if(isClear){
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            let color = 'success';
+                            switch (item.status) {
+                                case 1:
+                                    color = 'success';
+                                    break;
+                                case 2:
+                                    color = 'error';
+                                    break;
+                                case 0:
+                                    color = 'warning';
+                                    break;
+                                case 3:
+                                    color = 'warning';
+                                    break;
+                            }
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.settAmt,
+                                        label: '结算金额(元)',
+                                    },
+                                    {
+                                        value: item.insTermStr,
+                                        label: '分期期数(月)',
+                                    },
+                                    {
+                                        value: item.statusStr,
+                                        label: '订单状态',
+                                        color
+                                    }
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            //订单导出
+            exportFile() {
+                    if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.xygOrderHbExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+
+                    // this.$dialog.alert({
+                    //     showCancelButton: false,
+                    //     message: `<div>
+                    //             <p>已将信息发送至邮箱,请注意查收</p>
+                    //             <p>${this.userinfo.email}</p>
+                    //         </div>`
+                    // }).then(() => {
+                    //
+                    // });
+                }).catch((err) => {
+
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-hb-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+        min-height: 100vh;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/xyg.vue b/src/views/order/xyg.vue
new file mode 100644
index 0000000..3b975bb
--- /dev/null
+++ b/src/views/order/xyg.vue
@@ -0,0 +1,292 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-03-20 09:55:50
+ * @Description: 信用购订单  该页面跟购机直降相差无几
+ -->
+<template>
+    <div class="order-hb-box h-100-g">
+        <v-navbar title="运营商消费-储蓄卡订单" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init">
+                <v-order-item :name="item.userName || '无'" :user='item.label' :time='item.creTime' :list='item.list'
+                    v-for="(item,index) in list" :key="index"
+                    @click="$router.push(`/product/xyg-detail?id=${item.orderId}`)">
+                </v-order-item>
+            </van-list>
+
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+        <v-filter v-model="isShow" :belongArr="belongArr" :statusArr="statusArr" customTitle="手机价格" :hasSearch="true"
+            @search="(v)=>search(v,true)"></v-filter>
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading: false,
+                finished: false,
+
+
+                exporShow:false,
+
+                isShow: false,
+                list: [],
+                filter: {},
+                statusArr: [],
+                belongArr: [],
+                orderData: [],
+
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        created() {
+            this.getOrderInit()
+            this.getOrderReport()
+        },
+        methods: {
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            search(v, isClear) {
+                this.filter.orderId = "";
+                this.finished = false;
+                this.init(v, isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [];
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                }).catch((err) => {
+
+                });
+            },
+            //获取订单列表
+            init(params = this.filter, isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.getXygOrder(params).then(res => {
+                    this.filter = {
+                        ...params
+                    };
+                    if (isClear) {
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            let color = '';
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.insAmt,
+                                        label: '商品金额(元)',
+                                    },
+                                    {
+                                        value: item.insTermStr,
+                                        label: '分期期数(月)'
+                                    },
+                                    {
+                                        value: item.statusStr,
+                                        label: '订单状态',
+                                        color
+                                    }
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+            // 导出
+            exportFile() {
+                if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.xygExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+
+                }).catch((err) => {
+
+                });
+            }
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-hb-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/order/zxh.vue b/src/views/order/zxh.vue
new file mode 100644
index 0000000..2aa6cee
--- /dev/null
+++ b/src/views/order/zxh.vue
@@ -0,0 +1,292 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 18:49:56
+ * @Description: 智享花订单  该页面跟购机直降相差无几
+ -->
+<template>
+    <div class="order-hb-box h-100-g">
+        <v-navbar title="智享花订单" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init">
+                <v-order-item :name="item.userName || '无'" :user='item.label' :time='item.creTime' :list='item.list'
+                    v-for="(item,index) in list" :key="index"
+                    @click="$router.push(`/product/zxh-detail?id=${item.orderId}`)">
+                </v-order-item>
+            </van-list>
+
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+        <v-filter v-model="isShow" :belongArr="belongArr" :statusArr="statusArr" customTitle="手机价格" :hasSearch="true"
+            @search="(v)=>search(v,true)"></v-filter>
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading: false,
+                finished: false,
+
+
+                exporShow:false,
+
+                isShow: false,
+                list: [],
+                filter: {},
+                statusArr: [],
+                belongArr: [],
+                orderData: [],
+
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        created() {
+            this.getOrderInit()
+            this.getOrderReport()
+        },
+        methods: {
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            search(v, isClear) {
+                this.filter.orderId = "";
+                this.finished = false;
+                this.init(v, isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                this.$api.getOrderInit({
+                    orgType: this.orgType,
+                    prodTypeId: this.typeId
+                }).then((res) => {
+                    let body = res.body,
+                        orderStatusList = body.orderStatusList || [],
+                        orgBaseInfVoList = body.orgBaseInfVoList || [];
+                    this.statusArr = orderStatusList;
+                    this.belongArr = orgBaseInfVoList;
+                }).catch((err) => {
+
+                });
+            },
+            //获取订单列表
+            init(params = this.filter, isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                this.$api.getHeydOrder(params).then(res => {
+                    this.filter = {
+                        ...params
+                    };
+                    if (isClear) {
+                        this.list = [];
+                    }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        list.forEach(item => {
+                            this.calcLabel(item)
+                            let color = '';
+                            this.list.push({
+                                ...item,
+                                list: [{
+                                        value: item.insAmt,
+                                        label: '商品金额(元)',
+                                    },
+                                    {
+                                        value: item.insTermStr,
+                                        label: '分期期数(月)'
+                                    },
+                                    {
+                                        value: item.statusStr,
+                                        label: '订单状态',
+                                        color
+                                    }
+                                ]
+                            })
+                        })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                this.$api.getOrderReport({
+                    ...params,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '交易额',
+                        num: body.amtNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '交易单数',
+                        num: body.orderNum || 0,
+                    })
+                    let num = body.merNum || 0;
+                    if(this.orgType==4){
+                        num = "—";
+                    }
+                    this.orderData.push({
+                        title: this.dataLabel,
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+            // 导出
+            exportFile() {
+                if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                this.$api.zxhExport(this.filter).then((res) => {
+
+                    this.exporShow = true;
+
+                }).catch((err) => {
+
+                });
+            }
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .order-hb-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+    }
+
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+</style>
diff --git a/src/views/product/credit-detail.vue b/src/views/product/credit-detail.vue
new file mode 100644
index 0000000..a2085c5
--- /dev/null
+++ b/src/views/product/credit-detail.vue
@@ -0,0 +1,109 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-06 15:42:01
+ * @Description: 信用卡分期——订单详情
+ -->
+<template>
+    <div class="credit-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <van-cell :value="form.userName" title='用户名称' readonly></van-cell>
+                <van-cell :value="form.mblNo" title='手机号' readonly></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell :value="form.settAmt" title='商品金额' readonly></van-cell>
+                <van-cell :value="form.insAmt" title='还款总额' readonly></van-cell>
+                <van-cell :value="form.insTermStr" title='分期期数' readonly></van-cell>
+                <van-cell :value="form.dealTime" title='交易时间' readonly></van-cell>
+                <van-cell :value="form.goodsName" title='商品信息' readonly></van-cell>
+                <van-cell :value="form.statusStr" :value-class="statusColor" title='订单状态' readonly></van-cell>
+            </div>
+
+             <div class="cell-group" >
+                <van-cell :value="form.chanName || '无'" title='办理渠道' readonly></van-cell>
+                <van-cell :value="form.merName || '无'" title='办理商户' readonly></van-cell>
+                <van-cell :value="form.storeName || '无'" title='办理门店' readonly></van-cell>
+                <van-cell :value="form.recordPerson || '无'" title='办单员' readonly></van-cell>
+            </div>
+
+            <div class="cell-group" v-if="form.feeRate != null">
+                <van-cell :value="form.feeRate" title='费率' readonly></van-cell>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState
+    } from 'vuex';
+    export default {
+        data() {
+            return {
+                form: {},
+                statusColor:''
+            }
+        },
+        computed: {
+            id() {
+                return this.$route.query.id
+            },
+            ...mapState(['userinfo'])
+        },
+        created() {
+            this.init()
+        },
+        methods: {
+            init() {
+                this.$api.getCreditDetail(this.id).then((res) => {
+                    this.form = res.body || {};
+                    if(this.form && this.form.status) {
+                        if (this.form.status == 1) {
+                            this.statusColor = 'status-val-done';
+                        } else if (this.form.status == 2) {
+                            this.statusColor = 'status-val-error';
+                        } else if (this.form.status == 3) {
+                            this.statusColor = 'status-val-refund';
+                        } else if (this.form.status == 0) {
+                            this.statusColor = 'status-val-wait';
+                        } else {
+                            this.statusColor = 'status-val-done';
+                        }
+                    }
+                }).catch((err) => {
+
+                });
+            },
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#FF9900;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .credit-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+</style>
diff --git a/src/views/product/dmf-code.vue b/src/views/product/dmf-code.vue
new file mode 100644
index 0000000..3ea98d7
--- /dev/null
+++ b/src/views/product/dmf-code.vue
@@ -0,0 +1,139 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-27 11:20:46
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-27 11:25:45
+ * @Description: 
+ -->
+<template>
+    <!-- 商户收款:扫描二维码页面 -->
+    <div class="contract-qrcode-page">
+        <v-navbar title="扫码收款" fixed></v-navbar>
+        <div class="order-info">
+            <div v-if="qrCodeBase64Url" class='canvasImg'>
+                <img :src="qrCodeBase64Url" alt="qrcode">
+            </div>
+            <div id="QRCode" v-else class='qr-code'>
+                <div class='qeimg'>
+                    <img :src="dataUrl" alt="">
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+    import html2canvas from 'html2canvas';
+    import QRCode from 'qrcode';
+
+    export default {
+        name: 'facepay_code',
+        data() {
+            return {
+                dataUrl: '',
+                qrCodeBase64Url: '',
+                params: '',
+                timeId: null
+            }
+        },
+        computed: {
+            orderId() {
+                let id = this.$route.query.id;
+                return id;
+            }
+        },
+        beforeRouteLeave(to, from, next) {
+            clearInterval(this.timeId);
+            next()
+        },
+        methods: {
+            // 轮询 支付状态
+            search_status() {
+                this.$api.facepay_getStatus(this.orderId).then(res => {
+                    let orderStatus = res.body.orderStatus;
+                    if (orderStatus !== 0) {
+                        if (orderStatus === 1) {
+                            // 成功
+                            this.$router.replace(
+                                `/product/dmf-detail?orderStatus=1&page=facepay_code&id=${this.orderId}`)
+                        } else if (orderStatus === 2) {
+                            // 失败
+                            this.$router.replace(
+                                `/product/dmf-detail?orderStatus=2&page=facepay_code&id=${this.orderId}`)
+                        }
+                    }
+                })
+            }
+        },
+        created() {
+            QRCode.toDataURL(this.$route.query.url, {
+                    margin: 0,
+                    width: 400
+                },
+                (err, url) => {
+                    this.dataUrl = url;
+                    setTimeout(() => {
+                        html2canvas(document.getElementById('QRCode')).then(
+                            canvas => {
+                                this.qrCodeBase64Url = canvas.toDataURL(
+                                    'image/jpeg'
+                                );
+                                this.timeId = setInterval(() => {
+                                    this.search_status();
+                                }, 2000);
+                            }
+                        );
+                    }, 100);
+                }
+            );
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .contract-qrcode-page {
+        padding-top: 44px;
+
+        .order-info {
+            padding-top: 46px;
+
+            .canvasImg {
+                margin: 0 auto;
+                width: 220px;
+                height: 220px;
+
+                img {
+                    width: 100%;
+                }
+            }
+
+            .notice {
+                padding-top: 40px;
+                text-align: center;
+                color: #666;
+            }
+
+            .qr-code {
+                background: #fff;
+                width: 220px;
+                height: 220px;
+                margin: 0 auto;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                flex-direction: column;
+                border: 4px solid @color-text-three;
+                color: @color-text-three;
+
+                .qeimg {
+                    width: 200px;
+                    height: 200px;
+                    padding: 5px;
+
+                    img {
+                        width: 100%;
+                        height: 100%;
+                    }
+                }
+            }
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/product/dmf-detail.vue b/src/views/product/dmf-detail.vue
new file mode 100644
index 0000000..daa01bf
--- /dev/null
+++ b/src/views/product/dmf-detail.vue
@@ -0,0 +1,351 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-11 10:54:57
+ * @Description: 商户收款——订单详情
+ -->
+<template>
+    <div class="hb-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+
+        <div class="status" v-if="isShowStatus">
+            <div v-if="isSuccess">
+                <van-icon name="success" size="45px" color="#19BE6B" />
+                <p class="info">交易成功</p>
+                <h3 class="price">¥{{orderInfo.payAmt}}</h3>
+            </div>
+            <div v-else>
+                <van-icon name="fail" size="45px" color="#FF9900" />
+                <p class="info">订单超时</p>
+            </div>
+        </div>
+
+        <div class="content">
+            <div class="cell-group">
+                <van-cell :value="form.creTime | timeformat('yyyy-MM-dd HH:mm:ss')" title='交易时间' readonly ></van-cell>
+                <van-cell :value="form.orderId" title='订单号' readonly ></van-cell>
+                <van-cell :value="(form.payAmt || '0')+'元'" title='支付金额' readonly ></van-cell>
+                <van-cell :value="form.zfbVersionName || '无'" title="办单通道" readonly></van-cell>
+                <van-cell :value="status" title='订单状态' :value-class="statusColor" readonly ></van-cell>
+                <van-cell v-if="form.aliAccount" :value="form.aliAccount" title='用户支付宝账号' readonly></van-cell>
+            </div>
+            <div class="cell-group">
+                <van-cell v-if="userinfo.orgType < 2" :value="form.chanName || '无'" title='渠道名称' readonly></van-cell>
+                <van-cell v-if="userinfo.orgType < 3" :value="form.merName || '无'" title='商户名称' readonly></van-cell>
+                <van-cell v-if="userinfo.orgType < 4" :value="form.storeName || '无'" title='门店名称' readonly></van-cell>
+                <van-cell v-if="userinfo.orgType < 5" :value="form.mgrName || '无'" title='办单员名称' readonly></van-cell>
+                
+            </div>
+            <div class="cell-group">
+                <van-cell :value="form.fee || '无'" title='商户收款费率' readonly></van-cell>
+            </div>
+            <div class="cell-group">
+                <van-cell v-if="userinfo.orgType == 3" :value="form.settStatus || '无'" title='到账状态' readonly></van-cell>
+            </div>
+            <!-- <van-button class="btn" v-if=""  @click="yzmShow = true">退单</van-button> -->
+            <van-button class="btn" :color="$store.state.backColor" v-if="form.refundStatus==1&&form.zfbVersion != 5 && $store.state.userinfo.orgType != 1 && $store.state.userinfo.orgType != 2"  @click="refund">退款</van-button>
+            <van-button class="btn" :color="$store.state.backColor" v-if="status === '待支付'" @click="$router.replace(`/facepay/code?url=${form.payCode}&id=${form.orderId}`)">展示二维码</van-button>
+        </div>
+        <!-- 短信验证码弹窗 -->
+        <van-popup v-model="yzmShow">
+            <div class="yzmbox">
+                <van-icon name="cross" class="yzmbox-close" @click="yzmShow = false" />
+                <p style="font-size:16px;color:#000;">请输入短信验证码</p>
+                <div class="yzmbox-contnet">
+                    <div class="yzmbox-contnet-yzm">
+                        <span>将发送到手机号:</span>
+                        <span>{{userinfo.mblNo.replace(/(\d{3})\d*(\d{4})/, '$1****$2') }}</span>
+                    </div>
+                </div>
+                <div class="yzmbox-contnet-get">
+                    <input type="text" v-model="yzmVal" placeholder="请输入验证码">
+                    <span class="yzmbox-contnet-get-yzm" @click="getYzm">{{ yzmText }}</span>
+                </div>
+                <van-button class="showbtn" :color="$store.state.backColor" round @click="yzmYes">确认</van-button>
+            </div>
+        </van-popup>
+        <!-- 退单成功弹窗 -->
+        <van-popup v-model="yzmOkShow">
+            <div class="yzmOkbox">
+                <van-icon name="cross" class="yzmbox-close" @click="yzmOkShow = false" />
+                <div class="yzmOkbox-img">
+                    <img src="../../assets/img/tkimg.png" alt="">
+                </div>
+                <p>退款成功</p>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+import { async } from 'q';
+import Vue from 'vue';
+import { Notify } from 'vant';
+import { mapState } from 'vuex';
+
+Vue.use(Notify);
+    export default {
+        data() {
+            return {
+                Open: true, //倒计时开关
+                yzmText:'获取验证码',
+                yzmOkShow: false,
+                yzmVal: '',
+                yzmShow: false, //获取验证码弹窗
+                isSuccess: false,
+                isShowStatus: false,
+                isShowListBtn: false,
+                form:{
+                    creTime:new Date()
+                },
+                statusColor:''
+            }
+        },
+        computed:{
+             ...mapState(['userinfo']),
+            orderId(){
+                return this.$route.query.id
+            },
+             status() {
+                let v = this.form.status;
+                switch (v) {
+                    case 0:
+                        return '待支付';
+                    case 1:
+                        return '交易成功';
+                    case 2:
+                        return '订单超时';
+                    case 3:
+                        return '退款成功';
+                }
+            }
+        },
+        created(){
+             let query = this.$route.query,
+                orderStatus = query.orderStatus,
+                page = query.page;
+            if (orderStatus == '1') {
+                this.isSuccess = true;
+            }
+            if (page == 'facepay_code') {
+                this.isShowStatus = true;
+                this.isShowListBtn = true;
+            }
+            this.init()
+        },
+        methods: {
+            //验证码弹窗确认事件
+            yzmYes() {
+                console.log(this.orderId)
+                if(this.yzmVal == '' || this.yzmVal == null){
+                    Notify({ type: 'danger', message: '验证码为空!' });
+                } else {
+                    this.$api.facepay_refund({orderId: Number(this.orderId), verCode:this.yzmVal}).then(() => {
+                        // this.$router.replace(`/product/dmf-detail?id=${this.orderId}`)
+                        this.$notify('退款成功')
+                        this.yzmShow = false;
+                        this.yzmVal = '',
+                        this.yzmOkShow = true;
+                        setTimeout(() => {
+                            location.reload()
+                        }, 700);
+                    })
+                   
+                }
+            },
+            //获取验证码
+            getYzm() {
+                let sendParams = {
+                    mblNo: this.userinfo.mblNo,
+                    // mblNo: 13980353202,
+                    verCodeType: 12,
+                };
+                if(this.Open) {
+                    this.$api.userSendMsg(sendParams).then(res => {
+                        console.log(res.body)
+                        this.Open = false
+                        let num = 60;
+                        this.yzmText = num + 's重发';
+                        let _this = this
+                        let timer = setInterval(() => {
+                            num--;
+                            // _this.$set(_this.yzmText = num + 's重发')                       
+                            if(num === 0) {
+                                clearInterval(timer);
+                                _this.Open = true;
+                                _this.yzmText = '重新发送';
+                            } else {
+                                _this.yzmText = num + 's重发';
+                            }
+                        },1000)
+                    }).catch(()=>{
+                        this.Open = true;
+                    })
+                }
+            },
+            // 退款
+            refund(){
+                this.$dialog.confirm({
+                    message: '是否确认退款'
+                }).then(() => {
+                    this.yzmShow = true
+                    
+                }).catch(() => {
+                // on cancel
+                });
+                // this
+
+            },
+            getStatusClass(){
+                let styleClass = ['.status-val-done'];
+                return styleClass;
+            },
+            // 获取详情
+            init(){
+                this.$api.getDmfOrderDetail(this.orderId).then((res) => {
+                    this.form = {
+                        ...res.body
+                    }
+                    if(this.form) {
+                        if (this.form.status == 1) {
+                            this.statusColor = 'status-val-done';
+                        } else if (this.form.status == 2) {
+                            this.statusColor = 'status-val-error';
+                        } else if (this.form.status == 3) {
+                            this.statusColor = 'status-val-refund';
+                        } else if (this.form.status == 0) {
+                            this.statusColor = 'status-val-wait';
+                        } else {
+                            this.statusColor = 'status-val-done';
+                        }
+                    }
+                }).catch((err) => {
+
+                });
+
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .showbtn{
+        width: 60%;
+        background: @c-default;
+        color: #fff;
+        position: absolute;
+        bottom: 15px;
+    }
+    .yzmbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        // background: #f5f5f5;
+        .flex('', center, center, column);
+        text-align: center;
+        border-radius: 6px;
+        background: #fff;
+        padding-top: 34px;
+        &-close{
+            color: #999;
+            font-size: 16px;
+            position: absolute;
+            right: 8px;
+            top: 8px;
+        }
+        &-contnet{
+            margin-top: 11px;
+            color: #999;
+            font-size: 14px;
+            &-yzm{
+                .flex(center, center);
+                // font-size: 14px;
+                span{
+                    font-size: 14px;
+                    // color: #999;
+                }
+                
+            }
+            &-get{
+                width: 80%;
+                margin: 0 10%;
+                margin-top: 30px;
+                .flex(space-between, center);
+                 input{
+                    border: none;
+                    width: 45%;
+                    background: #fff;
+                    height: 30px;
+                }
+                &-yzm{
+                    color: @c-default;
+                }
+            }
+        }
+    }
+    .yzmOkbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        .flex(center, center,'',column);
+        &-img{
+            width: 90px;
+            height: 90px;
+            img{
+                width: 100%;
+                height: 100%;
+            }
+        }
+        p{
+            font-size: 16px;
+            color: #000;
+            margin-top: 16px;
+        }
+    }
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#FF9900;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+        .content{
+            padding: 10px 8px;
+        }
+           .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+     .status {
+        text-align: center;
+        padding: 15px 0;
+        margin-bottom: 15px;
+        .info {
+            margin-top: 10px;
+        }
+
+        .price {
+            font-size: 26px;
+            color: @c-text-default;
+        }
+    }
+    .btn{
+        width: 320px;
+        background: @c-bg-default;
+        color: @c-text-fff;
+        display: block;
+        margin: 30px auto;
+    }
+</style>
diff --git a/src/views/product/facepay/facepay-qrcode.vue b/src/views/product/facepay/facepay-qrcode.vue
new file mode 100644
index 0000000..6f9315a
--- /dev/null
+++ b/src/views/product/facepay/facepay-qrcode.vue
@@ -0,0 +1,72 @@
+<template>
+<div class="facepay-qrcode ">
+  <v-navbar title="扫码收款" fixed></v-navbar>
+
+
+  <div class="qr-code">
+    <div ref="QRCode1" class="qr-box">
+      <img :src="dataUrl" alt="">
+    </div>
+  </div>
+
+
+
+</div>
+</template>
+
+<script>
+  import QRCode from 'qrcode';
+  export default {
+    name: "facepay-qrcode",
+    data(){
+      return {
+        dataUrl: '',
+
+
+
+      }
+    },
+    mounted(){
+      let _this = this,
+          Parmar = this.$route.query || {
+            id:122,
+            name:"122",
+            name2:"122",
+            name3:"122"
+          };
+
+      QRCode.toDataURL(
+        JSON.stringify(Parmar), {
+          margin: 0,
+          width: 200
+        },
+        (err, url) => {
+          if (err) console.error(err);
+          _this.dataUrl = url;
+        }
+      );
+
+    },
+    methods:{
+
+    }
+  }
+</script>
+
+<style scoped lang="less">
+.facepay-qrcode{
+    padding-top: 44px;
+    min-height: calc(100vh  - 44px);
+    background-color: @c-f5;
+    .qr-code{
+      margin-top: 50px;
+      .flex(center,center);
+    }
+
+    .qr-box{
+      padding:8px 8px 3px 8px;
+      border: 2px solid @c-default;
+    }
+
+}
+</style>
diff --git a/src/views/product/facepay/facepay.vue b/src/views/product/facepay/facepay.vue
new file mode 100644
index 0000000..adead8c
--- /dev/null
+++ b/src/views/product/facepay/facepay.vue
@@ -0,0 +1,221 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-22 16:55:53
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-27 13:50:17
+ * @Description: 
+ -->
+<template>
+  <div class="facepay">
+
+    <v-navbar title="扫码收款" @right-click="$router.push('/order/dmf')" fixed>
+        <div slot="right" style="color: #896EDB">明细</div>
+    </v-navbar>
+
+
+    <div class="input-box">
+      <p class="tag">¥</p>
+      <input v-model="price" autofocus readonly  type="text" class="input-money" placeholder="输入收款金额" >
+    </div>
+    <p class="icon-box">
+      <span>支持方式:</span>
+
+      <svg class="icon"  aria-hidden="true">
+        <use xlink:href="#iconshoujifenqi"></use>
+      </svg>
+
+    </p>
+    <div class="calc">
+      <ul class="number-box">
+        <li class="number-item" v-for="(item, index) in 9" :key="index" @click="numberClick(item)">{{item}}</li>
+        <li class="number-item"></li>
+        <li class="number-item" @click="numberClick(0)">0</li>
+        <li class="number-item" @click="numberClick('.')">.</li>
+      </ul>
+      <div class="handler-box">
+        <div class="icon-delete" @click="deleteNumber">
+          <svg class="icon"  aria-hidden="true">
+            <use xlink:href="#iconcha"></use>
+          </svg>
+        </div>
+        <div class="icon-submit" @click="submit">
+          收款
+        </div>
+      </div>
+    </div>
+
+  </div>
+</template>
+
+<script>
+  import {Notify} from 'vant';
+  export default {
+    name: "facepay",
+    data() {
+      return {
+        price: ''
+      }
+    },
+    methods: {
+
+      // 删除price最后一位
+      deleteNumber() {
+        this.price = this.price.slice(0, this.price.length - 1)
+      },
+      //提交生成二维码
+      submit() {
+        if(this.price=='0' || this.price=='0.'){
+          Notify({
+            message: '收款金额不能为0!',
+          });
+          return
+        }
+        if (!this.price.length) {
+          Notify({
+            message: '请输入收款金额!',
+          });
+          return
+        }else{
+
+
+          // 点击收款逻辑
+          this.$router.push('/product/facepay-qrcode');
+
+
+          // this.$api.facepay_create({payAmt:+this.price,term:0}).then(res=>{
+          //   let url = res.body.payQrCodeUrl;
+          //   let id = res.body.orderId;
+          //   this.$router.push(`/facepay/code?url=${url}&id=${id}`)
+          // })
+        }
+      },
+      //数字的逻辑输入判断
+      numberClick(v) {
+        let index = this.price.indexOf('.');
+        if (v !== '.') {
+          if (this.price.length === 8) {
+            return
+          }
+          if (index > -1 && this.price.slice(index + 1, this.price.length).length == 2) {
+            // 最多输入两位小数
+            this.$tool.toast('最多输入两位小数!')
+            return
+          }
+          if(this.price.length===1 && this.price ==='0'){
+            return
+          }
+        } else {
+          if (!this.price.length) {
+            return
+          }
+          // if (this.price.slice(0, 1) !== '0') {
+          //     return
+          // }
+          if (index > -1) {
+            return
+          }
+        }
+        this.price += v;
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+.facepay{
+  padding-top: 44px;
+  background-color: @c-f5;
+  min-height: calc(100vh - 44px);
+
+
+  .input-box {
+    color: @c-default;
+    padding: 30px 25px;
+    position: relative;
+    margin-top: 15px;
+
+    .tag {
+      position: absolute;
+      left: 40px;
+      top: 50%;
+      transform: translateY(-50%);
+      font-size: 24px;
+    }
+  }
+
+  .icon-box {
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    padding-left: 30px;
+    color: @c-default;
+    .icon{
+      width: 35px;
+      height: 35px;
+    }
+  }
+
+  .input-money {
+    color: @c-default;
+    height: 55px;
+    line-height: 55px;
+    width: 100%;
+    text-align: right;
+    padding-right: 15px;
+    box-sizing: border-box;
+    border: 2px solid @c-default;
+    outline: none;
+    font-size: 18px;
+  }
+
+  .calc {
+    position: fixed;
+    bottom:0;
+    width: 100%;
+    font-size: 24px;
+    text-align: center;
+    background-color: #fff;
+    .icon-delete {
+      height: 70px;
+      .flex(center,center);
+      .icon{
+        width: 40px;
+        height: 40px;
+      }
+    }
+
+    .icon-submit {
+      height: 210px;
+      line-height: 210px;
+      color: #fff;
+      background-color: @c-default;
+    }
+
+    &::after {
+      content: "";
+      clear: both;
+      display: block;
+    }
+  }
+
+  .handler-box {
+    width: 25%;
+    float: left;
+  }
+
+  .number-box {
+    width: 75%;
+    float: left;
+
+    .number-item {
+      width: 33.3333%;
+      float: left;
+      height: 70px;
+      line-height: 70px;
+      box-sizing: border-box;
+    }
+  }
+
+
+}
+</style>
diff --git a/src/views/product/facepay/orderlist.vue b/src/views/product/facepay/orderlist.vue
new file mode 100644
index 0000000..8535bb9
--- /dev/null
+++ b/src/views/product/facepay/orderlist.vue
@@ -0,0 +1,186 @@
+<template>
+  <div class="orderlist">
+    <v-navbar title="订单明细" fixed></v-navbar>
+
+    <v-datacard class='info' :data="titledata"></v-datacard>
+    <div class="height-20-g"></div>
+
+
+
+
+    <v-order-item time='2019-08-13 11:59:09'  v-for="(i,k) in list" :list='i.list'
+                  :key="k">
+      <div slot="bottom-status" class="bottom-status">
+          <div class="flex-between-g order-tips">
+            <p class="time">2019-08-21 17:10:05</p>
+            <p class="soures">渠道名称:渠道0</p>
+          </div>
+      </div>
+    </v-order-item>
+
+
+
+
+  </div>
+</template>
+
+<script>
+  export default {
+    name: "orderlist",
+    data(){
+      return {
+        titledata:[
+          {
+            title:'今日成功交易金额(元)',
+            num:6
+          }
+        ],
+
+
+
+        list: [],
+
+      }
+    },
+    created(){
+      let a =[
+        {
+          type:'支付宝扫码收款',
+          value:'订单超时',
+          label:1
+        },
+        {
+          type:'支付宝扫码收款',
+          value:'订单超时',
+          label:2
+        },
+        {
+          type:'支付宝扫码收款',
+          value:'订单超时',
+          label:4
+        },
+        {
+          type:'支付宝扫码收款',
+          value:'订单超时',
+          label:5
+        },
+        {
+          type:'支付宝扫码收款',
+          value:'订单超时',
+          label:6
+        }
+      ];
+
+      this.list = a.map(item=>{
+        return {
+          user:null,
+          list:[
+            {
+              value: item.type,
+              label: '',
+            },
+            {
+              value: item.value,
+              label:item.label,
+              color:'error'
+            }
+          ]
+        }
+      })
+    },
+    methods:{
+
+    }
+  }
+</script>
+
+<style scoped lang="less">
+.orderlist{
+  padding-top: 44px;
+  min-height: calc(100vh - 44px);
+  background-color: @c-f5;
+  .order-title{
+    margin:10px 0 5px;
+    .lh(44px);
+    padding-left: 15px;
+    font-weight: bold;
+    font-size: @font-14;
+  }
+
+
+
+
+  .bottom-status{
+    width: 100%;
+    margin-top: 15px;
+  }
+
+
+
+
+
+  .label{
+    font-size: @font-16;
+  }
+
+
+
+
+
+
+  .number{
+    color: @c-default;
+    font-size:@font-20;
+  }
+  .status{
+    color: #f5222d;
+    font-size: @font-16;
+    font-weight: 400;
+    margin-top: 5px;
+  }
+
+  .item{
+    margin-bottom: 18px;
+    .store-name{
+      .lh(45px);
+      background-color: @c-fff;
+      margin-bottom: 1px;
+      font-weight: 400;
+      color:#c6c6c6;
+      text-align: right;
+      padding-right: 15px;
+    }
+
+    .order-status{
+      background-color: @c-fff;
+      min-height: 100px;
+      padding: 0 15px;
+      .flex(space-between,center);
+    }
+
+    .pay-type{
+      text-align: center;
+      color: #5a5a5a;
+      font-weight: bold;
+      font-size:@font-18;
+    }
+
+    .order-status-code{
+        .flex(center,center,warp,column);
+    }
+
+    .order-tips{
+        .lh(44px);
+        background-color: #f8f5f1;
+        .flex(space-between,center);
+        padding: 0 15px;
+        border-bottom: 1px solid #d9d9d9;
+        font-size: @font-14;
+    }
+
+
+  }
+
+
+}
+</style>
diff --git a/src/views/product/gjzj-detail.vue b/src/views/product/gjzj-detail.vue
new file mode 100644
index 0000000..ed1848c
--- /dev/null
+++ b/src/views/product/gjzj-detail.vue
@@ -0,0 +1,118 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-06 15:36:43
+ * @Description: 购机直降——订单详情
+ -->
+<template>
+    <div class="hb-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <van-cell  title='客户信息' readonly isTitle></van-cell>
+                <van-cell :value="form.userName" title='用户名称' readonly ></van-cell>
+                <van-cell :value="form.mblNo" title='手机号' readonly ></van-cell>
+                <van-cell :value="form.statusStr" :value-class="statusColor" title='订单状态' readonly ></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell title='合约信息' readonly isTitle></van-cell>
+                <van-cell :value="form.contName" title='合约套餐' readonly ></van-cell>
+                <van-cell :value="form.settAmt + '元'" title='结算金额' readonly ></van-cell>
+                <van-cell :value="form.monthlyFees+ '元'" title='月缴话费' readonly ></van-cell>
+                <van-cell :value="form.monthlyPayments+ '元'" title='月还款额' readonly ></van-cell>
+                <van-cell :value="form.insTermStr" title='期数' readonly ></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell  title='商品信息' readonly isTitle></van-cell>
+                <van-cell :value="form.goodsBrand" title='品牌' readonly ></van-cell>
+                <van-cell :value="form.goodsName" title='名称' readonly ></van-cell>
+                <van-cell :value="form.goodsModel" title='型号' readonly ></van-cell>
+                <van-cell :value="form.goodsPrice +'元'" title='价格' readonly ></van-cell>
+                <van-cell :value="form.goodsImei" title='IMEI' readonly ></van-cell>
+            </div>
+
+            <div class="cell-group" >
+                <van-cell :value="form.chanName || '无'" title='办理渠道' readonly></van-cell>
+                <van-cell :value="form.merName || '无'" title='办理商户' readonly></van-cell>
+                <van-cell :value="form.storeName || '无'" title='办理门店' readonly></van-cell>
+                <van-cell :value="form.recordPerson || '无'" title='办单员' readonly></van-cell>
+            </div>
+        </div>
+
+        <!-- <f-button class="btn-upload" v-if="orderInfo.uploadBtn == 1" @on-click="$router.push(`/contract-order-upload/${orderInfo.orderId}`)" >上传合约凭证</f-button> -->
+        <van-button class="btn" v-if="form.uploadBtn == 1" @click="go">上传合约凭证</van-button>
+    </div>
+</template>
+
+<script>
+    export default {
+        data(){
+
+            return {
+                form:{},
+                statusColor:''
+            }
+        },
+        created(){
+            this.init()
+        },
+        methods:{
+            init() {
+                this.$api.getGjzjDetail(this.$route.query.id).then(res => {
+                        this.form = res.body;
+                    if(this.form) {
+                        if (this.form.status == 1) {
+                            this.statusColor = 'status-val-done';
+                        } else if (this.form.status == 2) {
+                            this.statusColor = 'status-val-error';
+                        } else if (this.form.status == 6) {
+                            this.statusColor = 'status-val-wait';
+                        } else if (this.form.status == 0) {
+                            this.statusColor = 'status-val-wait';
+                        }
+                    }
+                })
+            },
+            // 跳转到上传合约凭证页面
+            go(){
+                this.$router.push(`/contract-order-upload/${this.form.orderId}`)
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#FF9900;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+    .btn{
+        width: 320px;
+        background: @c-bg-default;
+        color: @c-text-fff;
+        display: block;
+        margin: 30px auto;
+    }
+</style>
diff --git a/src/views/product/gzzj-detail.vue b/src/views/product/gzzj-detail.vue
new file mode 100644
index 0000000..844ac13
--- /dev/null
+++ b/src/views/product/gzzj-detail.vue
@@ -0,0 +1,146 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-06 15:38:14
+ * @Description: 购机直降——订单详情
+ -->
+<template>
+    <div class="hb-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <group title="合约信息">
+                <van-cell title="合约套餐" :value="form.contName"></van-cell>
+                <van-cell title="直降金额" :value="form.strDownAmt"></van-cell>
+                <van-cell title="电子券金额" :value="form.eleBondAmt"></van-cell>
+                <van-cell title="月缴话费" :value="form.monthConsAmt"></van-cell>
+                <van-cell title="期数" :value="form.term"></van-cell>
+            </group>
+            <group title="商品信息">
+                <van-cell title="设备类型" :value="form.deviceType"></van-cell>
+                <van-cell title="品牌" :value="form.goodsBrand"></van-cell>
+                <van-cell title="名称" :value="form.goodsName"></van-cell>
+                <van-cell title="价格" :value="form.goodsPrice"></van-cell>
+                <van-cell title="IMEI/SN" :value="form.goodsImei||form.snCode"></van-cell>
+            </group>
+            <group title="订单信息">
+                <van-cell title="订单号" :value="form.orderId"></van-cell>
+                <van-cell title="订单状态" :value="form.status"></van-cell>
+                <van-cell title="用户姓名" :value="form.userName"></van-cell>
+                <van-cell title="合约手机号" :value="form.mblNo"></van-cell>
+                <van-cell v-if="form.applyTime" title="申请日期" :value="form.applyTime | timeformat('yyyy-MM-dd HH:mm:ss')"></van-cell>
+                <van-cell v-if="form.signTime" title="签约日期" :value="form.signTime | timeformat('yyyy-MM-dd HH:mm:ss')"></van-cell>
+            </group>
+            <group title="照片信息">
+                <div class="content_item fl_flex fl_row" @click="enterPics">
+                    <div>相关图片</div>
+                    <van-icon name="arrow" />
+                </div>
+            </group>
+        </div>
+    </div>
+</template>
+
+<script>
+    import Vue from "vue";
+    import { Dialog } from "vant";
+    import {
+        dateFormat
+    } from 'vux'
+    Vue.use(Dialog);
+    export default {
+        data(){
+            return {
+                form:{},
+                canRefund: 0,
+                orderId: this.$route.query.id,
+                showModal: false
+            }
+        },
+        created(){
+            this.init()
+        },
+        methods:{
+            init() {
+                this.$api.getGzzjDetail(this.$route.query.id).then(res => {
+                        this.form = res.body;
+                        this.canRefund = res.body.canRefund;
+                });
+            },
+            enterPics() {
+                sessionStorage.pics = JSON.stringify(this.form.gzzjPicUrlVoList)
+                let queryObj = JSON.stringify(this.form.gzzjPicUrlVoList)
+                this.$router.push({
+                    path: '/product/gzzj_order_detail_pics',
+                    query:queryObj
+                })
+            }
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#FF9900;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .van-cell-group {
+            margin-bottom: 10px;
+        }
+    }
+    .btn{
+        width: 320px;
+        background: @c-bg-default;
+        color: @c-text-fff;
+        display: block;
+        margin: 30px auto;
+    }
+    .btn-return {
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+        }
+    .content_item {
+        width: 100%;
+        min-height: 39px;
+        padding-right: 20px;
+        padding-left: 10px;
+        margin: 10px;
+        margin-top: 20px;
+        border-bottom: 1px solid #F1F1F1;
+        justify-content: space-between;
+        box-sizing: border-box;
+        position: relative;
+        display: flex;
+        div:nth-child(1) {
+            width: 35%;
+        }
+        div:nth-child(2) {
+            width: 60%;
+            text-align: right;
+            word-break:break-all;
+            span {
+                display: inline-block;
+                text-align: left;
+            }
+        }
+    }
+</style>
diff --git a/src/views/product/gzzj_order_detail_pics.vue b/src/views/product/gzzj_order_detail_pics.vue
new file mode 100644
index 0000000..0c0a57e
--- /dev/null
+++ b/src/views/product/gzzj_order_detail_pics.vue
@@ -0,0 +1,82 @@
+
+<template>
+    <div class="hb-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="order_detail_pics fl_flex">
+            <van-nav-bar :fixed="true">
+                <template #left>
+                    <i class="iconfont iconzuojiantou" style="font-size: 24px" @click="back"></i>
+                </template>
+                <template #title>
+                    <span class="header-title">相关图片</span>
+                </template>
+            </van-nav-bar>
+            <div class="imgs fl_flex fl_row fl_wrap" @click="bigImg">
+                <img :src="item" alt="" v-for="(item,index) in list" :key="index">
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+
+    import { NavBar } from 'vant';
+    Vue.use(NavBar);
+    import { ImagePreview } from 'vant';
+    Vue.use(ImagePreview)
+    export default {
+        name: 'order_detail_pics',
+        data() {
+            return {
+                list: []
+            }
+        },
+        created() {
+            // let src = 'https://t.finlean.com'
+            let src = `https://${window.location.host}`;
+            this.list = JSON.parse(sessionStorage.getItem('pics')).map((item,index) => {
+                return `${src}/${item.path}`
+            })
+        },
+        methods: {
+            back() {
+                this.$router.go(-1)
+            },
+            bigImg() {
+                ImagePreview(this.list);
+            }
+        }
+    }
+</script>
+<style lang="less">
+    .order_detail_pics{
+        width: 100%;
+        height: 100%;
+        background: #F5F5F7;
+        .imgs {
+            width: 100%;
+            margin-top: 40px;
+            padding: 10px 10px;
+            box-sizing: border-box;
+            justify-content: flex-start;
+            img {
+                width: 22vw;
+                height: 22vw;
+                margin-top: 5px;
+                margin-right: 6px;
+            }
+        }
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .van-cell-group {
+            margin-bottom: 10px;
+        }
+    }
+</style>
diff --git a/src/views/product/hb-detail.vue b/src/views/product/hb-detail.vue
new file mode 100644
index 0000000..4c8916f
--- /dev/null
+++ b/src/views/product/hb-detail.vue
@@ -0,0 +1,382 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-09 20:32:32
+ * @Description: 花呗分期——订单详情
+ -->
+<template>
+    <div class="hb-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <van-cell :value="form.userName" title='用户名称' readonly></van-cell>
+                <van-cell :value="form.mblNo" title='手机号' readonly></van-cell>
+                <!-- <van-cell :value="form.aliAccount.replace(/(\d{3})\d*(\d{2})/,'$1xxxxxx$2')" title='用户支付宝账号' readonly></van-cell> -->
+                <van-cell v-if="form.aliAccount" :value="form.aliAccount" title='用户支付宝账号' readonly></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell :value="form.platRate" title='智享服务费率' readonly></van-cell>
+                <van-cell :value="form.zfbRate" title='花呗分期手续费率' readonly></van-cell>
+                <van-cell :value="form.settAmt" title='分期本金' readonly></van-cell>
+                <van-cell :value="form.insTerm" title='分期期数' readonly></van-cell>
+                <van-cell :value="form.insAmt" title='还款总额' readonly></van-cell>
+                <van-cell v-if="form.dealTime" :value="form.dealTime | timeformat('yyyy-MM-dd')" title='交易时间' readonly></van-cell>
+                <van-cell v-else title='交易时间' readonly></van-cell>
+                <van-cell :value="form.goodsBrand" title='商品品牌' readonly></van-cell>
+                <van-cell :value="form.goodsName" title='商品名称' readonly></van-cell>
+                <van-cell :value="form.statusStr" :value-class="statusColor" title='订单状态' readonly></van-cell>
+                <van-cell :value="form.zfbVersionName" title='办单通道' readonly></van-cell>
+                <van-cell :value="form.payTypeName" title='支付方式' readonly></van-cell>
+            </div>
+
+            <div class="cell-group" >
+                <van-cell :value="form.chanName || '无'" title='办理渠道' readonly></van-cell>
+                <van-cell :value="form.merName || '无'" title='办理商户' readonly></van-cell>
+                <van-cell :value="form.storeName || '无'" title='办理门店' readonly></van-cell>
+                <van-cell :value="form.recordPerson || '无'" title='办单员' readonly></van-cell>
+            </div>
+
+            <!-- <div class="cell-group">
+                <van-cell :value="form.rate + '%'" title='费率' readonly></van-cell>
+            </div> -->
+        </div>
+         <!-- 短信验证码弹窗 -->
+        <van-popup v-model="yzmShow">
+            <div class="yzmbox">
+                <van-icon name="cross" class="yzmbox-close" @click="yzmShow = false" />
+                <p style="font-size:16px;color:#000;">请输入短信验证码</p>
+                <div class="yzmbox-contnet">
+                    <div class="yzmbox-contnet-yzm">
+                        <span>将发送到手机号:</span>
+                        <span>{{userinfo.mblNo.replace(/(\d{3})\d*(\d{4})/, '$1****$2') }}</span>
+                    </div>
+                </div>
+                <div class="yzmbox-contnet-get">
+                    <input type="text" v-model="yzmVal" placeholder="请输入验证码">
+                    <span class="yzmbox-contnet-get-yzm" @click="getYzm">{{ yzmText }}</span>
+                </div>
+                <van-button class="showbtn" :color="$store.state.backColor" round @click="yzmYes">确认</van-button>
+            </div>
+        </van-popup>
+        <!-- 退单成功弹窗 -->
+        <van-popup v-model="yzmOkShow">
+            <div class="yzmOkbox">
+                <van-icon name="cross" class="yzmbox-close" @click="yzmOkShow = false" />
+                <div class="yzmOkbox-img">
+                    <img src="../../assets/img/tkimg.png" alt="">
+                </div>
+                <p>退款成功</p>
+            </div>
+        </van-popup>
+        <footer class="footer flex-center-g">
+            <van-button class="btn" :color="$store.state.backColor" v-if="hasHjBackUrl" @click="goHj">返回红茄</van-button>
+            <van-button class="btn" :color="$store.state.backColor" v-if="form.refundStatus==1&&hasHjTokenGetRefBtn" @click="refund">退款</van-button>
+            <van-button class="btn" :color="$store.state.backColor" v-if="form.status==0&&form.payTypeName!='反扫'" @click="showCode">显示支付二维码</van-button>
+        </footer>
+
+    </div>
+</template>
+
+<script>
+    import {
+        mapState
+    } from 'vuex';
+    import Vue from 'vue';
+    import { Notify } from 'vant';
+
+    Vue.use(Notify);
+    export default {
+        data() {
+            return {
+                // typeId: this.$route.query.typeId,
+                Open: true, //倒计时开关
+                yzmText:'获取验证码',
+                yzmOkShow: false,
+                yzmVal: '',
+                yzmShow: false, //获取验证码弹窗
+                form: {},
+                statusColor:'',
+                hasHjBackUrl:false,
+                backUrl:''
+            }
+        },
+        computed: {
+            payTypeStr(){
+                if(this.form.payType == 1){
+                    return '正选'
+                }
+                if(this.form.payType == 2){
+                    return '反选'
+                }
+            },
+            id() {
+                return this.$route.query.id
+            },
+            typeId() {
+                return this.$route.query.typeId
+            },
+            // hasHjBackUrl(){
+            //     if(sessionStorage.hjBackUrl!='null' && sessionStorage.hjBackUrl){
+            //         return true
+            //     }else{
+            //         return false
+            //     }
+            // },
+            hasHjTokenGetRefBtn(){
+                if(typeof localStorage.hjToken !='undefined' && localStorage.hjToken){
+                    return false
+                }else{
+                    return true
+                }
+            },
+            ...mapState(['userinfo'])
+        },
+        created() {
+            this.init()
+            console.log(this.typeId)
+        },
+        methods: {
+            goHj(){
+                //console.log(this.$route.query.backUrl.split('https'))
+                location.href=sessionStorage.hjBackUrl
+            },
+            //验证码弹窗确认事件
+            yzmYes() {
+                // console.log(this.yzmVal)
+                if(this.yzmVal == '' || this.yzmVal == null){
+                    Notify({ type: 'danger', message: '验证码为空!' });
+                } else {
+                    this.$api.hbOrderRefund({orderId:Number(this.id), verCode:this.yzmVal}).then(() => {
+                        // this.$router.replace(`/product/dmf-detail?id=${this.orderId}`)
+                        this.$notify('退款成功')
+                        this.yzmShow = false;
+                        this.yzmVal = '',
+                        this.yzmOkShow = true;
+                        setTimeout(() => {
+                            location.reload()
+                        }, 700);
+                    })
+                   
+                }
+            },
+            //获取验证码
+            getYzm() {
+                let sendParams = {
+                    // mblNo: this.userinfo.mblNo,
+                    mblNo: this.userinfo.mblNo,
+                    verCodeType: 11,
+                };
+                if(this.typeId != 200002) {
+                    sendParams.verCodeType =11;
+                }
+                if(this.Open) {
+                    this.$api.userSendMsg(sendParams).then(res => {
+                        console.log(res.body)
+                        this.Open = false
+                        let num = 60;
+                        this.yzmText = num + '秒后重发';
+                        let _this = this
+                        let timer = setInterval(() => {
+                            num--;
+                            // _this.$set(_this.yzmText = num + 's重发')                       
+                            if(num === 0) {
+                                clearInterval(timer);
+                                _this.Open = true;
+                                _this.yzmText = '重新发送';
+                            } else {
+                                _this.yzmText = num + '秒后重发';
+                            }
+                        },1000)
+                    }).catch(()=>{
+                        this.Open = true;
+                    })
+                }
+            },
+            init() {
+                this.$api.getHBDetail(this.id).then((res) => {
+                    this.form = res.body || {};
+                   
+                   if(res.body.backUrl !='null' && res.body.backUrl){
+                       this.hasHjBackUrl = true
+                       this.backUrl = res.body.backUrl
+                   }else{
+                       this.hasHjBackUrl = false
+                   }
+                    if(this.form) {
+                        if (this.form.status == 1) {
+                            this.statusColor = 'status-val-done';
+                        } else if (this.form.status == 2) {
+                            this.statusColor = 'status-val-error';
+                        } else if (this.form.status == 3) {
+                            this.statusColor = 'status-val-refund';
+                        } else if (this.form.status == 0) {
+                            this.statusColor = 'status-val-wait';
+                        } else {
+                            this.statusColor = 'status-val-done';
+                        }
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            //退款
+            refund() {
+                this.$dialog.confirm({
+                    message: '是否确认退款'
+                }).then(() => {
+                     this.yzmShow = true
+                    // this.$api.hbOrderRefund(this.id).then((res) => {
+                    //     if (res.errorCode == 0) {
+                    //         this.$notify('退款成功');
+                    //         this.$router.back();
+                    //     }
+                    // }).catch((err) => {
+
+                    // });
+                }).catch(() => {
+                    // on cancel
+                });
+                // this
+
+            },
+            //展示二维码
+            showCode() {
+                if (this.form.payCode) {
+                    window.sessionStorage.setItem("hbpayQrCodeUrl", this.form.payCode);
+                    let queryObj = {
+                        payQrCodeUrl:this.form.payCode,
+                        orderId: this.form.orderId,
+                        totalAmount: this.form.insAmt,
+                        term: this.form.insTerm,
+                        typeId:this.typeId || '',
+                        platRate:this.form.platRate,
+                        zfbRate:this.form.zfbRate,
+                        backUrl:this.backUrl,
+                        capitalAmt:this.form.settAmt
+                    }
+                    this.$router.push({
+                        path: "/hb-getHBQRCode",
+                        query: queryObj
+                    })
+                }
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .showbtn{
+        width: 60%;
+        background: @c-default;
+        color: #fff;
+        position: absolute;
+        bottom: 15px;
+    }
+    .yzmbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        // background: #f5f5f5;
+        .flex('', center, center, column);
+        text-align: center;
+        border-radius: 6px;
+        background: #fff;
+        padding-top: 34px;
+        &-close{
+            color: #999;
+            font-size: 16px;
+            position: absolute;
+            right: 8px;
+            top: 8px;
+        }
+        &-contnet{
+            margin-top: 11px;
+            color: #999;
+            font-size: 14px;
+            &-yzm{
+                .flex(center, center);
+                // font-size: 14px;
+                span{
+                    font-size: 14px;
+                    // color: #999;
+                }
+                
+            }
+            &-get{
+                width: 80%;
+                margin: 0 10%;
+                margin-top: 30px;
+                .flex(space-between, center);
+                 input{
+                    border: none;
+                    width: 45%;
+                    background: #fff;
+                    height: 30px;
+                }
+                &-yzm{
+                    color: @c-default;
+                }
+            }
+        }
+    }
+    .yzmOkbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        .flex(center, center,'',column);
+        &-img{
+            width: 90px;
+            height: 90px;
+            img{
+                width: 100%;
+                height: 100%;
+            }
+        }
+        p{
+            font-size: 16px;
+            color: #000;
+            margin-top: 16px;
+        }
+    }
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#FF9900;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+
+    .footer {
+        padding-bottom: 30px;
+        margin: 0 8px;
+        background-color: @c-bg-f5;
+
+        .btn {
+            width: 50%;
+            color: @c-text-fff;
+            background-color: @c-bg-default;
+        }
+    }
+</style>
diff --git a/src/views/product/hbhy-detail.vue b/src/views/product/hbhy-detail.vue
new file mode 100644
index 0000000..bd51d61
--- /dev/null
+++ b/src/views/product/hbhy-detail.vue
@@ -0,0 +1,393 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-10-21 17:19:32
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 10:54:36
+ * @Description:
+ -->
+<template>
+  <div class="hbhy-big-box">
+    <!-- <van-nav-bar title="办理套餐" left-arrow @click-left="onClickLeft" /> -->
+    <!-- <x-header title="办理套餐" :left-options="{backText:''}"></x-header> -->
+    <v-navbar title="办理套餐" fixed></v-navbar>
+    <div class="color-box"></div>
+    <div class="user-information">
+      <div class="tit">
+        <p>用户信息</p>
+      </div>
+      <div class="user-name">
+        <van-field
+          v-model="userName"
+          label="用户姓名"
+          placeholder="请输入用户姓名"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="user-number">
+        <van-field
+          v-model="userNumber"
+          maxlength="11"
+          label="入网号码"
+          placeholder="请输入用户入网号码"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="user-number">
+        <van-field
+          v-model="tradeName"
+          label="商品名称"
+          placeholder="请输入商品名称"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+    </div>
+    <div class="package-information">
+      <div class="tit">
+        <p>套餐信息</p>
+      </div>
+      <div class="package-tariff">
+        <van-field
+        class="myStyle"
+          disabled
+          custom-style="color:#333333"
+          v-model="query.packageTariff"
+          label="套餐资费"
+          placeholder="请输入套餐资费"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="total-repayment">
+        <van-field
+        class="myStyle"
+          disabled
+          v-model="query.totalRepayment"
+          label="总还款额"
+          placeholder="请输入总还款额"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="monthly-repayment">
+        <van-field
+        class="myStyle"
+          disabled
+          v-model="query.monthlyRepayment"
+          label="每月还款"
+          placeholder="请输入每月还款"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="trim">
+        <van-field
+        class="myStyle"
+          disabled
+          v-model="query.trim"
+          label="还款期数"
+          placeholder="请输入还款期数"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+      <div class="merchant-arrival">
+        <van-field
+          disabled
+          v-model="query.merchantArrival"
+          label="商户到账"
+          placeholder="请输入商户到账"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+        <van-field
+          disabled
+          v-model="platRatePr"
+          label="智享服务费率"
+          label-width="150px"
+          placeholder="请输入智享服务费率"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+        <van-field
+          disabled
+          v-model="zfbRatePr"
+          label="花呗分期手续费率"
+          label-width="150px"
+          placeholder="请输入花呗分期手续费率"
+          input-align="right"
+          label-class="input-text"
+          style="font-size: 14px;
+        color: rgba(102, 102, 102, 1);
+        font-family:PingFang SC;"
+        />
+      </div>
+    </div>
+    <van-button
+      round
+      type="default"
+      color="#896EDB"
+      style="margin-left:10%;margin-top:120px;width:80%;background:#896EDB;color:#fff"
+      @click="createdQRCode"
+    >生成二维码</van-button>
+    <Vdialog @cancel="cancel" :show="showDia"></Vdialog>
+  </div>
+</template>
+<script>
+import Vue from "vue";
+import { NavBar } from "vant";
+import { Field } from "vant";
+import { Button } from "vant";
+import { Notify } from "vant";
+import Vdialog from "@/components/common/v-dialog.vue";
+Vue.use(Notify);
+Vue.use(Button);
+Vue.use(Field);
+Vue.use(NavBar);
+export default {
+  components:{
+    Vdialog
+  },
+  data() {
+    return {
+      showDia:false,
+      query: {
+        zfbRate:'',
+        platRate:'',
+        merchantArrival: "", //商户到账
+        trim: "", //分期期数
+        monthlyRepayment: "", //每月还款
+        totalRepayment: "", //总还款额
+        packageTariff: "", //套餐资费
+        contId: "", //套餐id
+        contName: "" //套餐名称
+      },
+      userName: "", //用户名
+      userNumber: "", //用户手机号
+      tradeName: "" //商品名称
+    };
+  },
+  computed:{
+            zfbRatePr(){
+                if(this.query.zfbRate){
+                    return this.query.zfbRate + '%'
+                }else{
+                    return ''
+                }
+                
+            },
+            platRatePr(){
+                if(this.query.platRate){
+                    return this.query.platRate + '%'
+                }else{
+                    return ''
+                }
+                
+            }
+        },
+  created(){
+    if(sessionStorage.hb_session_info&&this.$route.query.isCreateOrderPush){
+        let hb_session_info = JSON.parse(sessionStorage.hb_session_info)
+        this.tradeName=hb_session_info.tradeName
+        this.userName=hb_session_info.userName
+        this.userNumber=hb_session_info.userNumber
+    }
+  },     
+  mounted() {
+    this.query = this.$route.query;
+    console.log(this.query);
+  },
+  methods: {
+    cancel(val){
+      this.showDia = val
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    createdQRCode() {
+      if (
+        this.userName == "" ||
+        this.userNumber == "" ||
+        this.tradeName == ""
+      ) {
+        Notify({ type: "primary", message: "姓名、入网号码、商品名称不能为空" });
+        return;
+      }
+      let hb_session_info = {
+        userName:this.userName,
+        userNumber:this.userNumber,
+        tradeName:this.tradeName
+      }
+      sessionStorage.hb_session_info=JSON.stringify(hb_session_info)
+
+      let params = {
+        contId: this.query.contId,
+        goodsName: this.tradeName,
+        userName: this.userName,
+        userMblNo: this.userNumber,
+        zfbVersion: this.$route.query.zfbVersion
+      };
+      this.$api.hbhyjCreate(params).then(res => {
+        let body = res.body;
+        this.orderId = body.orderId;
+        this.payQrCodeUrl = body.payQrCodeUrl;
+        this.totalAmount = body.totalAmount;
+        // this.trial.repayPerMonth = body.repayPerMonth;
+        // this.trial.feeRate = body.feeRate;
+        this.zfbRate = body.zfbRate
+        this.platRate = body.platRate
+        this.capitalAmt = body.capitalAmt
+        this.showConfirm = true;
+        if (body.payQrCodeUrl) {
+          sessionStorage.setItem("hbpayQrCodeUrl", body.payQrCodeUrl);
+        }
+        this.$router.push({
+          path: "/hb-getHBQRCode",
+          query: {
+            orderId: body.orderId,
+            payQrCodeUrl: body.payQrCodeUrl,
+            totalAmount: body.totalAmount,
+            term: this.query.trim,
+            typeId: this.query.typeId || "",
+            zfbRate: this.zfbRate,
+            platRate: this.platRate,
+            capitalAmt:this.capitalAmt
+          }
+        });
+      },err=>{
+        if(err.errorCode === 30006007){
+          console.log(111)
+          this.showDia = true
+        }
+      });
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.hbhy-big-box {
+  & {
+    position: relative;
+    background-color: #f5f5f5;
+    height: auto;
+    padding-bottom: 70px;
+  }
+  .color-box {
+    width: 100%;
+    height: 260px;
+    background: linear-gradient(
+      180deg,
+      rgba(85, 78, 128, 1),
+      rgba(66, 61, 93, 1)
+    );
+  }
+  .user-information {
+    & {
+      position: absolute;
+      width: 90%;
+      //height: 220px;
+      background-color: white;
+      left: 5%;
+      top: 98px;
+      border-radius: 6px;
+    }
+    div {
+      height: 50px;
+      width: 100%;
+      border-bottom: 1px solid #f5f5f5;
+    }
+    .tit {
+      p {
+        color: #333333;
+        font-size: 16px;
+        font-weight: bold;
+        line-height: 50px;
+        margin-left: 5px;
+      }
+      p::before {
+        width: 3px;
+        height: 16px;
+        content: "";
+        background: rgba(137, 110, 219, 1);
+        border-radius: 0px 3px 0px 3px;
+        // left: -8px;
+        // top: 24px;
+        // position: absolute;
+        display: inline-block;
+        margin-right: 5px;
+      }
+    }
+  }
+  .package-information {
+    & {
+      width: 90%;
+      height: 302px;
+      background-color: white;
+      margin: auto;
+      margin-top: 65px;
+      border-radius:6px;
+    }
+    div:not(:last-child) {
+      height: 50px;
+      width: 100%;
+      border-bottom: 1px solid #f5f5f5;
+    }
+    /deep/ .van-field__control:disabled {
+        //color: #333333;
+        -webkit-text-fill-color: #333333!important;
+        background-color: transparent;
+        opacity: 1;
+      }
+    .tit {
+      p {
+        color: #333333;
+        font-size: 16px;
+        font-weight: bold;
+        line-height: 50px;
+        margin-left: 5px;
+      }
+      p::before {
+        width: 3px;
+        height: 16px;
+        content: "";
+        background: rgba(137, 110, 219, 1);
+        border-radius: 0px 3px 0px 3px;
+        // left: -8px;
+        // top: 24px;
+        // position: absolute;
+        display: inline-block;
+        margin-right: 5px;
+      }
+    }
+  }
+}
+</style>
diff --git a/src/views/product/hbjl-detail.vue b/src/views/product/hbjl-detail.vue
new file mode 100644
index 0000000..24190f4
--- /dev/null
+++ b/src/views/product/hbjl-detail.vue
@@ -0,0 +1,339 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-06-13 16:44:11
+ * @Description: 花呗间联——订单详情
+ -->
+<template>
+    <div class="hbjl-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <van-cell :value="form.userName" title='用户名称' readonly></van-cell>
+                <van-cell :value="form.mblNo" title='联系方式' readonly></van-cell>
+                <!-- <van-cell :value="form.aliAccount.replace(/(\d{3})\d*(\d{2})/,'$1xxxxxx$2')" title='用户支付宝账号' readonly></van-cell> -->
+                <van-cell v-if="form.aliAccount" :value="form.aliAccount" title='银行卡账户' readonly></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell :value="form.userAmt" title='到账金额' readonly></van-cell>
+                <van-cell :value="form.insAmt" title='还款金额' readonly></van-cell>
+                <!-- <van-cell :value="form.insAmt" title='还款总额' readonly></van-cell> -->
+                <van-cell v-if="form.dealTime" :value="form.dealTime | timeformat('yyyy-MM-dd')" title='交易日期' readonly></van-cell>
+                <van-cell v-else title='交易时间' readonly></van-cell>
+                <van-cell :value="form.insTermStr" title='期数' readonly></van-cell>
+                <van-cell :value="form.statusStr" :value-class="statusColor" title='订单状态' readonly></van-cell>
+                <van-cell :value="form.orderId" title='订单号' readonly></van-cell>
+            </div>
+
+            <div class="cell-group" >
+                <van-cell :value="form.chanName || '无'" title='办理渠道' readonly></van-cell>
+                <van-cell :value="form.merName || '无'" title='办理商户' readonly></van-cell>
+                <van-cell :value="form.storeName || '无'" title='办理门店' readonly></van-cell>
+                <van-cell :value="form.recordPerson || '无'" title='办单员' readonly></van-cell>
+            </div>
+        </div>
+         <!-- 短信验证码弹窗 -->
+        <van-popup v-model="yzmShow">
+            <div class="yzmbox">
+                <van-icon name="cross" class="yzmbox-close" @click="yzmShow = false" />
+                <p style="font-size:16px;color:#000;">请输入短信验证码</p>
+                <div class="yzmbox-contnet">
+                    <div class="yzmbox-contnet-yzm">
+                        <span>将发送到手机号:</span>
+                        <span>{{userinfo.mblNo.replace(/(\d{3})\d*(\d{4})/, '$1****$2') }}</span>
+                    </div>
+                </div>
+                <div class="yzmbox-contnet-get">
+                    <input type="text" v-model="yzmVal" placeholder="请输入验证码">
+                    <span class="yzmbox-contnet-get-yzm" @click="getYzm">{{ yzmText }}</span>
+                </div>
+                <van-button class="showbtn" round @click="yzmYes">确认</van-button>
+            </div>
+        </van-popup>
+        <!-- 退单成功弹窗 -->
+        <van-popup v-model="yzmOkShow">
+            <div class="yzmOkbox">
+                <van-icon name="cross" class="yzmbox-close" @click="yzmOkShow = false" />
+                <div class="yzmOkbox-img">
+                    <img src="../../assets/img/tkimg.png" alt="">
+                </div>
+                <p>退款成功</p>
+            </div>
+        </van-popup>
+        <!-- <footer class="footer flex-center-g">
+            <van-button class="btn" v-if="form.refundStatus==1" @click="refund">退款</van-button>
+            <van-button class="btn" v-if="form.status==0" @click="showCode">显示支付二维码</van-button>
+        </footer> -->
+
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import Vue from 'vue';
+    import { Notify } from 'vant';
+
+    Vue.use(Notify);
+    export default {
+        data() {
+            return {
+                // typeId: this.$route.query.typeId,
+                Open: true, //倒计时开关
+                yzmText:'获取验证码',
+                yzmOkShow: false,
+                yzmVal: '',
+                yzmShow: false, //获取验证码弹窗
+                form: {},
+                statusColor:''
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            id() {
+                return this.$route.query.id
+            },
+            typeId() {
+                return this.$route.query.typeId
+            },
+        },
+        created() {
+            this.init()
+            console.log(this.typeId)
+        },
+        methods: {
+            //验证码弹窗确认事件
+            yzmYes() {
+                // console.log(this.yzmVal)
+                if(this.yzmVal == '' || this.yzmVal == null){
+                    Notify({ type: 'danger', message: '验证码为空!' });
+                } else {
+                    this.$api.hbOrderRefund({orderId:Number(this.id), verCode:this.yzmVal}).then(() => {
+                        // this.$router.replace(`/product/dmf-detail?id=${this.orderId}`)
+                        this.$notify('退款成功')
+                        this.yzmShow = false;
+                        this.yzmVal = '',
+                        this.yzmOkShow = true;
+                        setTimeout(() => {
+                            location.reload()
+                        }, 700);
+                    })
+                   
+                }
+            },
+            //获取验证码
+            getYzm() {
+                let sendParams = {
+                    // mblNo: this.userinfo.mblNo,
+                    mblNo: this.userinfo.mblNo,
+                    verCodeType: 11,
+                };
+                if(this.typeId != 200002) {
+                    sendParams.verCodeType =11;
+                }
+                if(this.Open) {
+                    this.$api.userSendMsg(sendParams).then(res => {
+                        console.log(res.body)
+                        this.Open = false
+                        let num = 60;
+                        this.yzmText = num + '秒后重发';
+                        let _this = this
+                        let timer = setInterval(() => {
+                            num--;
+                            // _this.$set(_this.yzmText = num + 's重发')                       
+                            if(num === 0) {
+                                clearInterval(timer);
+                                _this.Open = true;
+                                _this.yzmText = '重新发送';
+                            } else {
+                                _this.yzmText = num + '秒后重发';
+                            }
+                        },1000)
+                    }).catch(()=>{
+                        this.Open = true;
+                    })
+                }
+            },
+            init() {
+                console.log(111)
+                this.$api.hbjlOrderOrderDtl({
+                    orderId:this.id
+                }).then((res) => {
+                    this.form = res.body || {};
+                    if(this.form) {
+                        if (this.form.status == 1) {
+                            this.statusColor = 'status-val-done';
+                        } else if (this.form.status == 2) {
+                            this.statusColor = 'status-val-error';
+                        } else if (this.form.status == 3) {
+                            this.statusColor = 'status-val-refund';
+                        } else if (this.form.status == 0) {
+                            this.statusColor = 'status-val-wait';
+                        } else {
+                            this.statusColor = 'status-val-done';
+                        }
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            //退款
+            refund() {
+                this.$dialog.confirm({
+                    message: '是否确认退款'
+                }).then(() => {
+                     this.yzmShow = true
+                    // this.$api.hbOrderRefund(this.id).then((res) => {
+                    //     if (res.errorCode == 0) {
+                    //         this.$notify('退款成功');
+                    //         this.$router.back();
+                    //     }
+                    // }).catch((err) => {
+
+                    // });
+                }).catch(() => {
+                    // on cancel
+                });
+                // this
+
+            },
+            //展示二维码
+            showCode() {
+                if (this.form.payCode) {
+                    window.sessionStorage.setItem("hbpayQrCodeUrl", this.form.payCode);
+                    let queryObj = {
+                        payQrCodeUrl:this.form.payCode,
+                        orderId: this.form.orderId,
+                        totalAmount: this.form.insAmt,
+                        term: this.form.insTerm,
+                        typeId:this.typeId || ''
+                    }
+                    this.$router.push({
+                        path: "/hb-getHBQRCode",
+                        query: queryObj
+                    })
+                }
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .showbtn{
+        width: 60%;
+        background: @c-default;
+        color: #fff;
+        position: absolute;
+        bottom: 15px;
+    }
+    .yzmbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        // background: #f5f5f5;
+        .flex('', center, center, column);
+        text-align: center;
+        border-radius: 6px;
+        background: #fff;
+        padding-top: 34px;
+        &-close{
+            color: #999;
+            font-size: 16px;
+            position: absolute;
+            right: 8px;
+            top: 8px;
+        }
+        &-contnet{
+            margin-top: 11px;
+            color: #999;
+            font-size: 14px;
+            &-yzm{
+                .flex(center, center);
+                // font-size: 14px;
+                span{
+                    font-size: 14px;
+                    // color: #999;
+                }
+                
+            }
+            &-get{
+                width: 80%;
+                margin: 0 10%;
+                margin-top: 30px;
+                .flex(space-between, center);
+                 input{
+                    border: none;
+                    width: 45%;
+                    background: #fff;
+                    height: 30px;
+                }
+                &-yzm{
+                    color: @c-default;
+                }
+            }
+        }
+    }
+    .yzmOkbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        .flex(center, center,'',column);
+        &-img{
+            width: 90px;
+            height: 90px;
+            img{
+                width: 100%;
+                height: 100%;
+            }
+        }
+        p{
+            font-size: 16px;
+            color: #000;
+            margin-top: 16px;
+        }
+    }
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#FF9900;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .hbjl-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+
+    .footer {
+        padding-bottom: 30px;
+        margin: 0 8px;
+        background-color: @c-bg-f5;
+
+        .btn {
+            width: 50%;
+            color: @c-text-fff;
+            background-color: @c-bg-default;
+        }
+    }
+</style>
diff --git a/src/views/product/lthyj-detail.vue b/src/views/product/lthyj-detail.vue
new file mode 100644
index 0000000..edc5825
--- /dev/null
+++ b/src/views/product/lthyj-detail.vue
@@ -0,0 +1,120 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-09 20:32:32
+ * @Description: 花呗分期——订单详情
+ -->
+<template>
+    <div class="lthyj-detail h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <van-cell value="" title='合约信息' readonly style="font-weight: bold"></van-cell>
+                <van-cell :value="form.contName" title='合约套餐' readonly></van-cell>
+                <van-cell :value="form.monthConsAmt | dealMoney" title='月缴话费' readonly></van-cell>
+                <van-cell :value="form.term | dealTerm" title='期数' readonly></van-cell>
+                <van-cell :value="form.eleBondAmt | dealMoney" title='电子券金额' readonly></van-cell>
+                <van-cell :value="form.strDownAmt | dealMoney" title='直降金额' readonly></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell value="" title='商品信息' readonly style="font-weight: bold"></van-cell>
+                <van-cell :value="form.goodsBrand" title='品牌' readonly></van-cell>
+                <van-cell :value="form.goodsModel" title='规格' readonly></van-cell>
+                <van-cell :value="form.goodsPrice | dealMoney" title='价格' readonly></van-cell>
+            </div>
+
+            <div class="cell-group" >
+                <van-cell value="" title='订单信息' readonly style="font-weight: bold"></van-cell>
+                <van-cell :value="form.orderId || '暂无'" title='订单号' readonly></van-cell>
+                <van-cell :value="form.orderStatus || '暂无'" title='订单状态' readonly></van-cell>
+                <van-cell :value="form.userName || '暂无'" title='用户姓名' readonly></van-cell>
+                <van-cell :value="form.contMblNo || '暂无'" title='合约手机号' readonly></van-cell>
+                <van-cell :value="form.applyTime | dealTime" title='申请时间' readonly></van-cell>
+                <van-cell :value="form.signTime | dealTime" title='签约时间' readonly></van-cell>
+            </div>
+
+            <div class="cell-group" >
+                <van-cell value="" title='收货照片' readonly style="font-weight: bold"></van-cell>
+                <van-image width="100px" height="100px" :src="form.recImage" @click="preview(form.recImage)"/>
+            </div>
+            <van-image-preview v-model="showImg" :images="images">
+            </van-image-preview>
+        </div>
+    </div>
+</template>
+
+<script>
+    import {mapState} from 'vuex';
+    import Vue from 'vue';
+    import { Image as VanImage } from 'vant';
+    import dataformat from "@/utils/dateformat";
+    import { ImagePreview } from 'vant';
+    // 全局注册
+    Vue.use(ImagePreview);
+    Vue.use(VanImage);
+    export default {
+        data() {
+            return {
+                form: {},
+                showImg: false,
+                images: []
+            }
+        },
+        filters: {
+            dealMoney(val) {
+                return val ? `${val}元` : ''
+            },
+            dealTerm(val) {
+                return val ? `${val}期` : ''
+            },
+            dealTime(val) {
+                return val ? dataformat.format(val, 'yyyy-MM-dd HH:mm') : "暂无"
+            },
+        },
+        computed: {
+            id() {
+                return this.$route.query.id
+            },
+            typeId() {
+                return this.$route.query.typeId
+            },
+            ...mapState(['userinfo'])
+        },
+        created() {
+            this.init()
+        },
+        methods: {
+            init() {
+                this.$api.cuccOrderDetail({orderId: this.$route.query.id}).then((res) => {
+                    this.form = res.body || {};
+                }).catch((err) => {});
+            },
+            preview(src) {
+                console.log(src)
+                this.showImg = true
+                this.images = [src]
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .lthyj-detail {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            width: 100%;
+            background: #fff;
+            margin-bottom: 10px;
+            .van-image {
+                margin: 20px
+            }
+        }
+    }
+</style>
diff --git a/src/views/product/shtx-detail.vue b/src/views/product/shtx-detail.vue
new file mode 100644
index 0000000..44d50ed
--- /dev/null
+++ b/src/views/product/shtx-detail.vue
@@ -0,0 +1,363 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-09-26 12:48:29
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-07-30 16:28:00
+ * @Description: 
+ -->
+<template>
+    <div class="hb-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <v-cell :value="form.userName" label='用户名称' readonly></v-cell>
+                <v-cell :value="form.mblNo" label='手机号' readonly></v-cell>
+                 <van-cell v-if="form.aliAccount" :value="form.aliAccount" title='用户支付宝账号' readonly></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell :value="form.platRate" title='智享服务费率' readonly></van-cell>
+                <van-cell :value="form.zfbRate" title='花呗分期手续费率' readonly></van-cell>
+                <v-cell :value="form.settAmt" label='分期本金' readonly></v-cell>
+                <v-cell :value="form.insTerm" label='分期期数' readonly></v-cell>
+                <v-cell :value="form.insAmt" label='还款总额' readonly></v-cell>
+                <v-cell v-if="form.dealTime" :value="form.dealTime | timeformat('yyyy-MM-dd')" label='交易时间' readonly></v-cell>
+                <v-cell v-else label='交易时间' readonly></v-cell>
+                <v-cell :value="form.goodsBrand" label='商品品牌' readonly></v-cell>
+                <v-cell :value="form.goodsName" label='商品名称' readonly></v-cell>
+                <v-cell :value="form.statusStr" label='订单状态' readonly></v-cell>
+                <v-cell :value="form.zfbVersionName" label='办单通道' readonly></v-cell>
+                <v-cell :value="form.payTypeName" label='支付方式' readonly></v-cell>
+            </div>
+
+            <div class="cell-group" >
+                <v-cell :value="form.chanName || '无'" label='办理渠道' readonly></v-cell>
+                <v-cell :value="form.merName || '无'" label='办理商户' readonly></v-cell>
+                <v-cell :value="form.storeName || '无'" label='办理门店' readonly></v-cell>
+                <v-cell :value="form.recordPerson || '无'" label='办单员' readonly></v-cell>
+            </div>
+
+            <!-- <div class="cell-group">
+                <v-cell :value="form.rate + '%'" label='费率' readonly></v-cell>
+            </div> -->
+        </div>
+        <!-- 短信验证码弹窗 -->
+        <van-popup v-model="yzmShow">
+            <div class="yzmbox">
+                <van-icon name="cross" class="yzmbox-close" @click="yzmShow = false" />
+                <p style="font-size:16px;color:#000;">请输入短信验证码</p>
+                <div class="yzmbox-contnet">
+                    <div class="yzmbox-contnet-yzm">
+                        <span>将发送到手机号:</span>
+                        <span>{{userinfo.mblNo.replace(/(\d{3})\d*(\d{4})/, '$1****$2') }}</span>
+                    </div>
+                </div>
+                <div class="yzmbox-contnet-get">
+                    <input type="text" v-model="yzmVal" placeholder="请输入验证码">
+                    <span class="yzmbox-contnet-get-yzm" @click="getYzm">{{ yzmText }}</span>
+                </div>
+                <van-button class="showbtn" round @click="yzmYes">确认</van-button>
+            </div>
+        </van-popup>
+        <!-- 退单成功弹窗 -->
+        <van-popup v-model="yzmOkShow">
+            <div class="yzmOkbox">
+                <van-icon name="cross" class="yzmbox-close" @click="yzmOkShow = false" />
+                <div class="yzmOkbox-img">
+                    <img src="../../assets/img/tkimg.png" alt="">
+                </div>
+                <p>退款成功</p>
+            </div>
+        </van-popup>
+        <footer class="footer flex-center-g">
+            <van-button class="btn" v-if="hasHjBackUrl" @click="goHj">返回红茄</van-button>
+            <van-button class="btn" v-if="form.refundStatus==1&&hasHjTokenGetRefBtn" @click="refund">退款</van-button>
+            <van-button class="btn" v-if="form.status==0&&form.payTypeName!='反扫'" @click="showCode">显示支付二维码</van-button>
+        </footer>
+
+    </div>
+</template>
+
+<script>
+    import {
+        mapState
+    } from 'vuex';
+    import Vue from 'vue';
+    import { Notify } from 'vant';
+
+    Vue.use(Notify);
+    export default {
+        data() {
+            return {
+                Open: true, //倒计时开关
+                yzmText:'获取验证码',
+                yzmOkShow: false,
+                yzmVal: '',
+                noDemo: 13900000000,
+                yzmShow: false, //获取验证码弹窗
+                form: {},
+                statusColor:'',
+                hasHjBackUrl:false,
+                backUrl:'',
+            }
+        },
+        computed: {
+            payTypeStr(){
+                if(this.form.payType == 1){
+                    return '正选'
+                }
+                if(this.form.payType == 2){
+                    return '反选'
+                }
+            },
+            id() {
+                return this.$route.query.id
+            },
+            typeId() {
+                return this.$route.query.typeId
+            },
+            // hasHjBackUrl(){
+            //     if(sessionStorage.hjBackUrl!='null' && sessionStorage.hjBackUrl){
+            //         return true
+            //     }else{
+            //         return false
+            //     }
+            // },
+            hasHjTokenGetRefBtn(){
+                if(typeof localStorage.hjToken !='undefined' && localStorage.hjToken){
+                    return false
+                }else{
+                    return true
+                }
+            },
+            ...mapState(['userinfo'])
+        },
+        created() {
+            this.init()
+        },
+        methods: {
+            goHj(){
+                //console.log(this.$route.query.backUrl.split('https'))
+                location.href=sessionStorage.hjBackUrl
+            },
+            //验证码弹窗确认事件
+            yzmYes() {
+                // console.log(this.yzmVal)
+                if(this.yzmVal == '' || this.yzmVal == null){
+                    Notify({ type: 'danger', message: '验证码为空!' });
+                } else {
+                    this.$api.hbOrderRefund({orderId:Number(this.id), verCode:this.yzmVal}).then(() => {
+                        // this.$router.replace(`/product/dmf-detail?id=${this.orderId}`)
+                        this.$notify('退款成功')
+                        this.yzmShow = false;
+                        this.yzmVal = '',
+                        this.yzmOkShow = true;
+                        setTimeout(() => {
+                            location.reload()
+                        }, 700);
+                    })
+                   
+                }
+            },
+            //获取验证码
+            getYzm() {
+                let sendParams = {
+                    mblNo: this.userinfo.mblNo,
+                    verCodeType: 13,
+                };
+                if(this.Open) {
+                    this.$api.userSendMsg(sendParams).then(res => {
+                        console.log(res.body)
+                        this.Open = false
+                        let num = 60;
+                        this.yzmText = num + 's重发';
+                        let _this = this
+                        let timer = setInterval(() => {
+                            num--;
+                            // _this.$set(_this.yzmText = num + 's重发')                       
+                            if(num === 0) {
+                                clearInterval(timer);
+                                _this.Open = true;
+                                _this.yzmText = '重新发送';
+                            } else {
+                                _this.yzmText = num + 's重发';
+                            }
+                        },1000)
+                    }).catch(()=>{
+                        this.Open = true;
+                    })
+                }
+            },
+            init() {
+                // console.log(this.id)
+                this.$api.getHBDetail(this.id).then((res) => {
+                    this.form = res.body || {};
+                    if(res.body.backUrl !='null' && res.body.backUrl){
+                       this.hasHjBackUrl = true
+                       this.backUrl = res.body.backUrl
+                   }else{
+                       this.hasHjBackUrl = false
+                   }
+                    if(this.form && this.form.status) {
+                        if (this.form.status == 1) {
+                            this.statusColor = 'status-val-done';
+                        } else if (this.form.status == 2) {
+                            this.statusColor = 'status-val-error';
+                        } else if (this.form.status == 3) {
+                            this.statusColor = 'status-val-refund';
+                        } else if (this.form.status == 0) {
+                            this.statusColor = 'status-val-wait';
+                        } else {
+                            this.statusColor = 'status-val-done';
+                        }
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            //退款
+            refund() {
+                this.$dialog.confirm({
+                    message: '是否确认退款'
+                }).then(() => {
+                     this.yzmShow = true
+                    // this.$api.hbOrderRefund(this.id).then((res) => {
+                    //     if (res.errorCode == 0) {
+                    //         this.$notify('退款成功');
+                    //         this.$router.back();
+                    //     }
+                    // }).catch((err) => {
+
+                    // });
+                }).catch(() => {
+                    // on cancel
+                });
+                // this
+
+            },
+            //展示二维码
+            showCode() {
+                if (this.form.payCode) {
+                    // window.sessionStorage.setItem("hbpayQrCodeUrl", this.payCode);
+                    let queryObj = {
+                        orderId: this.form.orderId,
+                        totalAmount: this.form.insAmt,
+                        term: this.form.insTerm,
+                        payQrCodeUrl:this.form.payCode,
+                        typeId:this.typeId || '',
+                        platRate:this.form.platRate,
+                        zfbRate:this.form.zfbRate,
+                        backUrl:this.backUrl
+                    }
+                    this.$router.push({
+                        path: "/shtx-getShtxQRCode",
+                        query: queryObj
+                    })
+                }
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .showbtn{
+        width: 60%;
+        background: @c-default;
+        color: #fff;
+        position: absolute;
+        bottom: 15px;
+    }
+    .yzmbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        // background: #f5f5f5;
+        .flex('', center, center, column);
+        text-align: center;
+        border-radius: 6px;
+        background: #fff;
+        padding-top: 34px;
+        &-close{
+            color: #999;
+            font-size: 16px;
+            position: absolute;
+            right: 8px;
+            top: 8px;
+        }
+        &-contnet{
+            margin-top: 11px;
+            color: #999;
+            font-size: 14px;
+            &-yzm{
+                .flex(center, center);
+                // font-size: 14px;
+                span{
+                    font-size: 14px;
+                    // color: #999;
+                }
+                
+            }
+            &-get{
+                width: 80%;
+                margin: 0 10%;
+                margin-top: 30px;
+                .flex(space-between, center);
+                 input{
+                    border: none;
+                    width: 45%;
+                    background: #fff;
+                    height: 30px;
+                }
+                &-yzm{
+                    color: @c-default;
+                }
+            }
+        }
+    }
+    .yzmOkbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        .flex(center, center,'',column);
+        &-img{
+            width: 90px;
+            height: 90px;
+            img{
+                width: 100%;
+                height: 100%;
+            }
+        }
+        p{
+            font-size: 16px;
+            color: #000;
+            margin-top: 16px;
+        }
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+
+    .footer {
+        padding-bottom: 30px;
+        margin: 0 8px;
+        background-color: @c-bg-f5;
+
+        .btn {
+            width: 50%;
+            color: @c-text-fff;
+            background-color: @c-bg-default;
+        }
+    }
+</style>
diff --git a/src/views/product/wxScore-detail.vue b/src/views/product/wxScore-detail.vue
new file mode 100644
index 0000000..f4e51e8
--- /dev/null
+++ b/src/views/product/wxScore-detail.vue
@@ -0,0 +1,214 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-09 20:32:32
+ * @Description: 花呗分期——订单详情
+ -->
+<template>
+    <div class="hb-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <van-cell :value="form.chanNo" title='渠道编码' readonly></van-cell>
+                <van-cell :value="form.orderStatusName" title='订单状态' readonly></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell :value="form.contCode" title='活动代码' readonly></van-cell>
+                <van-cell :value="form.contName" title='活动名称' readonly></van-cell>
+                <van-cell :value="form.term" title='合约期' readonly></van-cell>
+                <van-cell :value="form.guaranteedAmt" title='担保金额' readonly></van-cell>
+                <van-cell :value="form.monGiftAmt" title='月赠费金额' readonly></van-cell>
+            </div>
+            <div class="cell-group" >
+                <van-cell :value="form.userName" title='用户姓名' readonly></van-cell>
+                <van-cell :value="form.regionName" title='归属地' readonly></van-cell>
+                <van-cell :value="form.cardNo" title='身份证号码' readonly></van-cell>
+                <van-cell :value="form.mblNo" title='手机号码' readonly></van-cell>
+                <van-cell :value="form.merName" title='商户名称' readonly></van-cell>
+            </div>
+
+            <!-- <div class="cell-group">
+                <van-cell :value="form.rate + '%'" title='费率' readonly></van-cell>
+            </div> -->
+        </div>
+        <footer class="footer flex-center-g">
+            <van-button class="btn" :color="$store.state.backColor" v-if="form.refundBtnStatus==1" @click="refund">返销</van-button>
+            <van-button class="btn" :color="$store.state.backColor" v-if="form.status==0" @click="showCode">显示支付二维码</van-button>
+        </footer>
+
+    </div>
+</template>
+
+<script>
+    import {
+        mapState
+    } from 'vuex';
+    import Vue from 'vue';
+    import { Notify } from 'vant';
+
+    Vue.use(Notify);
+    export default {
+        data() {
+            return {
+                form: {},
+            }
+        },
+        computed: {
+
+        },
+        created() {
+            this.$api.wxScoreDetail({
+                id:this.$route.query.orderId
+            }).then(res => {
+                this.form = res.body || {};
+            }, err => err);
+        },
+        methods: {
+            //退款
+            refund() {
+                this.$dialog.confirm({
+                    message: '是否确认返销'
+                }).then(() => {
+                    this.$api.wxScoreRefund({
+                        id:this.form.id
+                    }).then(res => {
+                        this.$tool.toast('返销中');
+                    }, err => err);
+                }).catch(() => {
+                    // on cancel
+                });
+                // this
+
+            },
+            //展示二维码
+            showCode() {
+                if (this.form.payCode) {
+                    let queryObj = {
+                        payQrCodeUrl:this.form.payCode
+                    }
+                    this.$router.push({
+                        path: "/wx-getWxQRCode",
+                        query: queryObj
+                    })
+                }
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .showbtn{
+        width: 60%;
+        background: @c-default;
+        color: #fff;
+        position: absolute;
+        bottom: 15px;
+    }
+    .yzmbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        // background: #f5f5f5;
+        .flex('', center, center, column);
+        text-align: center;
+        border-radius: 6px;
+        background: #fff;
+        padding-top: 34px;
+        &-close{
+            color: #999;
+            font-size: 16px;
+            position: absolute;
+            right: 8px;
+            top: 8px;
+        }
+        &-contnet{
+            margin-top: 11px;
+            color: #999;
+            font-size: 14px;
+            &-yzm{
+                .flex(center, center);
+                // font-size: 14px;
+                span{
+                    font-size: 14px;
+                    // color: #999;
+                }
+
+            }
+            &-get{
+                width: 80%;
+                margin: 0 10%;
+                margin-top: 30px;
+                .flex(space-between, center);
+                 input{
+                    border: none;
+                    width: 45%;
+                    background: #fff;
+                    height: 30px;
+                }
+                &-yzm{
+                    color: @c-default;
+                }
+            }
+        }
+    }
+    .yzmOkbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        .flex(center, center,'',column);
+        &-img{
+            width: 90px;
+            height: 90px;
+            img{
+                width: 100%;
+                height: 100%;
+            }
+        }
+        p{
+            font-size: 16px;
+            color: #000;
+            margin-top: 16px;
+        }
+    }
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#FF9900;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+
+    .footer {
+        padding-bottom: 30px;
+        margin: 0 8px;
+        background-color: @c-bg-f5;
+
+        .btn {
+            width: 50%;
+            color: @c-text-fff;
+            background-color: @c-bg-default;
+        }
+    }
+</style>
diff --git a/src/views/product/xyg-detail.vue b/src/views/product/xyg-detail.vue
new file mode 100644
index 0000000..221083f
--- /dev/null
+++ b/src/views/product/xyg-detail.vue
@@ -0,0 +1,175 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors  : 小明丶
+ * @LastEditTime : 2020-01-16 11:22:19
+ * @Description: 购机直降——订单详情
+ -->
+<template>
+    <div class="hb-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <van-cell readonly isTitle>
+                    <template slot="title">
+                      <img src="../../assets/img/imgti.png" alt="" class="imgti">
+                      <span class="custom-title">客户信息</span>
+                    </template>
+                </van-cell>
+                <van-cell :value="form.userName" title='用户名称' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+                <van-cell :value="form.mblNo" title='手机号' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+                <van-cell :value="form.statusStr" title='订单状态' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell readonly isTitle>
+                    <template slot="title">
+                      <img src="../../assets/img/imgti.png" alt="" class="imgti">
+                      <span class="custom-title">合约信息</span>
+                    </template>
+                </van-cell>
+                <van-cell :value="form.contName" title='合约套餐' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+                <van-cell :value="form.settAmt + '元'" title='结算金额' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+                <van-cell :value="form.monthlyFees+ '元'" title='月缴话费' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+                <!--<van-cell :value="form.monthlyPayments+ '元'" title='月还款额' readonly ></van-cell>-->
+                <van-cell :value="form.insTermStr" title='期数' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell readonly isTitle>
+                    <template slot="title">
+                      <img src="../../assets/img/imgti.png" alt="" class="imgti">
+                      <span class="custom-title">商品信息</span>
+                    </template>
+                </van-cell>
+                <van-cell :value="form.goodsBrand" title='品牌' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+                <van-cell :value="form.goodsName" title='名称' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+                <van-cell :value="form.goodsModel" title='型号' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+                <van-cell :value="form.goodsPrice +'元'" title='价格' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+                <van-cell :value="form.goodsImei" title='IMEI' readonly title-class="tot" value-class="val" style="width: 96%;margin-left: 2%;"></van-cell>
+            </div>
+
+        </div>
+
+        <!-- <f-button class="btn-upload" v-if="orderInfo.uploadBtn == 1" @on-click="$router.push(`/contract-order-upload/${orderInfo.orderId}`)" >上传合约凭证</f-button> -->
+        <f-confirm v-model="showModal" @on-confirm='confirmYes' :showCancelBtn='true'>
+            <div>是否确认退货</div>
+        </f-confirm>
+        <van-button class="btn" v-if="form.uploadBtn == 1" @click="go">上传合约凭证</van-button>
+        <van-button class="btn-return" v-if="canRefund == 1" round @click="returnGoods">退货</van-button>
+    </div>
+</template>
+
+<script>
+    import Vue from "vue";
+    import { Dialog } from "vant";
+    Vue.use(Dialog);
+    export default {
+        data(){
+            return {
+                form:{},
+                canRefund: 0,
+                orderId: this.$route.query.id,
+                showModal: false
+            }
+        },
+        created(){
+            this.init()
+        },
+        methods:{
+            init() {
+                this.$api.getXygDetail(this.$route.query.id).then(res => {
+                        this.form = res.body;
+                        this.canRefund = res.body.canRefund;
+                });
+            },
+            // 跳转到上传合约凭证页面
+            go(){
+                this.$router.push(`/xyg/upload/${this.form.orderId}`)
+            },
+            //退货
+            returnGoods() {
+                this.showModal = true;
+                },
+
+            confirmYes () {
+                this.$api.h_xygRefund({ orderId: this.orderId }).then(res => {
+                        this.init();
+                    });
+            }
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#FF9900;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+        .imgti{
+            width: 6px;
+            height: 13px;
+            display: inline-block;
+            vertical-align: middle;
+        }
+        .content {
+            padding: 10px 0;
+        }
+
+        .cell-group {
+            margin-bottom: 12px;
+            width: 100%;
+            box-sizing: border-box;
+            padding: 0 16px;
+            background-color: white;
+            .tixing{
+                display:inline-block;
+                border-right:solid 6px rgb(226, 112, 207);
+                border-top:solid 6px transparent;
+                border-bottom:solid 6px transparent;   
+                height:6px;
+                vertical-align: middle;
+                background:linear-gradient(180deg,rgba(241,120,220,1),rgba(210,125,249,1));   
+            }
+            .tot{
+                font-size: 14px;
+                color: #999999;
+            }
+            .val{
+                font-size: 14px;
+                color: #333333;
+               
+            }
+            .custom-title{
+                font-size: 15px;
+                font-weight:bold;
+                color:rgba(51,51,51,1);
+            }
+        }
+    }
+    .btn{
+        width: 320px;
+        background: @c-bg-default;
+        color: @c-text-fff;
+        display: block;
+        margin: 30px auto;
+    }
+    .btn-return {
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+        }
+</style>
diff --git a/src/views/product/xyg-hb-detail.vue b/src/views/product/xyg-hb-detail.vue
new file mode 100644
index 0000000..15f3a05
--- /dev/null
+++ b/src/views/product/xyg-hb-detail.vue
@@ -0,0 +1,336 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-03-19 15:52:24
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-08-11 16:22:06
+ * @Description:
+ -->
+<template>
+    <div class="hb-detail-box h-100-g">
+        <van-nav-bar title="订单详情" fixed @click-left="goBack" v-if="this.$route.query.whereGo==1">
+          <template slot='left'>
+            <i class="iconfont iconzuojiantou" style="font-size:25px;color:#333;vertical-align: middle;"></i>
+          </template>
+        </van-nav-bar>
+        <v-navbar title="订单详情" fixed v-else></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <van-cell :value="form.userName" title='用户名称' readonly></van-cell>
+                <van-cell :value="form.mblNo" title='手机号' readonly></van-cell>
+                <van-cell v-if="form.aliAccount" :value="form.aliAccount" title='用户支付宝账号' readonly></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell :value="form.platRate" title='智享服务费率' readonly></van-cell>
+                <van-cell :value="form.zfbRate" title='花呗分期手续费率' readonly></van-cell>
+                <van-cell :value="form.settAmt" title='结算金额' readonly></van-cell>
+                <van-cell :value="form.insTermStr" title='分期期数' readonly></van-cell>
+                <van-cell :value="form.insAmt" title='还款总额' readonly></van-cell>
+                <van-cell v-if="form.dealTime" :value="form.dealTime | timeformat('yyyy-MM-dd')" title='交易时间' readonly></van-cell>
+                <van-cell v-else title='交易时间' readonly></van-cell>
+                <van-cell :value="form.retFee" title='每月还款' readonly></van-cell>
+                <van-cell :value="form.goodsName" title='商品名称' readonly></van-cell>
+                <van-cell :value="form.statusStr" :value-class="statusColor" title='订单状态' readonly></van-cell>
+            </div>
+
+            <div class="cell-group" >
+                <van-cell :value="form.chanName || '无'" title='办理渠道' readonly></van-cell>
+                <van-cell :value="form.merName || '无'" title='办理商户' readonly></van-cell>
+                <van-cell :value="form.storeName || '无'" title='办理门店' readonly></van-cell>
+                <van-cell :value="form.recordPerson || '无'" title='办单员' readonly></van-cell>
+            </div>
+        </div>
+         <!-- 短信验证码弹窗 -->
+        <van-popup v-model="yzmShow">
+            <div class="yzmbox">
+                <van-icon name="cross" class="yzmbox-close" @click="yzmShow = false" />
+                <p style="font-size:16px;color:#000;">请输入短信验证码</p>
+                <div class="yzmbox-contnet">
+                    <div class="yzmbox-contnet-yzm">
+                        <span>将发送到手机号:</span>
+                        <span>{{userinfo.mblNo.replace(/(\d{3})\d*(\d{4})/, '$1****$2') }}</span>
+                    </div>
+                </div>
+                <div class="yzmbox-contnet-get">
+                    <input type="text" v-model="yzmVal" placeholder="请输入验证码">
+                    <span class="yzmbox-contnet-get-yzm" @click="getYzm">{{ yzmText }}</span>
+                </div>
+                <van-button class="showbtn" round @click="yzmYes">确认</van-button>
+            </div>
+        </van-popup>
+        <!-- 退单成功弹窗 -->
+        <!-- <van-popup v-model="yzmOkShow">
+            <div class="yzmOkbox">
+                <van-icon name="cross" class="yzmbox-close" @click="yzmOkShow = false" />
+                <div class="yzmOkbox-img">
+                    <img src="../../assets/img/tkimg.png" alt="">
+                </div>
+                <p>退款成功</p>
+            </div>
+        </van-popup> -->
+        <footer class="footer flex-center-g">
+            <!-- <van-button class="btn" v-if="form.refundStatus==1" @click="refund">退款</van-button> -->
+            <van-button class="btn" v-if="form.status==0" @click="showCode">显示支付二维码</van-button>
+        </footer>
+
+    </div>
+</template>
+
+<script>
+    import {
+        mapState
+    } from 'vuex';
+    import Vue from 'vue';
+    import { Notify } from 'vant';
+    import { NavBar } from 'vant';
+
+    Vue.use(NavBar);
+    Vue.use(Notify);
+    export default {
+        data() {
+            return {
+                // typeId: this.$route.query.typeId,
+                Open: true, //倒计时开关
+                yzmText:'获取验证码',
+                yzmVal: '',
+                yzmShow: false, //获取验证码弹窗
+                form: {},
+                statusColor:''
+            }
+        },
+        computed: {
+            id() {
+                return this.$route.query.id
+            },
+            typeId() {
+                return this.$route.query.typeId
+            },
+            ...mapState(['userinfo'])
+        },
+        created() {
+            this.init()
+        },
+        methods: {
+            // 返回
+            goBack(){
+                this.$router.push({
+                    path:'/main/home',
+                    query:{
+                       navIndex:6,
+                       typeId:200011,
+                       prodId:30000012
+                    }
+                })
+            },
+            //验证码弹窗确认事件
+            yzmYes() {
+                if(this.yzmVal == '' || this.yzmVal == null){
+                    Notify({ type: 'danger', message: '验证码为空!' });
+                } else {
+                    this.$api.xygOrderRefundHb({orderId:Number(this.id), verCode:this.yzmVal}).then(() => {
+                        this.$notify('退款成功')
+                        this.yzmShow = false;
+                        this.yzmVal = '',
+                        setTimeout(() => {
+                            location.reload()
+                        }, 700);
+                    })
+
+                }
+            },
+            //获取验证码
+            getYzm() {
+                let sendParams = {
+                    mblNo: this.userinfo.mblNo,
+                    verCodeType: 15,
+                };
+                if(this.Open) {
+                    this.$api.userSendMsg(sendParams).then(res => {
+                        console.log(res.body)
+                        this.Open = false
+                        let num = 60;
+                        this.yzmText = num + '秒后重发';
+                        let _this = this
+                        let timer = setInterval(() => {
+                            num--;
+                            if(num === 0) {
+                                clearInterval(timer);
+                                _this.Open = true;
+                                _this.yzmText = '重新发送';
+                            } else {
+                                _this.yzmText = num + '秒后重发';
+                            }
+                        },1000)
+                    }).catch(()=>{
+                        this.Open = true;
+                    })
+                }
+            },
+            init() {
+                this.$api.xygOrderHbOrderDtl({
+                    orderId:this.id
+                    }).then((res) => {
+                    this.form = res.body || {};
+                    if(this.form) {
+                        if (this.form.status == 1) {
+                            this.statusColor = 'status-val-done';
+                        } else if (this.form.status == 2) {
+                            this.statusColor = 'status-val-error';
+                        } else if (this.form.status == 3) {
+                            this.statusColor = 'status-val-refund';
+                        } else if (this.form.status == 0) {
+                            this.statusColor = 'status-val-wait';
+                        } else {
+                            this.statusColor = 'status-val-done';
+                        }
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            //退款
+            refund() {
+                this.$dialog.confirm({
+                    message: '是否确认退款'
+                }).then(() => {
+                     this.yzmShow = true
+                }).catch(() => {
+
+                });
+            },
+            //展示二维码
+            showCode() {
+                if (this.form.payCode) {
+                    window.sessionStorage.setItem("xygHbpayQrCodeUrl", this.form.payCode);
+                    let queryObj = {
+                        payQrCodeUrl:this.form.payCode,
+                        orderId: this.form.orderId,
+                        totalAmount: this.form.insAmt,
+                        term: this.form.insTerm,
+                        typeId:this.typeId || ''
+                    }
+                    this.$router.push({
+                        path: "/xyg-getXygHbQRCode",
+                        query: queryObj
+                    })
+                }
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .showbtn{
+        width: 60%;
+        background: @c-default;
+        color: #fff;
+        position: absolute;
+        bottom: 15px;
+    }
+    .yzmbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        // background: #f5f5f5;
+        .flex('', center, center, column);
+        text-align: center;
+        border-radius: 6px;
+        background: #fff;
+        padding-top: 34px;
+        &-close{
+            color: #999;
+            font-size: 16px;
+            position: absolute;
+            right: 8px;
+            top: 8px;
+        }
+        &-contnet{
+            margin-top: 11px;
+            color: #999;
+            font-size: 14px;
+            &-yzm{
+                .flex(center, center);
+                // font-size: 14px;
+                span{
+                    font-size: 14px;
+                    // color: #999;
+                }
+
+            }
+            &-get{
+                width: 80%;
+                margin: 0 10%;
+                margin-top: 30px;
+                .flex(space-between, center);
+                 input{
+                    border: none;
+                    width: 45%;
+                    background: #fff;
+                    height: 30px;
+                }
+                &-yzm{
+                    color: @c-default;
+                }
+            }
+        }
+    }
+    .yzmOkbox{
+        box-sizing: border-box;
+        width: 280px;
+        height: 225px;
+        position: relative;
+        overflow: hidden;
+        .flex(center, center,'',column);
+        &-img{
+            width: 90px;
+            height: 90px;
+            img{
+                width: 100%;
+                height: 100%;
+            }
+        }
+        p{
+            font-size: 16px;
+            color: #000;
+            margin-top: 16px;
+        }
+    }
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#FF9900;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+
+    .footer {
+        padding-bottom: 30px;
+        margin: 0 8px;
+        background-color: @c-bg-f5;
+
+        .btn {
+            width: 50%;
+            color: @c-text-fff;
+            background-color: @c-bg-default;
+        }
+    }
+</style>
+
diff --git a/src/views/product/zxh-detail.vue b/src/views/product/zxh-detail.vue
new file mode 100644
index 0000000..c890eea
--- /dev/null
+++ b/src/views/product/zxh-detail.vue
@@ -0,0 +1,129 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-06 15:38:14
+ * @Description: 购机直降——订单详情
+ -->
+<template>
+    <div class="hb-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <van-cell  title='客户信息' readonly isTitle></van-cell>
+                <van-cell :value="form.userName" title='用户名称' readonly ></van-cell>
+                <van-cell :value="form.mblNo" title='手机号' readonly ></van-cell>
+                <van-cell :value="form.statusStr" title='订单状态' readonly ></van-cell>
+                <van-cell v-if="form.rejMessage" :value="form.rejMessage" title='拒绝原因 ' readonly ></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell title='合约信息' readonly isTitle></van-cell>
+                <van-cell :value="form.contName" title='合约套餐' readonly ></van-cell>
+                <van-cell :value="form.settAmt + '元'" title='结算金额' readonly ></van-cell>
+                <van-cell :value="form.monthlyFees+ '元'" title='月缴话费' readonly ></van-cell>
+                <!--<van-cell :value="form.monthlyPayments+ '元'" title='月还款额' readonly ></van-cell>-->
+                <van-cell :value="form.insTermStr" title='期数' readonly ></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell  title='商品信息' readonly isTitle></van-cell>
+                <van-cell :value="form.goodsBrand" title='品牌' readonly ></van-cell>
+                <van-cell :value="form.goodsName" title='名称' readonly ></van-cell>
+                <van-cell :value="form.goodsModel" title='型号' readonly ></van-cell>
+                <van-cell :value="form.goodsPrice +'元'" title='价格' readonly ></van-cell>
+                <van-cell :value="form.goodsImei" title='IMEI' readonly ></van-cell>
+            </div>
+
+        </div>
+
+        <!-- <f-button class="btn-upload" v-if="orderInfo.uploadBtn == 1" @on-click="$router.push(`/contract-order-upload/${orderInfo.orderId}`)" >上传合约凭证</f-button> -->
+        <f-confirm v-model="showModal" @on-confirm='confirmYes' :showCancelBtn='true'>
+            <div>是否确认退货</div>
+        </f-confirm>
+        <van-button class="btn" v-if="form.uploadBtn == 1" @click="go">上传合约凭证</van-button>
+        <van-button class="btn-return" v-if="canRefund == 1" round @click="returnGoods">退货</van-button>
+    </div>
+</template>
+
+<script>
+    import Vue from "vue";
+    import { Dialog } from "vant";
+    Vue.use(Dialog);
+    export default {
+        data(){
+            return {
+                form:{},
+                canRefund: 0,
+                orderId: this.$route.query.id,
+                showModal: false
+            }
+        },
+        created(){
+            this.init()
+        },
+        methods:{
+            init() {
+                this.$api.getZxhDetail(this.$route.query.id).then(res => {
+                        this.form = res.body;
+                        this.canRefund = res.body.canRefund;
+                });
+            },
+            // 跳转到上传合约凭证页面
+            go(){
+                this.$router.push(`/hryd/upload/${this.form.orderId}`)
+            },
+            //退货
+            returnGoods() {
+                this.showModal = true;
+                },
+
+            confirmYes () {
+                this.$api.h_refund({ orderId: this.orderId }).then(res => {
+                        this.init();
+                    });
+            }
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#FF9900;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+    .btn{
+        width: 320px;
+        background: @c-bg-default;
+        color: @c-text-fff;
+        display: block;
+        margin: 30px auto;
+    }
+    .btn-return {
+        width: 84%;
+        margin: 0 8%;
+        background: @c-default;
+        color: @c-text-fff;
+        display: block;
+        margin-top: 15px;
+        }
+</style>
diff --git a/src/views/relatedPictures.vue b/src/views/relatedPictures.vue
new file mode 100644
index 0000000..30890e2
--- /dev/null
+++ b/src/views/relatedPictures.vue
@@ -0,0 +1,174 @@
+<template>
+  <div class="relatedPictures h-100-g">
+    <v-navbar title="相关照片" fixed></v-navbar>
+
+    <div class="imageUpload-header">
+      <div class="imageUpload-title">
+        <h4>营业执照照片</h4>
+        <div class="imageUpload-img" @click="clickImg(businessLicense)">
+          <img  :src="businessLicense" alt="">
+        </div>
+      </div>
+      <div class="imageUpload-title" v-if="zfbVersion==6 || zfbVersion==7">
+        <h4>办学许可证照片</h4>
+        <div class="imageUpload-img" @click="clickImg(bxxkPic)">
+          <img  :src="bxxkPic" alt="">
+        </div>
+      </div>
+      <div class="imageUpload-title">
+        <h4>法人身份证正反面</h4>
+        <div  @click="clickImg(idPositive)" class="imageUpload-img" style="width: 48%;margin-right: 1%;height: 100px; display: inline-block;vertical-align: middle">
+          <img :src="idPositive" alt="">
+        </div>
+        <div @click="clickImg(idBack)" class="imageUpload-img" style="width: 48%;display: inline-block;height: 100px;vertical-align: middle">
+          <img  :src="idBack" alt="">
+        </div>
+      </div>
+      <div class="imageUpload-title ">
+        <h4>门店店内照</h4>
+        <div class="image_fix">
+          <div class="imageUpload-img" v-for="(i,index) in storeHouse" :key="index">
+            <img @click="clickImg(i)" :src="i">
+          </div>
+        </div>
+      </div>
+      <div class="imageUpload-title ">
+        <h4>门店招牌照</h4>
+        <div class="image_fix">
+          <div class="imageUpload-img" v-for="(i,index) in storeSign" :key="index">
+            <img @click="clickImg(i)" :src="i">
+          </div>
+        </div>
+      </div>
+    </div>
+
+
+    <van-popup v-model="showToast" class="dialog-demo">
+      <div class="img-box" style="font-size: 0">
+        <img :src="curSrc" @click="closeDialog()" style="max-width:100%">
+      </div>
+    </van-popup>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: "relatedPictures",
+    data(){
+      return {
+        list: [],
+        showToast:false,
+        curSrc:null,
+        businessLicense: '',
+        storeOne: [],
+        bxxkPic:'',
+        idPositive: '',
+        idBack: '',
+        storeSign:[], // 门店招牌照片
+        storeHouse:[] // 门店内照片
+      }
+    },
+    computed:{
+      zfbVersion(){
+        return this.$route.query.zfbVersion
+      }
+    },
+    created(){
+      this.init();
+    },
+    methods:{
+      init() {
+        let _orgId = this.$route.query.merId;
+        this.$api.merFile({merId: _orgId,zfbVersion:this.$route.query.zfbVersion}).then(res => {
+          this.list = res.body;
+          for (let i = 0; i < this.list.length; i++) {
+            if (this.list[i].fileType == 0) {
+              this.businessLicense = this.list[i].fileUrl;
+            } else if (this.list[i].fileType == 1) {
+              this.storeOne.push(this.list[i].fileUrl);
+            } else if (this.list[i].fileType == 2) {
+              this.idPositive = this.list[i].fileUrl;
+            } else if (this.list[i].fileType == 3) {
+              this.idBack = this.list[i].fileUrl;
+            }else if (this.list[i].fileType == 6) {
+              this.storeHouse.push(this.list[i].fileUrl);
+            } else if (this.list[i].fileType == 7) {
+              this.storeSign.push(this.list[i].fileUrl);
+            } else if(this.list[i].fileType == 24){
+              this.bxxkPic = this.list[i].fileUrl
+            }
+          }
+        });
+      },
+      clickImg(item){
+        this.curSrc = null;
+        this.curSrc = item;
+        this.showToast=true;
+      },
+      closeDialog(){
+        this.curSrc = null;
+        this.showToast=false
+      }
+    }
+  }
+</script>
+
+<style scoped lang="less">
+.relatedPictures{
+    padding:60px 25px 100px 25px;
+
+  height: 100%;
+  .imageUpload-header{
+    height: 100%;
+  }
+  .imageUpload-title {
+    padding: 12px 24px;
+    h4 {
+      font-weight: normal;
+      padding-bottom: 0.5rem;
+    }
+    .imageUpload-img {
+      border: 1px dashed ;
+      width: 100%;
+      height: 150px;
+      position: relative;
+      img {
+        width: 100%;
+        height: 100%;
+      }
+    }
+    .add-center {
+      text-align: center;
+      width: 100%;
+      position: absolute;
+      left: 50%;
+      top: 50%;
+      transform: translate(-50%, -50%);
+      i {
+        font-size: 30px;
+      }
+      p {
+        span {
+          display: inline-block;
+        }
+      }
+    }
+  }
+  .image_fix {
+    display: flex;
+    > div {
+      width: 102px !important;
+      height: 102px !important;
+      margin-right: 7px;
+    }
+    > div:last-child {
+      margin-right: 0 !important;
+    }
+  }
+
+
+
+
+
+}
+</style>
diff --git a/src/views/template/detail.vue b/src/views/template/detail.vue
new file mode 100644
index 0000000..62984b8
--- /dev/null
+++ b/src/views/template/detail.vue
@@ -0,0 +1,1228 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-07-10 16:37:08
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-04 16:28:09
+ * @Description: 模板详情页面  逻辑比较复杂~
+ -->
+<template>
+    <div class="template-detail-box">
+        <header class="header flex-start-g" :style="{background:$store.state.lastColor}">
+            <svg class="icon" aria-hidden="true" style="width:25px;height:44px;fill:#fff;" @click="$router.back()">
+                <use xlink:href="#iconzuojiantou"></use>
+            </svg>
+            <h4 class="title text-center-g">{{tempId || merId ? '产品管理' : '新增模板'}}</h4>
+        </header>
+
+        <div class="temp-name">
+            <v-cell v-if="merId" label="模板" disabled readonly isLink :value="tempIndex ===0 ? '无模板' : currentTemp.tempName"
+                @click.native="openTempModal()"></v-cell>
+            <v-cell v-else label="模板名称" v-model="info.tempName" max="20" placeholder="请输入模板名称"> </v-cell>
+        </div>
+
+        <div class="product-box">
+            <!-- <v-cell v-if="!merId" label="商户匹配规则" :value="areaIndex ===0 ? '无匹配规则' : currentRules.name" max="20"
+                placeholder="请输入模板名称" readonly disabled isLink @click.native="openAreaModal()" class="det-btn"></v-cell> -->
+            <p  class="btn-d" v-if="activeVal !== 1 && !merId && detArr.length > 0" @click="showDet">查看详情</p>
+            <v-cell v-if="!merId" label="商户匹配规则" :value="activeVal == 1 ? '无匹配规则' : activeVal == 2 ? '选择省份规则':'选择渠道规则'" max="20"
+                placeholder="请输入模板名称" readonly disabled isLink @click.native="openAreaModal()"> </v-cell>
+            <!-- 产品 -->
+            <div v-for="item in info.prodInfList" :key="item.prodId"
+                :class="merId && tempIndex!==0 ? 'bg-gray' : 'bg-fff'">
+                <div v-if="item.isShow !==0" style="margin-top:10px;">
+                    <div class="flex-between-g p-title" :class="merId && tempIndex!==0 ? 'bg-gray' : ''">
+                        <p>{{item.prodName}}</p>
+                        <p v-if="item.prodId == 30000006 || item.prodId == 30000011">{{item.capitalStatusName}}</p>
+                        <van-switch v-model="item.status" :disabled="merId && tempIndex!==0" size="25px"
+                            @change="changeChildStatus(item)" :active-color="$store.state.backColor" inactive-color="#eeecf7" />
+                    </div>
+                    <div class="slider" v-if="item.issueList.length"></div>
+                    <div :class="item.status ? '' : 'bg-gray'" v-if="item.prodId != 30000014 && item.prodId != 30000008">
+                        <div class="input-box">
+                            <div class="item" v-for="(el,k) in item.issueList" :key="k">
+                                <div class="left goujiclass">
+                                    <p class="label">{{el.term}}期</p>
+                                    <input type="number" v-model.number="el.fee" :class="item.status ? '' : 'bg-gray'"
+                                        :disabled="!el.status || merId && tempIndex!==0" maxlength="5"
+                                        :placeholder="`请为商户设置${el.term}期费率,范围(${el.feeMin}-${el.feeMax})%`">
+                                </div>
+                                <van-icon v-if="el.status" name="passed" :color="$store.state.backColor" size="22"
+                                    @click="setChildStatus(item.status,el,false)" />
+                                <div v-else class="circle" :style="{border:`1px solid ${$store.state.backColor}`}" @click="setChildStatus(item.status,el,true)"></div>
+                            </div>
+                        </div>
+                        <div class="slider" v-if="item.contractList.length"></div>
+                        <div class="hb-box">
+                            <div class="item" v-for="(contract, j) in item.contractList" :key="j">
+                                <div class="left">
+                                    <p class="label">{{contract.name}}</p>
+                                    <div class="info">
+                                        <p>编号:{{contract.contNo}}</p>
+                                        <p>套餐资费:{{contract.packagePrices}}元</p>
+                                        <p class="btn" @click="lookDetails(contract)">查看详情</p>
+                                    </div>
+                                </div>
+                                <van-icon v-if="contract.status" name="passed" :color="$store.state.backColor" size="22"
+                                    @click="setChildStatus(item.status,contract,false)" />
+                                <div v-else class="circle" :style="{border:`1px solid ${$store.state.backColor}`}" @click="setChildStatus(item.status,contract,true)"></div>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- 商户收款 -->
+                    <div :class="item.status ? '' : 'bg-gray'" v-if="item.prodId == 30000008">
+                        <div class="input-box">
+                            <div class="item" v-for="(el,k) in item.payMethods" :key="k">
+                                <div class="left goujiclass">
+                                    <p class="label" style="width:100px">{{el.payMethodName}}费率</p>
+                                    <input type="number" style="text-algin:right" v-model.number="el.fee" :class="item.status ? '' : 'bg-gray'"
+                                        disabled maxlength="5"
+                                    >
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- 花呗间联 -->
+                    <div :class="item.status ? '' : 'bg-gray'" v-if="item.prodId == 30000014">
+                        <div class="input-box">
+                            <div  class="item-hbjl-box" v-for="(el,k) in item.issueList" :key="k">
+                                    <p class="label">{{el.term}}期</p>
+                                    <div>
+                                        <div class="item-hbjl">
+                                            <div class="left goujiclass">
+                                                <input type="number" v-model.number="el.fee" :class="item.status ? '' : 'bg-gray'"
+                                                    :disabled="!el.status || merId && tempIndex!==0" maxlength="5"
+                                                    :placeholder="`请为商户设置${el.term}期费率,范围(${el.feeMin}-${el.feeMax})%`">
+                                            </div>
+                                            <!-- <van-icon v-if="el.status" name="passed" color="#896EDB" size="22"
+                                                @click="setChildStatus(item.status,el,false)" />
+                                            <div v-else class="circle" @click="setChildStatus(item.status,el,true)"></div> -->
+                                        </div>
+                                        <div  class="item-hbjl">
+                                            <div class="left goujiclass">
+                                                <input type="number" v-model.number="el.amt" :class="item.status ? '' : 'bg-gray'"
+                                                    :disabled="!el.status || merId && tempIndex!==0" maxlength="5"
+                                                    :placeholder="`请为商户设置固定收益金额,范围(${el.amtMin}-${el.amtMax})`">
+                                            </div>
+                                            <!-- <van-icon v-if="el.status" name="passed" color="#896EDB" size="22"
+                                                @click="setChildStatus(item.status,el,false)" />
+                                            <div v-else class="circle" @click="setChildStatus(item.status,el,true)"></div> -->
+                                        </div>
+                                    </div>
+                                    <div>
+                                        <van-icon v-if="el.status" name="passed" :color="$store.state.backColor" size="22"
+                                                @click="setChildStatus(item.status,el,false)" />
+                                        <div v-else class="circle" :style="{border:`1px solid ${$store.state.backColor}`}" @click="setChildStatus(item.status,el,true)"></div>
+                                    </div>
+                            </div>
+                        </div>
+                        <div class="slider" v-if="item.contractList.length"></div>
+                        <div class="hb-box">
+                            <div class="item" v-for="(contract, j) in item.contractList" :key="j">
+                                <div class="left">
+                                    <p class="label">{{contract.name}}</p>
+                                    <div class="info">
+                                        <p>编号:{{contract.contNo}}</p>
+                                        <p>套餐资费:{{contract.packagePrices}}元</p>
+                                        <p class="btn" @click="lookDetails(contract)">查看详情</p>
+                                    </div>
+                                </div>
+                                <van-icon v-if="contract.status" name="passed" :color="$store.state.backColor" size="22"
+                                    @click="setChildStatus(item.status,contract,false)" />
+                                <div v-else class="circle" :style="{border:`1px solid ${$store.state.backColor}`}" @click="setChildStatus(item.status,contract,true)"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- 选中模板详情 -->
+        <van-popup v-model="showDetail">
+            <div class="dialog-box">
+                <header class="head">
+                    <svg class="icon" aria-hidden="true" style="width:97px;height:97px;">
+                        <use xlink:href="#iconshenpidanchuang"></use>
+                    </svg>
+                    <svg class="icon close" aria-hidden="true" style="width:26px;height:26px;fill:#fff;"
+                        @click="showDetail =false;">
+                        <use xlink:href="#iconcha"></use>
+                    </svg>
+
+                </header>
+                <div class="det-box dialog-content" v-if="tempId && detArr.length > 0">
+                    <p>
+                        <span>当前匹配规则:</span>
+                        <span class="det-span" v-for="(e,i) in detArr" :key="i">{{e.name}}</span>
+                    </p>
+                </div>
+                <div class="det-box dialog-content" v-if="detArr.length == 0">
+                    <p style="text-align:center;line-height:125px">
+                        <span>规则匹配:</span>
+                        <span class="det-span">暂无,请选择规则</span>
+                    </p>
+                </div>
+            </div>
+        </van-popup>
+        <!-- 匹配规则第一步 -->
+        <van-popup v-model="isShowModal" class="modal-box" position="bottom">
+            <h4 class="title">
+                选择商户匹配规则
+                <svg class="icon close" aria-hidden="true" style="width:24px;height:24px;fill:#999;"
+                    @click="isShowModal =false;">
+                    <use xlink:href="#iconcha"></use>
+                </svg>
+            </h4>
+            <div class="my-cell" :class="activeVal-1 === index ? 'active':''" v-for="(item, index) in modoulList"
+                :key="item.value" @click="nextStep(item,index)">
+                <p>{{item.name}}</p>
+                <van-icon v-if="activeVal-1 === index" name="passed" :color="$store.state.backColor" size="22" />
+                <div class="circle" :style="{border:`1px solid ${$store.state.backColor}`}" v-else></div>
+            </div>
+        </van-popup>
+        <!-- 选择模板第二步省份 -->
+        <van-popup v-model="isShowModalPr" class="modal-box" position="bottom">
+            <div class="title">
+                <div style="position: absolute;top: 5px;">
+                    <svg class="icon" aria-hidden="true" style="width:24px;height:24px;fill:#999;" @click="prToGo">
+                        <use xlink:href="#iconzuojiantou"></use>
+                    </svg>
+                </div>
+                
+                <span>选择商户匹配规则</span>
+                <svg class="icon close" aria-hidden="true" style="width:24px;height:24px;fill:#999;"
+                    @click="isShowModalPr =false;">
+                    <use xlink:href="#iconcha"></use>
+                </svg>
+            </div>
+             <div class="my-cell" :class="allpr ? 'active':''" @click="getAllpr">
+                <p>全选</p>
+                <van-icon v-if="allpr" name="passed" :color="$store.state.backColor" size="22" />
+                <div class="circle" :style="{border:`1px solid ${$store.state.backColor}`}" v-else></div>
+            </div>
+             <div class="my-cell" :class="item.selected === 1 ? 'active':''" v-for="(item, index) in areaArr"
+                :key="index" @click="chosePr(index)">
+                <p>{{item.name}}</p>
+                <van-icon v-if="item.selected === 1" name="passed" :color="$store.state.backColor" size="22" />
+                <div class="circle" :style="{border:`1px solid ${$store.state.backColor}`}" v-else></div>
+            </div>
+            <!-- <div class="my-cell" :class="areaClassIndex === index ? 'active':''" v-for="(item, index) in areaArr"
+                :key="item.value" @click="areaClassIndex = index;">
+                <p>{{item.name}}</p>
+                <van-icon v-if="areaClassIndex===index" name="passed" color="#896EDB" size="22" />
+                <div class="circle" v-else></div>
+            </div> -->
+        </van-popup>
+        <!-- 选择模板第二步渠道 -->
+        <van-popup v-model="isShowModalChan" class="modal-box" position="bottom">
+            <div class="title">
+                <div style="position: absolute;top: 5px;">
+                    <svg class="icon" aria-hidden="true" style="width:24px;height:24px;fill:#999;" @click="chanToGo">
+                        <use xlink:href="#iconzuojiantou"></use>
+                    </svg>
+                </div>
+                选择商户匹配规则
+                <svg class="icon close" aria-hidden="true" style="width:24px;height:24px;fill:#999;"
+                    @click="isShowModalChan =false;">
+                    <use xlink:href="#iconcha"></use>
+                </svg>
+            </div>
+            <div class="my-cell" :class="allchan ? 'active':''" @click="getAllchan">
+                <p>全选</p>
+                <van-icon v-if="allchan" name="passed" :color="$store.state.backColor" size="22" />
+                <div class="circle" :style="{border:`1px solid ${$store.state.backColor}`}" v-else></div>
+            </div>
+            <div class="my-cell" :class="item.selected === 1 ? 'active':''" v-for="(item, index) in chanArr"
+                :key="item.value" @click="choseChan(index)">
+                <p>{{item.name}}</p>
+                <van-icon v-if="item.selected === 1" name="passed" :color="$store.state.backColor" size="22" />
+                <div class="circle" :style="{border:`1px solid ${$store.state.backColor}`}" v-else></div>
+            </div>
+        </van-popup>
+
+        <van-button v-show="isShowModal" :color="$store.state.backColor" class="btn-submit" style="z-index:3000;" @click="setInfoRules(1)">{{activeVal == 1 ? '确定':'下一步'}}</van-button>
+        <van-button v-show="isShowModalPr" :color="$store.state.backColor" class="btn-submit" style="z-index:3000;" @click="setInfoRules(2)">确定</van-button>
+        <van-button v-show="isShowModalChan" :color="$store.state.backColor" class="btn-submit" style="z-index:3000;" @click="setInfoRules(3)">确定</van-button>
+
+        <!-- 模板列表 -->
+        <van-popup v-model="isShowTempList" class="modal-box" position="bottom">
+            <h4 class="title">
+                更换模板
+                <svg class="icon close" aria-hidden="true" style="width:24px;height:24px;fill:#999;"
+                    @click="isShowTempList =false;">
+                    <use xlink:href="#iconcha"></use>
+                </svg>
+            </h4>
+            <div class="my-cell" :class="tempClassIndex===index ? 'active':''" v-for="(item, index) in tempList"
+                :key="item.value" @click="tempClassIndex = index;">
+                <p>{{item.tempName}}</p>
+                <van-icon v-if="tempClassIndex===index" name="passed" :color="$store.state.backColor" size="22" />
+                <div class="circle" :style="{border:`1px solid ${$store.state.backColor}`}" v-else></div>
+            </div>
+        </van-popup>
+
+        <van-button :color="$store.state.backColor" v-show="!isShowModal && !isShowTempList" class="btn-submit save" @click="saveTemp">保存</van-button>
+
+
+
+        <!-- 合约详情 -->
+        <van-popup v-model="showDialogStyle" :close-on-click-overlay="false">
+            <div class="dialog-box">
+                <header class="head">
+                    <svg class="icon" aria-hidden="true" style="width:97px;height:97px;">
+                        <use xlink:href="#iconmobanxiangqingdanchuang"></use>
+                    </svg>
+                    <svg class="icon close" aria-hidden="true" style="width:26px;height:26px;fill:#fff;"
+                        @click="showDialogStyle =false;">
+                        <use xlink:href="#iconcha"></use>
+                    </svg>
+
+                </header>
+                <div class="dialog-content">
+                    <p class="title text-center-g">{{contractItem.name}}</p>
+                    <ul class="message-box">
+                        <li class="message-item">合约编号:{{contractItem.contNo}}</li>
+                        <li class="message-item">还款期数:{{contractItem.nper}}期</li>
+                        <li class="message-item">套餐资费:{{contractItem.packagePrices}}元</li>
+                        <li class="message-item">商户结算:{{contractItem.loanAmt}}元</li>
+                        <li class="message-item">月缴话费:{{contractItem.monthlyFees}}元</li>
+                        <li class="message-item">月还款额:{{contractItem.monthlyPayments}}元</li>
+                    </ul>
+                </div>
+            </div>
+        </van-popup>
+
+        <van-button :color="$store.state.backColor" v-show="isShowTempList" class="btn-submit" style="z-index:3001;" @click="setTempId">确定</van-button>
+
+
+    </div>
+</template>
+
+<script>
+    import {
+        mapState
+    } from 'vuex';
+    import Vue from 'vue';
+    import { Tab, Tabs } from 'vant';
+    
+    Vue.use(Tab);
+    Vue.use(Tabs);
+    export default {
+        name: 'template_detail',
+        data() {
+            return {
+                detArr:[],//规则详情数组
+                showDetail:false,//详情弹出层
+                allchan:false,//模板渠道全选
+                allpr:false,//模板省份全选
+                activeVal:1,//选择模板第一步,1-无规则,2-省份,3-渠道
+                showDialogStyle: false,
+                isShowModal: false,//模板选择第一步
+                isShowModalChan:false,//模板选择第二步
+                isShowModalPr:false,//模板选择第三步
+                areaArr: [], //地区列表
+                chanArr:[],//渠道列表
+                modoulList:[
+                    {
+                        value:'999999',
+                        name:'无匹配规则'
+                    },
+                    {
+                        value:'1',
+                        name:'省份'
+                    },
+                    {
+                        value:'2',
+                        name:'渠道'
+                    }
+                ],//无模板
+                info: {
+                    agencyId: '',
+                    id: '',
+                    prodInfList: [],
+                    tempName: '' ,
+                    tempRules: [],
+                    tempType:''
+                },
+                contractItem: { //当前点击查看的合约
+
+                },
+                isShowTempList: false,
+                tempIndex: 0,
+                tempClassIndex: 0, //样式控制
+                tempList: [], //模板列表
+                areaIndex: 0,
+                areaClassIndex: false, //样式控制
+                modClassIndex:'',
+                chanClassIndex:false
+            }
+        },
+        watch:{
+            'info.prodInfList':{
+                handler: function() {
+                   this.info.ruleChange = 1
+                },
+                deep: true
+            },
+            'info.tempRules':{
+                handler: function() {
+                  this.info.ruleChange = 1
+                },
+                deep: true
+            },
+            'info.tempType':{
+                handler: function() {
+                   this.info.ruleChange = 1
+                },
+                deep: true
+            }
+        },
+        computed: {
+            ...mapState(['areaList']),
+            // 选中的地区
+            currentRules() {
+                return this.areaArr[this.areaIndex] 
+            },
+            // 选中的模板
+            currentTemp() {
+                return this.tempList[this.tempIndex]
+            },
+            tempId() {
+                return this.$route.query.tempId
+            },
+            merId() {
+                return this.$route.query.merId
+            },
+        },
+        created() {
+            this.init()
+        },
+        methods: {
+            chanToGo(){
+                this.isShowModalChan = false
+                this.isShowModal = true
+            },
+            prToGo(){
+                this.isShowModalPr = false
+                this.isShowModal = true
+            },
+            // 选择省份
+            chosePr(index){
+                //按下标打钩,并且存储选中项,取消打钩的去掉存储项
+                if(this.areaArr[index].selected == 0){
+                    this.areaArr[index].selected = 1
+                    console.log(this.info,this.areaArr[index])
+                    this.info.tempRules.push(this.areaArr[index])
+                }else{
+                    this.areaArr[index].selected = 0
+                    let num = this.info.tempRules.findIndex(item=>{
+                        return item.code == this.areaArr[index].code
+                    })
+                    console.log('num:',num)
+                    this.info.tempRules.splice(num,1)
+                }
+                // 有一个未打钩,取消全选,全部勾选则选中全选
+                let i = this.areaArr.findIndex(item => {
+                    return item.selected == 0
+                })
+                if(i > -1){
+                    this.allpr = false
+                }else{
+                    this.allpr = true
+                }
+                console.log(this.info)
+            },
+            // 选择渠道
+            choseChan(index){
+                //按下标打钩,并且存储选中项,取消打钩的去掉存储项
+                if(this.chanArr[index].selected == 0){
+                    this.chanArr[index].selected = 1
+                    this.info.tempRules.push(this.chanArr[index]) 
+                }else{
+                    this.chanArr[index].selected = 0
+                    let num = this.info.tempRules.findIndex(item => {
+                        return item.code == this.chanArr[index].code
+                    })
+                    console.log('num:',num)
+                    this.info.tempRules.splice(num,1)
+                }
+                // 有一个未打钩,取消全选,全部勾选则选中全选
+                let i = this.chanArr.findIndex(item => {
+                    return item.selected == 0
+                })
+                if(i > -1){
+                    this.allchan = false
+                }else{
+                    this.allchan = true
+                }
+                console.log(this.info)
+                console.log('this.chanArr:',this.chanArr)
+            },
+            // 详情弹出层
+            showDet(){
+                this.showDetail = !this.showDetail
+            },
+            // 模板渠道全选
+            getAllchan(){
+                this.allchan = !this.allchan
+                if(this.allchan){
+                    this.chanArr.forEach(e=>{
+                        e.selected = 1
+                    })
+                    this.info.tempRules = JSON.parse(JSON.stringify(this.chanArr)) 
+                }else{
+                    this.chanArr.forEach(e=>{
+                        e.selected = 0
+                    })
+                    this.info.tempRules = []
+                }
+               console.log(this.info)
+            },
+            // 模板省份全选
+            getAllpr(){
+                this.allpr = !this.allpr
+                if(this.allpr){
+                    this.areaArr.forEach(e=>{
+                        e.selected = 1
+                    })
+                    this.info.tempRules = JSON.parse(JSON.stringify(this.areaArr))
+                }else{
+                     this.areaArr.forEach(e=>{
+                        e.selected = 0
+                    })
+                    this.info.tempRules = []
+                }
+                console.log(this.info)
+            },
+            // 控制模板选择弹出层
+            nextStep(item,index){
+                this.modClassIndex = index;
+                this.info.tempRules = []
+                if(item.value == '999999'){
+                    this.activeVal = 1
+                    this.info.tempType = 1
+                }else if(item.value == '1'){
+                    this.activeVal = 2
+                    this.info.tempType = 2
+                    this.areaArr.forEach(e=>{
+                        if(e.selected == 1){
+                            this.info.tempRules.push(e)
+                        }
+                    })
+                }else{
+                    this.activeVal = 3
+                    this.info.tempType = 3
+                    this.chanArr.forEach(e=>{
+                        if(e.selected == 1){
+                            this.info.tempRules.push(e)
+                        }
+                    })
+                }
+                console.log(this.info)
+            },
+            // 打开 模板弹窗
+            openTempModal() {
+                this.tempClassIndex = this.tempIndex;
+                this.isShowTempList = true;
+            },
+            // 打开模板选择弹窗
+            openAreaModal() {
+                this.areaClassIndex = this.areaIndex;
+                this.isShowModal = true;
+            },
+            init() {
+                //获取地址
+                //let list = this.areaList.province_list;
+                // 增加第一个选项,可以选择无匹配规则
+                // this.areaArr.push({
+                //     value:'999999',
+                //     name:'无匹配规则'
+                // })
+                // for (let key in list) {
+                //     this.areaArr.push({
+                //         value: key,
+                //         name: list[key]
+                //     })
+
+                // }
+                // 初始化模板
+                // 有id的:查询详情,没有是新增
+                if (this.tempId) {
+                    this.getTempDetail()
+                } else if (this.merId) {
+                    this.initMerInfo()
+                } else {
+                    this.initTemp()
+                }
+            },
+            // 初始化从商户管理页面进入的页面逻辑
+            initMerInfo() {
+                // 获取模板列表
+                this.$api.getTempList().then((res) => {
+                    let tempList = res.body || [];
+                    tempList.unshift({
+                        tempName: '无匹配规则',
+                        value: '999999'
+                    })
+                    this.tempList = tempList;
+                    // 获取商户产品信息
+                    this.$api.tempGetMerRef({
+                        merId: this.merId,
+                        // tempId: 0
+                    }).then((res) => {
+                        this.parseTempInfo(res.body)
+                        this.setTempIndex(res.body.id)
+                    }).catch((err) => {
+
+                    });
+                }).catch((err) => {
+
+                });
+            },
+            // 设置当前模板
+            setTempIndex(id) {
+                let index = this.tempList.findIndex(item => {
+                    return item.id == id
+                })
+                if (index > -1) {
+                    this.tempIndex = index;
+                    this.tempClassIndex = index;
+                }
+            },
+            //解析模板信息
+            parseTempInfo(info) {
+                let prodInfList = info.prodInfList || [];
+                prodInfList = prodInfList.map(item => {
+                    let contractList = item.contractList || [],
+                        issueList = item.issueList || [];
+                    contractList.forEach(el => {
+                        el.status = !!el.status;
+                    })
+                    issueList.forEach(el => {
+                        el.status = !!el.status;
+                    })
+                    item.status = !!item.status;
+                    return {
+                        ...item,
+                        contractList,
+                        issueList
+                    }
+                })
+                
+                this.chanArr = info.chanIds
+                this.areaArr = info.provCodes
+                this.info.prodInfList = prodInfList
+                this.info.tempName = info.tempName
+                this.activeVal = info.tempType || 1
+                this.modClassIndex = info.tempType//规则选择第一步默认根据返回来确定
+                this.info.id = info.id || ''
+
+                // 访问详情接口时根据规则装载已选项
+                if(info.tempType == 2){
+                    info.provCodes.forEach(e=>{
+                        if (e.selected == 1){
+                            this.info.tempRules.push(e)
+                            this.detArr.push(e)
+                        }
+                    })
+                }
+                if(info.tempType == 3){
+                    info.chanIds.forEach(e=>{
+                        if (e.selected == 1){
+                            this.info.tempRules.push(e)
+                            this.detArr.push(e)
+                        }
+                    })
+                }
+        
+                
+                // let tempRules = info.tempRules;
+                // let index = this.areaArr.findIndex(item => {
+                //     return item.value == tempRules
+                // })
+                // if (index > -1) {
+                //     this.areaIndex = index;
+                //     this.areaClassIndex = index;
+                // }
+
+                // this.info = {
+                //     ...info,
+                //     prodInfList
+                // }
+            },
+            // 获取模板详情
+            getTempDetail() {
+                this.$api.getTempDetail(this.tempId).then((res) => {
+                    this.parseTempInfo(res.body)
+                }).catch((err) => {
+
+                });
+            },
+            //父开关关闭时 同时关闭所有子开关
+            changeChildStatus(item) {
+                if (!item.status) {
+                    item.contractList.forEach(el => {
+                        el.status = false;
+                    })
+
+                    item.issueList.forEach(el => {
+                        el.status = false;
+                    })
+                }
+            },
+            //设置子开关的状态
+            setChildStatus(parentStatus, item, val) {
+                // 商户进入页面 有模板时只能查看不能点击更改模板的状态
+                if (this.merId && this.tempIndex !== 0) {
+                    return
+                }
+                if (!parentStatus) {
+                    return
+                }
+                item.status = val;
+            },
+            // 获取初始化数据并重组数据
+            initTemp() {
+                this.$api.getTempInit().then(res => {
+                    this.parseTempInfo(res.body)
+                    return
+                });
+            },
+            //保存模版
+            saveTemp() {
+                if (!this.info.tempName) {
+                    this.$notify(`请输入模板名称`)
+                    return 
+                }
+                if(this.info.tempRules.length == 0 && this.activeVal != 1){
+                    this.$notify(`请选择对应模板规则`)
+                    return
+                }
+                // if(this.info.provName=='无匹配规则'){
+                //     this.info.provName = '无匹配规则'
+                //     this.info.tempRules = '999999'
+                // }
+                // 深拷贝改数据,避免重组数据时ui被更新
+                let prodInfList = JSON.parse(JSON.stringify(this.info.prodInfList))
+
+                //验证被打开的花呗费率是否输入并且在规定范围内
+                for (let index = 0; index < prodInfList.length; index++) {
+                    const el = prodInfList[index];
+                    if (el.prodId == 30000003) {
+                        let issueList = el.issueList;
+                        for (let k = 0; k < issueList.length; k++) {
+                            const issItem = issueList[k];
+                            if ((issItem.fee == null || issItem.fee == '') && issItem.status) {
+                                this.$notify(`请输入花呗${issItem.term}期费率!`)
+                                return
+                            }
+                            if (issItem.fee && issItem.fee < issItem.feeMin || issItem.fee > issItem.feeMax) {
+                                this.$notify(`请按要求范围输入花呗${issItem.term}期费率!`)
+                                return
+                            }
+                        }
+                    }
+                    if (el.prodId == 30000010) {
+                        let issueList = el.issueList;
+                        for (let k = 0; k < issueList.length; k++) {
+                            const issItem = issueList[k];
+                            if ((issItem.fee == null || issItem.fee == '') && issItem.status) {
+                                this.$notify(`请输入商户贴息${issItem.term}期费率!`)
+                                return
+                            }
+                            if (issItem.fee && issItem.fee < issItem.feeMin || issItem.fee > issItem.feeMax) {
+                                this.$notify(`请按要求范围输入商户贴息${issItem.term}期费率!`)
+                                return
+                            }
+                        }
+                    }
+                }
+                //验证被打开的花呗费率是否输入并且在规定范围内
+                for (let index = 0; index < prodInfList.length; index++) {
+                    const el = prodInfList[index];
+                    if (el.prodId == 30000014) {
+                        let issueList = el.issueList;
+                        for (let k = 0; k < issueList.length; k++) {
+                            const issItem = issueList[k];
+                            if ((issItem.fee ===null || issItem.fee === '') && issItem.status) {
+                                this.$notify(`请输入花呗间联${issItem.term}期费率!`)
+                                return
+                            }
+                            if ((issItem.amt === null || issItem.amt === '') && issItem.status) {
+                                console.log('000')
+                                this.$notify(`请输入花呗间联${issItem.term}期商户固定收益!`)
+                                return
+                            }
+                            if (issItem.fee && issItem.fee < issItem.feeMin || issItem.fee > issItem.feeMax) {
+                                this.$notify(`请按要求范围输入花呗间联${issItem.term}期费率!`)
+                                return
+                            }
+                            if (issItem.amt && issItem.amt < issItem.amtMin || issItem.amt  > issItem.amtMax) {
+                                this.$notify(`请按要求范围输入花呗间联${issItem.term}期商户固定收益!`)
+                                return
+                            }
+                        }
+                    }
+                }
+                // return
+
+                //重组状态 boolean转换成number
+                prodInfList = prodInfList.map(item => {
+                    let contractList = item.contractList || [],
+                        issueList = item.issueList || [];
+                    contractList = contractList.map(el => {
+                        return {
+                            ...el,
+                            status: +el.status
+                        }
+                    })
+                    issueList = issueList.map(el => {
+                        return {
+                            ...el,
+                            status: +el.status
+                        }
+                    })
+                    item.status = +item.status;
+                    return {
+                        ...item,
+                        contractList,
+                        issueList
+                    }
+                })
+                let params = {
+                    ...this.info,
+                    prodInfList
+                }
+                if (this.merId) {
+                    this.saveMerTemp(params)
+                    return
+                }
+
+                if(this.tempId){
+                    this.$api.tempManagerUpdate(params).then((res)=>{
+                        this.$notify('保存成功!')
+                        this.$router.back()
+                    })
+                }else{
+                    this.$api.tempSave(params).then((res) => {
+                        this.$notify('保存成功!')
+                        this.$router.back()
+                    }).catch((err) => {
+                    
+                    });
+                }
+               
+            },
+            // 保存商户模板信息
+            saveMerTemp(params) {
+                this.$api.tempSaveMerTemp({
+                    ...params,
+                    merId:this.merId
+                    }).then((res) => {
+                    this.$notify('保存成功!')
+                    this.$router.back()
+                }).catch((err) => {
+
+                });
+            },
+            //查看合约详情
+            lookDetails(item) {
+                this.showDialogStyle = true;
+                this.contractItem = item;
+            },
+            //设置商户匹配规则
+            setInfoRules(i) {
+                this.isShowModal = false;
+                if(this.activeVal == 1){
+                    this.isShowModalChan = false
+                    this.isShowModalPr = false
+                }
+                if(this.activeVal == 2){
+                    this.areaIndex = this.areaClassIndex;
+                    if(this.areaArr.length > 0){
+                        this.isShowModalChan = false
+                        this.isShowModalPr = true
+                    }else{
+                        this.isShowModalPr = false
+                        this.$notify('暂无此类型规则')
+                        return
+                    }
+                    //this.info.tempRules = this.currentRules.value;
+                    //this.info.provName = this.currentRules.name;
+                    if(i==2){
+                        this.isShowModalPr = false
+                    }
+                }
+                if(this.activeVal == 3){
+                    if(this.chanArr.length > 0){
+                        this.isShowModalChan = true
+                        this.isShowModalPr = false
+                    }else{
+                        this.isShowModalChan = false
+                        this.$notify('暂无此类型规则')
+                        return
+                    }
+                    if(i==3){ 
+                        this.isShowModalChan = false
+                    }
+                }
+                
+                
+            },
+            //获取模板的数据,修改模板id
+            setTempId() {
+                this.tempIndex = this.tempClassIndex;
+                if (this.tempIndex === 0) {
+                    this.info.id = 999999;
+                    this.isShowTempList = false;
+                    return
+                }
+                let id = this.tempList[this.tempIndex].id;
+                this.$api.getTempMerRef({
+                    merId: this.merId,
+                    tempId: id
+                }).then((res) => {
+                    this.info.id = id;
+                    this.isShowTempList = false;
+                    this.parseTempInfo(res.body)
+                }).catch((err) => {
+
+                });
+
+            }
+        }
+    }
+</script>
+
+<style lang="less" scoped>
+    .template-detail-box {
+        position: relative;
+        background-color: @c-bg-f5;
+        padding-bottom: 100px;
+
+        .bg-gray {
+            background-color: #FAFAFA !important;
+        }
+
+        .bg-fff {
+            background-color: #ffffff;
+        }
+    }
+    
+
+    
+
+
+
+    .header {
+        height: 44px;
+        padding: 0 20px 30px 20px;
+        line-height: 24px;
+        font-weight: bold;
+        color: @c-text-fff;
+        background-color: @c-bg-black;
+        background-image: url('../../../static/img/circle-top.png'), url('../../../static/img/circle-bottom.png');
+        background-position: 0 0, 100% 100%;
+        background-size: 78px 65px, 54px 41px;
+        background-repeat: no-repeat;
+        text-align: center;
+        font-size: @font-16;
+
+        .icon {
+            z-index: @zIndex-20;
+        }
+
+        .title {
+            font-size: @font-16;
+            position: absolute;
+            left: 60px;
+            right: 60px;
+        }
+    }
+
+    .temp-name {
+        position: absolute;
+        top: 54px;
+        // width: 360px;
+        left: 8px;
+        right: 8px;
+        height: 50px;
+        box-shadow: 0px 4px 8px 0px rgba(66, 61, 93, 0.05);
+        border-radius: 3px;
+    }
+
+    .product-box {
+        margin-top: 48px;
+        padding: 0 8px;
+        position: relative;
+        .det-btn{
+            width: 80px;
+            height: 20px;
+            border: 1px solid #896EDB;
+            outline: none;
+            background-color: #fff;
+            color: #896EDB;
+            position: absolute;
+            top: 15px;
+            left: 120px;
+            font-size: 12px;
+        }
+        .btn-d{
+            padding: 2px 5px;
+            width: 50px;
+            height: 15px;
+            line-height: 15px;
+            text-align: center;
+            background: rgba(247, 245, 255, 1);
+            border: 1Px solid @c-text-default;
+            border-radius: 3px;
+            color: @c-text-default;
+            font-size: @font-10;
+            position: absolute;
+            top: 15px;
+            left: 120px;
+            font-size: 12px;
+        }
+        .p-title {
+            .lh(50px);
+            padding: 0 12px;
+            font-size: @font-16;
+        }
+    }
+
+    .circle {
+        border: 1px solid @c-bg-default;
+        height: 16px;
+        width: 16px;
+        border-radius: 50%;
+        margin-right: .2em;
+    }
+
+    .input-box {
+        margin-left: 25px;
+        .item-hbjl-box{
+            .flex(space-between);
+            height: 88px;
+            padding-right: 13px;
+            border-bottom:1px solid #DDDDDD;
+        }
+        .item-hbjl-box:last-child{
+            border-bottom:0;
+        }
+        .item {
+            .flex(space-between);
+            height: 44px;
+            padding-right: 13px;
+            border-bottom:1px solid #DDDDDD;
+
+            &:last-child {
+                border-bottom: none;
+            }
+
+            input[type='number'] {
+                width: 240px;
+                border: none;
+                outline: none;
+                background-color: #fff;
+                font-size: 12px;
+            }
+
+            .left {
+                .flex;
+                flex: 1;
+            }
+
+            .label {
+                font-size: 14px;
+                margin-right: 5px;
+                min-width: 40px;
+            }
+
+        }
+        .item-hbjl {
+            .flex(space-between);
+            height: 44px;
+            padding-right: 13px;
+            border-bottom:1px solid #DDDDDD;
+
+            &:last-child {
+                border-bottom: none;
+            }
+
+            input[type='number'] {
+                width: 240px;
+                border: none;
+                outline: none;
+                background-color: #fff;
+                font-size: 12px;
+            }
+
+            .left {
+                .flex;
+                flex: 1;
+            }
+
+            .label {
+                font-size: 14px;
+                margin-right: 5px;
+                min-width: 40px;
+            }
+
+        }
+    }
+
+    .hb-box {
+        margin-left: 12px;
+
+        .item {
+            height: 75px;
+            padding-right: 13px;
+            border-bottom: 1px solid #DDDDDD;
+            .flex(space-between);
+
+
+            &:last-child {
+                border-bottom: none;
+            }
+        }
+
+        .left {
+            .flex(flex-start, flex-start, '', column);
+            flex: 1;
+
+            .label {
+                font-size: 14px;
+            }
+        }
+
+        .info {
+            .flex;
+            margin-top: 5px;
+            font-size: 12Px;
+
+            p {
+                margin-right: 15px;
+                color: #999999;
+            }
+
+            .btn {
+                padding: 2px 5px;
+                width: 50px;
+                height: 15px;
+                line-height: 15px;
+                text-align: center;
+                background: rgba(247, 245, 255, 1);
+                border: 1Px solid @c-text-default;
+                border-radius: 3px;
+                color: @c-text-default;
+                font-size: @font-10;
+            }
+        }
+    }
+
+    .dialog-box {
+        .head {
+            .flex(center);
+            height: 135px;
+            background-color: @c-black;
+            .gofront{
+                display: inline-block;
+                position: absolute;
+                right: 355px;
+                top: 10px;
+            }
+            .close {
+                position: absolute;
+                right: 5px;
+                top: 5px;
+            }
+        }
+        .det-box{
+            //width: 200px;
+            //min-height: 200px;
+            box-sizing: border-box;
+            padding: 10px;
+            font-size: 16px;
+            
+            .det-span{
+                margin-right: 10px;
+            }
+        }
+        .dialog-content {
+            background-color: #fff;
+            width: 300px;
+            height: 145px;
+            margin: 0 auto;
+            padding: 10px 15px;
+            box-sizing: border-box;
+
+            .title {
+                .lh(50px);
+            }
+
+            .message-box {
+                .flex(space-between);
+                flex-wrap: wrap;
+                color: @c-text-999;
+                text-align: left;
+            }
+
+            .message-item {
+                width: 50%;
+                margin-bottom: 10px;
+            }
+        }
+    }
+
+    .modal-box {
+        overflow-y: scroll;
+        padding-bottom: 54px;
+        font-size: 16px;
+        height: 400px;
+
+        .title {
+            position: relative;
+            .lh(50px);
+            text-align: center;
+            font-weight: normal;
+            color: @c-text-999;
+            border-bottom: 1px solid @c-bg-eee;
+
+            .close {
+                position: absolute;
+                right: 3px;
+                top: 3px;
+            }
+        }
+    }
+
+    .my-cell {
+        .flex(space-between);
+        height: 50px;
+        padding: 0 20px;
+
+        &.active {
+            background-color: #FAFAFA;
+        }
+    }
+
+    .btn-submit {
+        position: fixed;
+        bottom: 0;
+        .lh(50px);
+        width: 100%;
+        border: none;
+        background-color: @c-bg-default;
+        color: @c-text-fff;
+        font-size: @font-16;
+
+        &.save {
+            position: fixed;
+            width: 320px;
+            left: 28px;
+            right: 28px;
+            bottom: 25px;
+            margin-top: 25px;
+            z-index: 1000;
+            border-radius: 50px;
+        }
+    }
+</style>
diff --git a/src/views/template/distribute.vue b/src/views/template/distribute.vue
new file mode 100644
index 0000000..d11050c
--- /dev/null
+++ b/src/views/template/distribute.vue
@@ -0,0 +1,327 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-29 14:12:11
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-04-30 11:29:43
+ * @Description: 分配-模板
+ -->
+<template>
+    <div class="box ">
+        <v-navbar title="分配模板" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShowFilter = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+          <van-search
+            v-model="searchKey"
+            shape="round"
+            placeholder="请输入商户名称"
+            @search="onSearch"
+            @clear="onCancel"
+          />
+        
+        <section class="section">
+            <div class="flex-between-g title">
+                <p class="left">为以下商户分配【模板】</p>
+                <p class="right flex-start-g">
+                    <span>{{isSelectAll ? '取消':'全选'}}</span>
+                    <van-checkbox v-model="isSelectAll" class="icon" @change="setCheckResult"></van-checkbox>
+                </p>
+            </div>
+            <van-checkbox-group v-model="checkResult">
+                <hList :defScroll='30' :finished='finished' :loading="loading" @scroll="saleOrderLoad" height="74vh">
+                    <div class="list-box">
+                        <div class="item flex-between-g" v-for="(item, index) in list" :key="index">
+                            <div class="flex-start-g">
+                                <div class="icon-box flex-center-g">
+                                    <svg class="icon" aria-hidden="true" style="width:22px;height:22px;fill:#fff;">
+                                        <use xlink:href="#iconshanghuguanliliebiao"></use>
+                                    </svg>
+                                </div>
+                                <div>
+                                    <p class="name" v-text="item.merName">商户名称</p>
+                                    <p class="tel" v-text="item.merId">未配置产品</p>
+                                </div>
+                            </div>
+                            <van-checkbox :key="item.merId" :name="item.merId" :disabled="item.status===1"></van-checkbox>
+                        </div>
+                    </div>
+                </hList>
+            </van-checkbox-group>
+        </section>
+
+        <footer class="footer">
+            <van-button class="btn" @click="save">确认分配</van-button>
+        </footer>
+
+        <v-filter  v-model="isShowFilter" :areaList="areaList" :templateArr="templateArr" :hasTime="false" :hasMoney="false" hasCity :belongArr="belongArr" @search="init"></v-filter>
+
+    </div>
+</template>
+
+
+<script>
+import {calcAreaTwo} from '@/utils/index';
+import hList from '../../components/common/h-list';
+    export default {
+        components:{
+            hList
+        },
+        data() {
+            return {
+                searchKey:'',
+                finished:false,
+                loading:false,
+                isShowFilter:false,
+                isSelectAll: false,
+                checkResult: [],
+                list: [],
+                belongArr:[],
+                templateArr:[],
+                areaList:{},
+                Area:[]
+            }
+        },
+        computed:{
+            tempId(){
+                return this.$route.query.id || '';
+            }
+        },
+        created() {
+            this.init()
+            this.merInit()
+            this.getArea()
+        },
+        methods: {
+            // 确认搜索
+            onSearch(){
+                this.$api.getTempMerList({
+                    tempId:this.tempId,
+                    searchKey:this.searchKey
+                }).then(res=>{
+                    this.list = [...res.body]
+                })
+            },
+            // 取消搜索
+            onCancel(){
+                this.$api.getTempMerList({
+                    tempId:this.tempId,
+                    searchKey:this.searchKey
+                }).then(res=>{
+                    this.list = [...res.body]
+                })
+            },
+            // 下滑刷新
+            saleOrderLoad(params={}){
+                //this.checkResult = [];
+                this.isSelectAll = false;
+                params.tempId = this.tempId;
+                if(this.list.length >= 10){
+                    params.merId = this.list[this.list.length-1].merId
+                }
+                this.$api.getTempMerList(params).then((res) => {
+                    if(res.body.length < 10){
+                        this.list = [...this.list,...res.body]
+                        this.finished = true
+                        this.loading = false
+                    }else{
+                        this.list = [...this.list,...res.body]
+                        this.loading = false
+                        this.finished = false
+                    }
+                    this.list.forEach(item=>{
+                        if(item.status!==0){
+                            this.checkResult.push(item.merId)
+                        }
+                    })
+                    this.isShowFilter = false;
+                }).catch((err) => {
+
+                });
+            },
+            // 保存分配
+            save(){
+                let arr = this.checkResult.map(item=>item+'')
+                this.$api.saveMerListTemp({
+                    merIdList:arr,
+                    tempId:this.$route.query.id
+                }).then((res) => {
+                    this.$notify('模板分配成功')
+                    this.$router.back()
+                }).catch((err) => {
+                    
+                });
+            },
+            init(params={}){
+                this.checkResult = [];
+                this.isSelectAll = false;
+                params.tempId = this.tempId;
+                this.$api.getTempMerList(params).then((res) => {
+                    let list = res.body || [];
+                    list.forEach(item=>{
+                        if(item.status!==0){
+                            this.checkResult.push(item.merId)
+                        }
+                    })
+                    if(res.body.length < 10){
+                        this.finished = true
+                    }
+                    this.list = list;
+                    this.isShowFilter = false;
+                }).catch((err) => {
+
+                });
+            },
+            merInit(){
+                this.$api.merInitFilter().then(({body}) => {
+                    let chanList =body.chanList || [];
+                    let templateArr =body.tempList || [];
+
+                    chanList = chanList.map(val => {
+                        val.name = val.chanName;
+                        val.code = val.chanId;
+                        return val;
+                    });
+
+                    templateArr = templateArr.map(val => {
+                        val.name = val.tempName;
+                        val.code = val.id;
+                        return val;
+                    });
+
+
+                    if (this.orgType !== 2) {
+                        this.belongArr = chanList;
+                        this.templateArr = templateArr;
+                    }
+                });
+            },
+            // 获取地区
+            getArea(){
+                this.$api.getOrgAreaInfo(2).then(res => {
+                    let arr = [];
+                    let list = res.body || [];
+                    this.parseArea(list)
+                    this.areaList = calcAreaTwo(this.Area)
+                    //console.log(this.areaList)
+                });
+            },
+            // 全选 取消
+            setCheckResult(v) {
+                if (v) {
+                    this.list.forEach(item => {
+                        
+                        this.checkResult.push(item.merId)
+                    })
+                } else {
+                    this.checkResult = []
+                    this.list.forEach(item => {
+                        if(item.status===1){
+                            this.checkResult.push(item.merId)
+                        }
+                    })
+                }
+            },
+            parseArea(list,){
+                list.forEach(item=>{
+                    let childList = item.childList;
+                    this.Area.push({
+                        name:item.name,
+                        value:item.code
+                    })
+                    if(Array.isArray(childList)){
+                        this.parseArea(childList)
+                    }
+                })
+            },
+            
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .box {
+        padding-top: 55px;
+        background-color: @c-bg-f5;
+        padding-bottom: 50px;
+    }
+
+    .title {
+        .lh(50px);
+        padding: 0 20px 0 8px;
+        background-color: @c-bg-fff;
+
+        .left {
+            color: @c-text-666;
+        }
+
+        .right {
+            color: @c-text-999;
+
+            .icon {
+                margin-left: 8px;
+            }
+        }
+    }
+
+    .section {
+        background: @c-bg-fff;
+        //padding-bottom: 20px;
+    }
+
+    .item {
+        margin: 0 8px 10px;
+        box-shadow: 0px 0px 5px 0px rgba(66, 61, 93, 0.08);
+        border-radius: 3px;
+        background: @c-bg-fff;
+        padding: 0 12px;
+        height: 67px;
+
+        .icon-box {
+            height: 32px;
+            width: 32px;
+            margin-right: 15px;
+            border-radius: 50%;
+            background: @c-bg-black;
+        }
+
+        .name {
+            font-weight: bold;
+        }
+
+        .tel {
+            font-size: @font-12;
+            color: @c-text-666;
+            margin-top: 5px;
+        }
+
+        .btn {
+            .lh(25px);
+            padding: 0 12p;
+            background: @c-bg-default;
+            border-radius: 13px;
+            color: @c-text-fff;
+        }
+    }
+
+    .footer {
+        .flex(center);
+        position: fixed;
+        bottom: 0;
+        width: 100%;
+        height: 50px;
+        background-color: @c-bg-fff;
+
+        .btn {
+            .lh(44px);
+            color: @c-text-fff;
+            background-color: @c-bg-default;
+            border-radius: 22px;
+            width: 320px;
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/template/list.vue b/src/views/template/list.vue
new file mode 100644
index 0000000..5ed8237
--- /dev/null
+++ b/src/views/template/list.vue
@@ -0,0 +1,141 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-29 09:14:54
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-17 09:35:51
+ * @Description: 模板列表页面
+ -->
+<template>
+    <div class="template-list-box ">
+        <v-navbar title="模板管理" fixed></v-navbar>
+            <van-search
+            v-model="searchKey"
+            shape="round"
+            placeholder="请输入模板名称/规则"
+            @search="onSearch"
+            @clear="onCancel"
+          />
+            <div class="item-group" v-if="list.length">
+                <div class="item flex-between-g" v-for="(item, index) in list" :key="index" @click="go(item.id)">
+                    <div class="flex-start-g" >
+                        <div class="icon-box flex-center-g" :style="{background:$store.state.backColor}">
+                            <svg class="icon" aria-hidden="true" style="width:22px;height:22px;fill:#fff;">
+                                <use xlink:href="#iconshanghuguanliliebiao"></use>
+                            </svg>
+                        </div>
+                        <div>
+                            <p class="name" >{{item.tempName}}</p>
+                            <p class="tel">创建日期:{{item.creTime | timeformat('yyyy-MM-dd')}}</p>
+                        </div>
+                    </div>
+                    <van-button class="btn" :color="$store.state.backColor" @click.stop="$router.push('/template/distribute?id='+item.id)">分配商户</van-button>
+                </div>
+            </div>       
+        <v-button-circle icon='iconjia' @click="$router.push('/template/detail')" title='新增'></v-button-circle>
+    </div>
+</template>
+<script>
+import hList from '../../components/common/h-list';
+export default {
+    components:{
+        hList
+    },
+    data() {
+        return {
+            list:[],
+            finished:false,
+            loading:false,
+            searchKey:'',//模板名称
+        }
+    },
+    created(){
+        this.init()
+    },
+    methods: {
+         // 确认搜索
+            onSearch(){
+                this.$api.getTempList({
+                    searchKey:this.searchKey
+                }).then(res=>{
+                    this.list = res.body || [];
+                })
+            },
+            // 取消搜索
+            onCancel(){
+                this.$api.getTempList({
+                    earchKey:this.searchKey
+                }).then(res=>{
+                    this.list = res.body || []
+                })
+            },
+        saleOrderLoad(){
+            console.log(5656)
+            this.finished = true 
+        },
+        init(){
+            this.$api.getTempList().then((res) => {
+                this.list = res.body || [];
+            }).catch((err) => {
+
+            });
+        },
+        // 跳转到模板详情页面
+        go(id){
+            this.$router.push(`/template/detail?tempId=${id}`)
+        }
+    },
+
+}
+</script>
+<style lang="less" scoped>
+    .template-list-box {
+        padding-top: 55px;
+        background-color: @c-bg-f5; 
+    }
+    
+    .item-group {
+        background-color: @c-bg-fff;
+        //padding: 20px 0;
+        height: 80vh;
+        overflow: scroll;
+    }
+    .item-group::-webkit-scrollbar,.withdrawals-box::-webkit-scrollbar {
+        display: none;
+    }
+    .item {
+        margin: 0 8px 10px;
+        box-shadow: 0px 0px 5px 0px rgba(66, 61, 93, 0.08);
+        border-radius: 3px;
+        background: @c-bg-fff;
+        padding: 0 12px;
+        height: 67px;
+
+        .icon-box {
+            height: 32px;
+            width: 32px;
+            margin-right: 15px;
+            border-radius: 50%;
+            background: @c-bg-black;
+        }
+
+        .name {
+            font-weight: bold;
+        }
+
+        .tel {
+            font-size: @font-12;
+            color: @c-text-666;
+            margin-top: 5px;
+        }
+
+        .btn {
+            .lh(28px);
+            width: 100px;
+            padding: 0 12px;
+            background: @c-bg-default;
+            border-radius: 13px;
+            color: @c-text-fff;
+            font-size: @font-14;
+        }
+    }
+</style>
diff --git a/src/views/user/forgetpassword.vue b/src/views/user/forgetpassword.vue
new file mode 100644
index 0000000..b176082
--- /dev/null
+++ b/src/views/user/forgetpassword.vue
@@ -0,0 +1,244 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-27 08:46:34
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-16 15:47:30
+ * @Description:
+ -->
+<template>
+  <div class="forgetpassword h-100-g">
+    <v-navbar title="忘记密码" fixed></v-navbar>
+
+
+    <div class="re-input-box">
+    <van-field
+        v-model="form.mblNo"
+        type="tel"
+        clearable
+        maxlength='11'
+        placeholder="请输入手机号码"
+    />
+    <van-field
+        v-model="form.password1"
+        clearable
+        maxlength='16'
+        :type="pwdType"
+        placeholder="请输入8-16位数字字母组合密码"
+        @click-right-icon="showPassword"
+    >
+      <van-icon :color="$store.state.backColor" :name="eye" slot="right-icon"/>
+    </van-field>
+
+    <van-field
+        v-model="form.password2"
+        clearable
+        maxlength='16'
+        :type="pwdType2"
+        placeholder="请再次输入新密码"
+        @click-right-icon="showPassword2"
+    >
+      <van-icon :color="$store.state.backColor" :name="eye2" slot="right-icon"/>
+    </van-field>
+
+
+
+      <van-field
+          v-model="form.msgCode"
+          clearable
+          maxlength='4'
+          type="number"
+          placeholder="请输入短信验证码"
+      >
+        <van-button class="mgs-btn" slot="button" size="small" @click="sendMSG" >{{ sendText }}</van-button>
+      </van-field>
+    </div>
+
+
+
+    <div class="btn-box">
+      <van-button class="btn" :color="$store.state.backColor" @click="reSetPwd">重置密码</van-button>
+    </div>
+  </div>
+</template>
+
+<script>
+  import md5 from 'blueimp-md5';
+  export default {
+    name: "forgetpassword",
+    data(){
+      return {
+          form:{
+            mblNo: '',
+            password1: '',
+            password2: '',
+            msgCode: ''
+          },
+
+        pwdType:'password',
+        pwdType2:'password',
+        eye:'closed-eye',
+        eye2:'closed-eye',
+
+
+
+        sendText:'发送验证码',
+        SEND:false,
+        timer:'',
+
+
+        ruler:[
+          {key:"mblNo",message:"请输入手机号",type:"isEmpty"},
+          {key:"mblNo",message:"请输入正确的手机号",type:"isTel"},
+          {key:"password1",message:"请输入密码",type:"isEmpty"},
+          {key:"password1",message:"请输入正确的密码",type:"isPassword"},
+          {key:"password2",message:"请输入确认密码",type:"isEmpty"},
+          {key:"msgCode",message:"请输入验证码",type:"isEmpty"},
+          {key:"msgCode",message:"请输入正确的验证码",type:"isCode"},
+        ],
+
+        ruleCode:[
+          {key:"mblNo",message:"请输入手机号",type:"isEmpty"},
+          {key:"mblNo",message:"请输入正确的手机号",type:"isTel"},
+        ],
+
+
+      }
+    },
+    computed:{
+
+    },
+    methods:{
+      //是否显示明文密码
+      showPassword() {
+        if (this.pwdType === 'password') {
+          this.pwdType = 'text';
+          this.eye = 'eye-o';
+        } else {
+          this.pwdType = 'password';
+          this.eye = 'closed-eye';
+        }
+      },
+      //是否显示明文密码
+      showPassword2() {
+        if (this.pwdType2 === 'password') {
+          this.pwdType2 = 'text';
+          this.eye2 = 'eye-o';
+        } else {
+          this.pwdType2 = 'password';
+          this.eye2 = 'closed-eye';
+        }
+      },
+
+
+      reSetPwd(){
+        if(!this.validatorForm(this.ruler)) return
+        if (this.form.password1 !== this.form.password2) {
+          this.$notify('两次密码不相同');
+          return;
+        }
+        let newPwd = md5(this.form.mblNo + this.form.password1);
+
+
+        this.$api.userForgetPwd({
+          newPwd,
+          verCode: this.form.msgCode,
+          verCodeType: 0,
+          mblNo: this.form.mblNo
+        }).then(res => {
+          this.$notify_success('重置成功!')
+          //这里更新自动登录的密码
+
+
+
+
+
+          //这里更新自动登录的密码
+          if(sessionStorage.isddxt == 1){
+            this.$router.push('/?platNo=ddxt');
+          }else{
+            this.$router.push('/');
+          }
+          
+        })
+
+
+      },
+
+      //发送短信验证码
+      sendMSG(){
+        if(this.SEND){return ;}
+        this.SEND = true;
+        if(!this.validatorForm(this.ruleCode)) return
+        let sendParams = {
+          mblNo: this.form.mblNo,
+          verCodeType: 0,
+          anonySign: 'qwre',
+          chanNo: '1212'
+        };
+        this.$api.userSendMsg(sendParams).then(res=>{
+          let countDown = 60;
+          this.sendText = countDown + 's后重发';
+          this.timer = setInterval(() => {
+            countDown--;
+            this.sendText = countDown + 's后重发';
+            if (countDown === 0) {
+              clearInterval(this.timer);
+              this.sendText = '重新发送';
+              this.SEND = false;
+            }
+          }, 1000);
+        }).catch(()=>{
+          this.SEND = false;
+        })
+
+      },
+
+
+      // 验证form参数
+      validatorForm(rule = []){
+        return this.$validator(this.form,rule).check(item=>{
+          this.$notify(item.message)
+        })
+      },
+    }
+  }
+</script>
+
+<style scoped lang="less">
+.forgetpassword{
+  padding-top:50px;
+
+
+  .mgs-btn{
+    border-radius: 22px;
+    background-color: @c-fff;
+    border: none;
+    margin: 0 auto;
+  }
+
+
+
+  .re-input-box{
+    padding: 5px;
+  }
+
+  .btn-box{
+    width: 100%;
+    .flex(center,center);
+    margin-top: 40px;
+  }
+
+  .btn {
+    width: 340px;
+    height: 44px;
+    border: none;
+    font-size: @font-16;
+    border-radius: 22px;
+    background-color: @c-bg-default;
+    color: @c-text-fff;
+    margin: 0 auto;
+  }
+
+
+}
+</style>
diff --git a/src/views/user/index.vue b/src/views/user/index.vue
new file mode 100644
index 0000000..3f881e3
--- /dev/null
+++ b/src/views/user/index.vue
@@ -0,0 +1,12 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-15 10:31:16
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-15 10:44:09
+ * @Description: 
+ -->
+<template>
+    <div>
+        <van-button>hello world</van-button>
+    </div>
+</template>
\ No newline at end of file
diff --git a/src/views/user/login.vue b/src/views/user/login.vue
new file mode 100644
index 0000000..efe6f67
--- /dev/null
+++ b/src/views/user/login.vue
@@ -0,0 +1,246 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-09 09:08:28
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-23 17:36:02
+ * @Description:
+-->
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-15 10:20:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-07-09 16:12:26
+ * @Description: 登录页面
+ -->
+<template>
+    <div class="login-page">
+
+        <form class="pagebody" @submit.prevent="loginBut">
+            <div class="login-input">
+                <div class="height-44">登录</div>
+
+                <div class="logo_img">
+                    <img :src="loginImg" alt="">
+                </div>
+
+                <van-field v-model="userNo" type="tel" clearable maxlength='11'
+                    placeholder="请输入手机号码" >
+                    <template #left-icon>
+                      <van-icon name="phone-o" :color="$store.state.backColor" />
+                    </template>
+                </van-field>
+                <van-field v-model="password" clearable maxlength='16' :type="pwdType"
+                    placeholder="请输入8-16位数字字母组合密码"
+                    >
+                     <template #left-icon>
+                      <van-icon name="contact" :color="$store.state.backColor" />
+                    </template>
+                    <template #right-icon>
+                      <van-icon :name="pwdType== 'text' ? 'closed-eye':'eye-o' " :color="$store.state.backColor" @click="showPassword"/>
+                    </template>
+                </van-field>
+
+                <van-button :color="$store.state.backColor" class="log-btn" native-type="submit">登录</van-button>
+
+            </div>
+            <div class="input-other flex-between-g">
+                <span class="forget-pwd" @click="$router.push('/user/forgetpassword')">忘记密码?</span>
+                <span class="register-u" @click="$router.push('/user/register-home')">注册</span>
+            </div>
+        </form>
+        <div style="font-size: 12px; color: #666;text-align: center;width: 100%;margin-top: 150px;">
+            客服电话:028-64063350
+        </div>
+    </div>
+</template>
+
+<script>
+    import {
+        mapActions,mapState
+    } from 'vuex';
+    import prodConfig from '@/utils/config'
+    export default {
+        data() {
+            return {
+                //数据
+                // 18108048791 1234qwer
+                userNo: '',
+                password: '',
+                //点击显示密码为明文,眼睛的样式也是根据这个来判断的
+                pwdType: 'password',
+                test: false,
+                loginImg: 'static/img/logo.png',
+
+            };
+        },
+
+        methods: {
+            ...mapActions(['login','loginByToken','setColor']),
+            //是否显示明文密码
+            showPassword() {
+                if (this.pwdType === 'password') {
+                    this.pwdType = 'text';
+                } else {
+                    this.pwdType = 'password';
+                }
+            },
+            //登录验证
+            loginBut() {
+                let v = this.$tool;
+                if (v.checkValEmpty(this.userNo)) {
+                    v.toast('请输入手机号');
+                    return;
+                }
+                if (!v.checkPhone(this.userNo)) {
+                    v.toast('请输入正确的手机号');
+                    return;
+                }
+                if (v.checkValEmpty(this.password)) {
+                    v.toast('请输入密码');
+                    return;
+                }
+                if (!v.checkPassword(this.password)) {
+                    v.toast('请输入8-16位数字字母组合密码');
+                    return;
+                }
+                this.login({
+                    vm: this,
+                    userNo: this.userNo,
+                    password: this.password,
+                    sib_mer_sysPlat: localStorage.sib_mer_sysPlat
+                })
+            },
+        },
+        created() {
+            console.log(this.$route.query.platNo)
+            sessionStorage.clear();
+            // location.href.split('?')[1].split('platNo=')[1]
+            if(this.$route.query.wxScore == '1'){
+                window.sessionStorage.setItem("wxScore",1)
+            }
+            if(this.$route.query.platNo == 'ddxt'){
+                console.log(111)
+                window.document.title = '叮咚学堂'
+                window.sessionStorage.setItem("isddxt",1)
+                this.loginImg = "static/img/ddxtlogo.png"
+                this.setColor({
+                    backColor:'#ff8e01',
+                    backJbColorF:'#ff7b00',
+                    backJbColorB:'#ff8e01',
+                    defaultBgColor:'linear-gradient(90deg, #ff7b00, #ff8e01)',
+                    lastColor:'#ff8e01'
+                })
+            }
+            console.log(this.loginImg)
+            if (this.$route.query.sysPlat !== undefined) {
+                localStorage.sib_mer_sysPlat = this.$route.query.sysPlat // 1 微信 2支付宝
+            }
+            prodConfig.setClientInfo();
+            if (!localStorage.getItem('deviceInfo')) {
+                //H5环境
+                // this.loginImg = 'static/img/logo.png';
+            } else {
+                //APP环境,拉渠道json
+                prodConfig.fetchProductConfig().then(
+                    res => {
+                        //让该渠道和json里面的渠道列表做匹配,拿到登陆页面的Logo
+                        let childChan = JSON.parse(localStorage.getItem('deviceInfo')).childChan;
+                        let chanList = res.childChanList;
+                        let chanKeys = Object.keys(chanList);
+                        if (chanKeys.includes(childChan)) {
+                            this.loginImg = chanList[childChan].icon;
+                        } else {
+                            //如果没有找到该渠道,则显示默认图片
+                            this.loginImg = 'https://sie.jycash.cn/scene/img/zlwjr.png';
+                        }
+                    }
+                )
+            }
+        }
+    };
+</script>
+<style lang="less" scoped>
+    #app .vux-header::after {
+        display: none;
+    }
+
+    .login-page {
+        background-color: @c-fff;
+        min-height: 662px;
+
+        .log-btn {
+            border-radius: 22px;
+        }
+
+        .logo_img {
+            width: 100px;
+            height: 100px;
+            margin: 0 auto;
+            padding: 48px 0;
+
+            img {
+                width: 100%;
+                height: 100%;
+            }
+        }
+
+        .pagebody {
+            padding: 0 24px;
+
+
+            .height-44 {
+                .lh(44px);
+                .flex(center, center);
+                font-size: @font-20;
+                color: @c-333;
+            }
+
+
+            .weui-cell {
+                padding: 0;
+                margin-top: 12px;
+            }
+
+            .weui-select {
+                padding: 0;
+            }
+
+            .vux-cell-value {
+                width: 100%;
+            }
+
+            .weui-cells:before {
+                display: none;
+            }
+
+            .weui-cell:before {
+                display: none;
+            }
+
+            .weui-cells:after {
+                display: none;
+            }
+
+            .f-button {
+                width: 100%;
+            }
+        }
+
+        .login-icon {
+            font-size: 20px;
+            padding-right: 12px;
+        }
+
+        .icon-pd {
+            padding-left: 1rem;
+        }
+
+        .input-other {
+            margin-top: 20px;
+
+            .register {
+                float: right;
+            }
+        }
+    }
+</style>
diff --git a/src/views/user/loginByWx.vue b/src/views/user/loginByWx.vue
new file mode 100644
index 0000000..55fab74
--- /dev/null
+++ b/src/views/user/loginByWx.vue
@@ -0,0 +1,255 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-09 09:43:37
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-07 10:34:23
+ * @Description: 微信扫码登录页面
+-->
+<template>
+  <div class="login-by-wx">
+    <div class="height-44" v-if="showContent">登录</div>
+    <div class="info-box" v-if="showContent">
+      <van-field
+        v-model="phoneNum"
+        type="tel"
+        clearable
+        maxlength="11"
+        left-icon="phone-o left-icon"
+        placeholder="请输入手机号码"
+      />
+      <van-field
+        v-model="code"
+        type="number"
+        clearable
+        maxlength="4"
+        left-icon="envelop-o left-icon"
+        input-align="left"
+        placeholder="请输入短信验证码"
+      >
+        <template #button>
+          <van-button color="#896EDB" style="width:60px" size="mini" @click="getCode" :disabled="isDisabled" plain type="info">{{btnText}}</van-button>
+        </template>
+      </van-field>
+      <van-button
+        round
+        type="info"
+        color="#896EDB"
+        style="width: 100%; margin-top: 150px"
+        @click="loginhanld"
+        >登录</van-button
+      >
+    </div>
+    <div v-if="!showContent"></div>
+  </div>
+</template>
+<script>
+import LoginBox from "../../components/common/h-login-box.vue";
+import { GoWeChat } from "../../utils/wechat";
+import { mapActions } from 'vuex';
+import Vue from 'vue';
+import { Toast } from 'vant';
+
+Vue.use(Toast);
+export default {
+  components: {
+    LoginBox,
+  },
+  data() {
+    return {
+      btnText: "获取验证码",
+      phoneNum: "", //电话
+      code: "", //验证码
+      openId: "", //微信openID
+      showContent: false, //显示内容或者输入框
+      urlCode: "", //授权后回调链接上截取的code值
+      timer: "", //定时器
+      isDisabled:false,
+    };
+  },
+  created() {
+
+    if(!sessionStorage.sib_wx_merId || typeof sessionStorage.sib_wx_merId == 'undefined'){
+      sessionStorage.sib_wx_merId = location.href.split('?')[1].split('=')[1]
+    }
+    clearTimeout(this.timer);
+    this.urlCode = this.getUrlCode("code");
+    console.log(this.urlCode);
+    this.init();
+  },
+  methods: {
+    ...mapActions(['loginByOpenId']),
+    /**
+     * @description:初始化授权
+     * @returns void
+     * **/
+    init() {
+      this.openId = localStorage.sib_wx_openId;
+      console.log(this.openId)
+      this.showContent = false;
+      // 模拟数据本地调试
+      // this.openId = "oJbj21YwUatdNaYf3iEPwwGtWuUg";
+      //this.urlCode = "021qXn000q9GCK1xU7300xMP1p0qXn0A";
+      if (
+        (!this.openId && !this.urlCode) ||
+        (typeof this.openId == "undefined" && !this.urlCode)
+      ) {
+        console.log(111);
+        let url = location.host;
+        // url = "t.finlean.com";
+        var str = encodeURIComponent(`https://${url}/sib_wx_score/#/loginByWx`);
+        var fn = new GoWeChat("wx594ab33e0466eccf", str);
+        fn.gocontract();
+      } else {
+        if(!this.openId && this.urlCode){
+          this.$api.getWeChatUserInfo({
+            code:this.urlCode
+          }).then(res=>{
+            this.openId = res.body
+
+            this.showContent = true;
+          })
+        }
+        else if(this.openId && !this.urlCode){
+          this.$api.checkOpenIdIsBind({
+            wechatOpenId:this.openId,
+            merId:sessionStorage.sib_wx_merId
+          }).then(res=>{
+              this.showContent = true;
+              if(res.body.isBind === 1){
+                  localStorage.sib_wx_mblNo = res.body.mblNo
+                  localStorage.sib_wx_userId = res.body.userId
+                  this.loginByOpenId({
+                      vm: this,
+                      loginType:2,
+                      verCode:this.code,
+                      mblNo:res.body.mblNo,
+                      merId:sessionStorage.sib_wx_merId,
+                      wechatOpenId:this.openId,
+                      userId:res.body.userId
+                  })
+                  // this.$router.push('/mine/toggle-identity?title=选择门店')
+              }
+          })
+        }
+
+
+      }
+    },
+    /**
+     * @description:截取code值
+     * @returns void
+     * **/
+    getUrlCode(name) {
+      return (
+        decodeURIComponent(
+          (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
+            location.href
+          ) || [, ""])[1].replace(/\+/g, "%20")
+        ) || null
+      );
+    },
+    /**
+     * @description:倒计时
+     * @param {number} 秒数
+     * @return void
+     * **/
+    timeOut(time) {
+      time = time - 1;
+      if (time === 0) {
+        clearTimeout(this.timer);
+        this.btnText = '重新获取'
+        this.isDisabled = false
+      } else {
+        this.isDisabled = true
+        this.timer = setTimeout(() => {
+          this.btnText = `${time}S`;
+          this.timeOut(time);
+        }, 1000);
+      }
+    },
+    loginhanld(){
+      let v = this.$tool;
+      if(v.checkValEmpty(this.phoneNum)){
+        Toast.fail('请输入手机号');
+        return;
+      }
+      if(!v.checkPhone(this.phoneNum)){
+        Toast.fail('请输入姓名');
+        return;
+      }
+      if(v.checkValEmpty(this.code)){
+        Toast.fail('请输入验证码');
+        return;
+      }
+      this.loginByOpenId({
+          vm: this,
+          loginType:1,
+          verCode:this.code,
+          mblNo:this.phoneNum,
+          merId:sessionStorage.sib_wx_merId,
+          wechatOpenId:this.openId
+      })
+
+      // this.$api.loginByOpenId({
+      //   loginType:1,
+      //   verCode:this.code,
+      //   mblNo:this.phoneNum,
+      //   merId:sessionStorage.sib_wx_merId,
+      //   wechatOpenId:this.openId
+      // }).then(res=>{
+      //   localStorage.sib_wx_mblNo = res.body.mblNo
+      //   localStorage.sib_wx_userId = res.body.userId
+      //   commit(SET_SESSION_ID, 'beef1616-fc2a-43a3-8c27-deb7837bde06');
+      //   this.$router.push('/mine/toggle-identity?title=选择门店')
+      // })
+    },
+    getCode(){
+      this.$api.userSendMsg({
+        verCodeType:2,
+        mblNo:this.phoneNum
+      }).then(res=>{
+        this.timeOut(60)
+      })
+    }
+  },
+};
+</script>
+<style lang="less" scoped>
+.login-by-wx {
+  & {
+    background-color: #fff;
+    min-height: 100vh;
+  }
+  .height-44 {
+    .lh(44px);
+    .flex(center, center);
+    font-size: @font-20;
+    color: @c-333;
+  }
+  .info-box {
+    & {
+      width: 100%;
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translateX(-50%) translateY(-50%);
+      padding: 0 24px;
+      box-sizing: border-box;
+    }
+    .btn {
+      width: 100px;
+      border: 0;
+      outline: none;
+      background: #fff;
+      position: relative;
+    }
+    .btn::before {
+      content: "";
+      position: absolute;
+      height: 15px;
+      border: solid 1px #ebedf0;
+      left: 0px;
+    }
+  }
+}
+</style>
diff --git a/src/views/user/register-home.vue b/src/views/user/register-home.vue
new file mode 100644
index 0000000..68c1f72
--- /dev/null
+++ b/src/views/user/register-home.vue
@@ -0,0 +1,533 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-23 17:52:37
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-12-14 18:10:05
+ * @Description:
+ -->
+<template>
+  <div class="register-home ">
+    <div style="min-height: 570px;">
+      <v-navbar title="注册" fixed back>
+        <div slot="left-back" style="display: flex;">
+          <svg class="icon" aria-hidden="true" style="width:25px;height:44px;" @click="back">
+            <use xlink:href="#iconzuojiantou"></use>
+          </svg>
+        </div>
+      </v-navbar>
+
+
+      <div class="register-home-box">
+
+
+        <!-- 步骤一 -->
+        <div class="step1" v-if="step == 0">
+          <van-field v-model.trim="form.merName" clearable maxlength='80' placeholder="请输入商户名称" />
+          <van-field v-model.trim="form.licenseNo" clearable maxlength='20' placeholder="请输入营业执照号" />
+          <van-field v-model.trim="form.legalName" clearable maxlength='12' placeholder="请输入法人姓名" />
+          <van-field v-model.trim="form.legalIdNo" clearable maxlength='18' placeholder="请输入法人身份证号" />
+          <van-field v-model.trim="form.addrText" clearable :readonly="true" right-icon="arrow"
+            @click="isShowArea = !isShowArea" placeholder="请选择省市区" />
+          <van-field v-model.trim="form.dtlAddr" clearable maxlength='64' placeholder="请输入您的详细地址" />
+          <!-- 扫码进入页面的没有邀请码 -->
+          <van-field v-if="ShowqrCode"  v-model.trim="form.inviteCode"
+            :placeholder="getQr ? '已扫描':'邀请码'" />
+          <van-button :color="$store.state.backColor" class="btn" @click="nextStep">下一步</van-button>
+          <!-- <van-cell v-if="ShowqrCode" :readonly="true" :value="form.licenseNo"
+            placeholder="邀请码">
+          </van-cell> -->
+        </div>
+
+
+
+
+
+
+
+
+        <!-- 步骤二 -->
+        <div class="step2" v-if="step == 1">
+          <van-field v-model.trim="form.priName" clearable maxlength='12' placeholder="请输入负责人姓名" />
+          <van-field v-model.trim="form.priMblNo" type="tel" clearable maxlength='11' placeholder="请输入负责人手机号" />
+
+          <div class="tips" :style="{color:$store.state.backColor}">*该手机号将作为登录用户名,密码将通过短信下发至手机</div>
+
+          <van-field style="margin-top: 0.3rem" v-model.trim="form.priEmail" clearable placeholder="请输入联系人邮箱" />
+
+
+          <van-button :color="$store.state.backColor" class="btn" @click="nextStep">下一步</van-button>
+        </div>
+
+
+
+
+
+
+
+
+        <!-- 步骤三 -->
+        <div class="step3" v-if="step == 2">
+
+          <div>
+            <p class="content-box">
+              <b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;【审慎阅读】</b>您的申请注册流程中点击同意前,应当认真阅读以下协议。请您务必审慎阅读、充分理解协议中相关条款内容。阅读协议的过程中,<u>如果您不同意相关协议或其中任何条款规定,您应立即停止注册程序。</u>
+            </p>
+            <div class="agreement-title" :style="{color:$store.state.backColor}"  @click="showAgreementFunc(1)">《平台使用协议》</div>
+            <!--<div class="agreement-title" @click="showAgreementFunc(2)">《智分期商户协议》</div>-->
+          </div>
+
+          <van-button :color="$store.state.backColor" class="btn" @click="nextStep">{{ saveText }}</van-button>
+        </div>
+
+
+
+
+
+
+
+
+      </div>
+
+      <van-popup v-model="ShowAgreen">
+        <div class="agreenBox">
+          <div class="agreen-html" v-html="Agreend"></div>
+          <div class="close-agreen" @click="ShowAgreen = false">
+            <van-icon name="close" :color="$store.state.backColor"/>
+          </div>
+        </div>
+      </van-popup>
+
+
+      <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false">
+        <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area>
+      </van-popup>
+    </div>
+    <div style="font-size: 12px; color: #666;text-align: center;width: 100%;margin-top: 20px;">
+      客服电话:028-60102895
+    </div>
+  </div>
+</template>
+
+<script>
+  import createUserProtocol from '@/utils/createUserProtocol';
+  import {
+    SET_APP_LOADING
+  } from '@/store/mutations-types';
+  import {
+    mapState,
+    mapMutations
+  } from 'vuex';
+  export default {
+    name: "register-home",
+    data() {
+      return {
+        form: {
+          //第一步
+          inviteCode: '', //邀请码
+          merName: '', //商户名称
+          licenseNo: '', //营业执照号
+          legalName: '', //法人姓名
+          legalIdNo: '', //法人身份证号
+          orgId: '',
+          orgType: '',
+          // orgId: '100001',
+          // orgType: '1',
+          dtlAddr: '',
+          addr: {
+            province: {
+              code: '',
+              name: ''
+            },
+            city: {
+              code: '',
+              name: ''
+            },
+            area: {
+              code: '',
+              name: ''
+            },
+            dtlAddr: '' //详细地址
+          },
+          addrText: '',
+
+
+          //第二步
+          priName: '', //负责人姓名
+          priMblNo: '', //请输入负责人手机号
+          priEmail: '', //请输入联系人邮箱
+
+          protocol: ''
+        },
+        isShowArea: false,
+        getQr: false,
+
+        saveText: '下一步',
+        step: 0,
+        ShowAgreen: false,
+        Agreend: '',
+
+
+        ShowqrCode:true,
+
+        //第一步验证
+        ruleOne: [
+          // {key:"merName",message:"请输入商户名称",type:"isEmpty"},
+          // {key:"merName",message:"请输入正确的商户名称",rule:/^[\u4e00-\u9fa50-9a-zA-Z]{1,40}$/},
+          // {key:"licenseNo",message:"请输入营业执照号",type:"isEmpty"},
+          // {key:"licenseNo",message:"请输入正确的营业执照号",rule:/^[0-9a-zA-Z]{1,20}$/},
+          {
+            key: "legalName",
+            message: "请输入法人代表姓名",
+            type: "isEmpty"
+          },
+          // {
+          //   key: "legalName",
+          //   message: "请输入正确的法人代表姓名",
+          //   rule: /^[\u4e00-\u9fa5]{1,12}$/
+          // },
+          {
+            key: "legalIdNo",
+            message: "请输入法人代表身份证号",
+            type: "isEmpty"
+          },
+          {
+            key: "legalIdNo",
+            message: "请输入正确的身份证号",
+            type: "isIdCard"
+          },
+          {
+            key: "addrText",
+            message: "请选择省市区",
+            type: "isEmpty"
+          },
+          {
+            key: "dtlAddr",
+            message: "请输入详细地址",
+            rule: /\S/
+          },
+        ],
+
+
+
+
+        //第二步验证
+        ruleTwo: [{
+            key: "priName",
+            message: "请输入负责人姓名",
+            type: "isEmpty"
+          },
+          // {
+          //   key: "priName",
+          //   message: "请输入正确的负责人姓名",
+          //   rule: /^[\u4e00-\u9fa5]{1,6}$/
+          // },
+          {
+            key: "priMblNo",
+            message: "请输入负责人手机号",
+            type: "isEmpty"
+          },
+          {
+            key: "priMblNo",
+            message: "请输入正确的负责人手机号",
+            type: "isTel"
+          },
+          {
+            key: "priEmail",
+            message: "请输入联系人邮箱",
+            type: "isEmpty"
+          },
+          {
+            key: "priEmail",
+            message: "请输入正确的联系人邮箱",
+            type: "isEmail"
+          },
+        ],
+
+
+
+      }
+    },
+    computed: {
+      ...mapState(['areaList']),
+      orgId() {
+        return this.$route.query.orgId || '';
+      }
+    },
+    created() {
+      console.log(localStorage.sib_mer_sysPlat == 'undefined')
+      if(this.$route.query.orgId){
+        this.form.orgId = this.$route.query.orgId || '';
+        this.form.orgType = this.$route.query.orgType || '';
+        this.ShowqrCode = false;
+      }
+      this.initWXToken(location.origin + location.pathname);
+    },
+    methods: {
+      ...mapMutations([SET_APP_LOADING]),
+      back() {
+        if (this.step === 0) {
+          this.$router.go(-1)
+        }
+        this.step--;
+      },
+
+      //显示协议
+      showAgreementFunc(which) {
+        this.ShowAgreen = true;
+        let protocol = createUserProtocol(this.form); //协议二
+        this.form.protocol = protocol;
+        if(window.sessionStorage.getItem("wxScore") && window.sessionStorage.getItem("wxScore") == '1'){
+              which === 1 ? this.Agreend = agreement5 : this.Agreend = protocol;
+          }else{
+              which === 1 ? this.Agreend = agreement1 : this.Agreend = protocol;
+          }
+      },
+
+      // 验证form参数
+      validatorForm(rule = []) {
+        return this.$validator(this.form, rule).check(item => {
+          this.$notify(item.message)
+        })
+      },
+
+      //关闭地区弹窗
+      closeAreaModal() {
+        this.isShowArea = false;
+        this.$refs.Area.reset()
+      },
+
+
+      //保存 地区选择
+      setAreaValue(arr) {
+        this.form.addrText = arr[0].name + '-' + arr[1].name + '-' + arr[2].name;
+        this.form.addr = {
+          province: {
+            code: arr[0].code,
+            name: arr[0].name
+          },
+          city: {
+            code: arr[1].code,
+            name: arr[1].name
+          },
+          area: {
+            code: arr[2].code,
+            name: arr[2].name
+          },
+        }
+        this.isShowArea = false;
+        this.$refs.Area.reset()
+      },
+
+
+
+      nextStep() {
+
+        /**
+         *  第一步
+         * */
+        if (this.step === 0) {
+          if (!this.validatorForm(this.ruleOne)) return
+          // if(!this.$route.query.orgId){
+          //   if (!this.getQr) {
+          //     this.$notify('请识别二维码');
+          //     return;
+          //   }
+          // }
+        }
+
+
+        /**
+         *  第二步
+         * */
+        if (this.step === 1) {
+          if (!this.validatorForm(this.ruleTwo)) return
+          this.saveText = '同意协议';
+        }
+
+
+
+        /**
+         *  第三步
+         * */
+        if (this.step === 2) {
+          this.form.addr.dtlAddr = this.form.dtlAddr
+          this.form.protocol = createUserProtocol(this.form); //协议二
+          let sysPlat = localStorage.sib_mer_sysPlat
+          if (sysPlat === 'undefined' || sysPlat === '1') {
+            sysPlat = 1
+          }
+          if (sysPlat === '2') {
+            sysPlat = 2
+          }
+          this.form.sysPlat = sysPlat
+          console.log(this.form);
+          this.$api.merRegist(this.form).then(res => {
+            this.$toast.success(`注册成功,请耐心等待审核!`);
+            if(sessionStorage.isddxt == 1){
+              this.$router.push('/?platNo=ddxt');
+            }else{
+              this.$router.push('/');
+            }
+
+          }).catch(err=>{
+            this.step -= 1;
+          });
+        }
+        this.step++;
+      },
+
+
+
+      //代理所属渠道
+      getRegIDAndType() {
+        let _this = this;
+        console.log('js 调用原生android 方法=====》');
+        window.sessionStorage.removeItem('scene_regInfos');
+        if (window.android && window.android.fetchQrCode) {
+          _this.SET_APP_LOADING(true);
+          window.android.fetchQrCode();
+          let count = 0;
+          let setInterId = setInterval(function () {
+            let _tempStr = window.sessionStorage.getItem(
+              'scene_regInfos'
+            );
+            count++;
+            if (_tempStr && _tempStr.length > 0) {
+              // QRGoBack 这个值不能修改这里的只是和android 值同步的
+              if (_tempStr == 'QRGoBack') {
+                // _this.getQr = false;
+                _this.SET_APP_LOADING(false);
+              } else {
+                _tempStr = JSON.parse(_tempStr);
+                _this.form.orgId = _tempStr.orgId;
+                _this.form.orgType = _tempStr.orgType;
+                if(_tempStr.orgId){
+                  // _this.ShowqrCode = false;
+                }
+                _this.getQr = true;
+                _this.SET_APP_LOADING(false);
+              }
+              clearInterval(setInterId);
+            }
+          }, 60);
+        } else {
+          wx.scanQRCode({
+            needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
+            scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
+            success: function (res) {
+              var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
+              if (result && (result + '').indexOf('orgId') > -1) {
+                result = JSON.parse(result);
+                _this.form.orgId = result.orgId;
+                _this.form.orgType = result.orgType;
+                if(result.orgId){
+                  // _this.ShowqrCode = false;
+                }
+                _this.getQr = true;
+              } else {
+                _this.$notify('无效的二维码');
+              }
+            }
+          });
+        }
+      },
+
+
+      initWXToken(parUrl) {
+        this.$api.getTokenInfo({
+          url: parUrl
+        }).then(
+          function (res) {
+            if (res.errorCode === 0) {
+              // 第二步骤   只需要首页地址分享 ,需要在每次变化时调用
+              wx.config({
+                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+                appId: res.body.appId,
+                timestamp: res.body.timestamp, // 必填,生成签名的时间戳
+                nonceStr: res.body.nonceStr, // 必填,生成签名的随机串
+                signature: res.body.signature, // 必填,签名,见附录1
+                jsApiList: [
+                  'checkJsApi',
+                  'scanQRCode',
+                  'getLocation'
+                ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+              });
+            }
+          },
+          function (error) {
+            if (error.response) {
+              console.log(error.response);
+            }
+          }
+        );
+      }
+
+    }
+  }
+</script>
+
+<style scoped lang="less">
+  .agreement-title {
+    margin-top: 25px;
+    color: @c-default;
+  }
+
+
+  .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;
+    }
+  }
+
+
+  .register-home {
+    padding-top: 44px;
+    padding-bottom: 100px;
+
+    .van-cell {
+      margin-top: 10px;
+    }
+
+    .register-home-box {
+      padding: 10px 20px 50px;
+
+
+    }
+
+    .tips {
+      font-size: @font-12;
+      padding-left: 0.32rem;
+      margin-top: 8px;
+      color: @c-default;
+    }
+
+    .btn {
+      width: 340px;
+      height: 44px;
+      border: none;
+      margin: 40px auto;
+      font-size: @font-16;
+      border-radius: 22px;
+      background-color: @c-bg-default;
+      color: @c-text-fff;
+    }
+  }
+</style>
diff --git a/src/views/user/register.vue b/src/views/user/register.vue
new file mode 100644
index 0000000..4ebae6f
--- /dev/null
+++ b/src/views/user/register.vue
@@ -0,0 +1,186 @@
+<!--
+ * @Author: 陈登伟丶
+ * @Date: 2019-08-21 15:01:00
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-03 17:24:25
+ * @Description:
+ -->
+<template>
+  <div class="register h-100-g">
+    <v-navbar title="商户注册" fixed></v-navbar>
+    <div v-if="!base64" :style="{'height':height+'px'}">
+
+
+
+      <!-- <div class="layout-box" ref="register">
+      <div class="nav-bar-header"></div>
+
+
+
+      <div class="qr-box">
+        <div class="qr-nav"></div>
+        <p class="qr-title">
+          <img :src="IMG1" alt="">
+        </p>
+        <p class="qr-tip">综合分期平台</p>
+        <div class="qr-code" :style="{backgroundImage:'url('+ require('@/assets/img/bg-qr-code.png') +')'}">
+          <div ref="QRCode1">
+            <img :src="dataUrl" alt="">
+          </div>
+        </div>
+        <p class="qr-tip2"> <img :src="IMG2" alt=""></p>
+      </div>
+
+
+
+      <div class="recommed-box">
+        <div class="recommed-list">
+          <div class="recommed-item" v-for="(item,index) in dataList" :key="index">
+            <svg class="icon" aria-hidden="true">
+              <use :xlink:href="item.icon"></use>
+            </svg>
+            <p class="recommed-title" v-text="item.title">手机分期</p>
+          </div>
+        </div>
+        <p class="t-end">注册完成后请关注“<span style="color: #896EDB">智享收银台</span>”公众号</p>
+      </div>
+    </div>
+
+
+
+
+    <div class="circle c1"></div>
+    <div class="circle c2"></div>
+    <div class="circle c3"></div> -->
+      <div class="layout-box h-100-g" ref="register">
+        <div class="qr-code">
+          <div ref="QRCode1">
+            <img :src="dataUrl" alt="">
+          </div>
+        </div>
+        <img src="static/img/share_pic.png" class="img-fluid-g" alt="">
+      </div>
+    </div>
+
+    <div v-else>
+      <img :src="base64" alt="" class="img-fluid-g">
+    </div>
+    <div class="ser-phone" style="font-size: 12px; color: #666;text-align: center;width: 100%;position: absolute;bottom: 20px;">
+      客服电话:028-60102895
+    </div>
+  </div>
+
+</template>
+
+<script>
+  import {
+    mapState,
+    mapGetters
+  } from 'vuex';
+  import QRCode from 'qrcode';
+  import html2canvas from 'html2canvas';
+  import IMG1 from '@/assets/img/zxsyt.png';
+  import IMG2 from '@/assets/img/shsaom.png';
+
+  export default {
+    name: "register",
+    data() {
+      return {
+        base64: '',
+        dataUrl: '',
+        qrCodeBase64Url: '',
+
+        IMG1: IMG1,
+        IMG2: IMG2,
+        height: document.body.clientHeight - 44,
+
+        dataList: [{
+            title: '花呗分期',
+            icon: '#iconhuabeifenqi1'
+          },
+          {
+            title: '手机分期',
+            icon: '#iconshoujifenqi1'
+          },
+          {
+            title: '信用卡分期',
+            icon: '#iconxinyongkafenqi1'
+          },
+          {
+            title: '合约机分期',
+            icon: '#iconheyuejifenqi'
+          }
+        ],
+
+      }
+    },
+    computed: {
+      ...mapState(['userinfo']),
+      ...mapGetters(['orgType'])
+    },
+    mounted() {
+      let _this = this;
+      // let url = {
+      //   orgId: this.userinfo.orgId,
+      //   orgType: this.orgType
+      // };
+      let url = location.origin + location.pathname +
+        `#/user/register-home?orgId=${this.userinfo.orgId}&orgType=${this.orgType}`
+        if(window.sessionStorage.getItem("chanSource")){
+            url = url + '&chanSource='+window.sessionStorage.getItem("chanSource");
+        }
+      QRCode.toDataURL(url, {
+          margin: 0,
+          width: 157
+        },
+        (err, url) => {
+          if (err) console.error(err);
+          _this.dataUrl = url;
+          setTimeout(() => {
+            this.createImg()
+          }, 300);
+        }
+      );
+    },
+    methods: {
+      createImg() {
+        let that = this;
+        html2canvas(this.$refs.register, {
+          backgroundColor: null
+        }).then(canvas => {
+          let base64 = canvas.toDataURL();
+          that.base64 = base64;
+        });
+
+      }
+    }
+  }
+</script>
+
+<style scoped lang="less">
+  .register {
+    padding-top: 44px;
+    background-color: #423d5d;
+    position: relative;
+    // overflow: hidden;
+    // padding-bottom: 50px;
+
+    .layout-box {
+      position: relative;
+    background-color: #423d5d;
+
+    }
+
+    .qr-code {
+      position: absolute;
+      width: 170px;
+      height: 170px;
+      top: 110px;
+      left: 102px;
+      .flex(center, center, warp, column);
+      img {
+        max-width: 157px;
+      }
+    }
+  }
+</style>
diff --git a/src/views/user/reset-pwd.vue b/src/views/user/reset-pwd.vue
new file mode 100644
index 0000000..4707963
--- /dev/null
+++ b/src/views/user/reset-pwd.vue
@@ -0,0 +1,142 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 18:12:00
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-19 16:41:42
+ * @Description: 
+ -->
+<!--
+    修改密码
+-->
+<template>
+  <div class="reset-pwd h-100-g">
+    <v-navbar title="修改密码" fixed></v-navbar>
+
+
+    <div class="cell-group">
+      <v-cell v-model="form.oldPwd" label='原密码' placeholder="请输入原密码"></v-cell>
+      <v-cell v-model="form.newPwd" label='新密码' placeholder="请输入8-16位数字字母组合密码"></v-cell>
+      <v-cell v-model="form.rePwd" label='确认新密码' placeholder="请再次输入新密码"></v-cell>
+    </div>
+
+
+    <footer class="flex-center-g footer">
+      <van-button class="btn" :color="$store.state.backColor" @click="reSetPwd">确认修改</van-button>
+    </footer>
+  </div>
+</template>
+
+<script>
+  import md5 from 'blueimp-md5';
+   import {
+    SET_SESSION_ID,
+    SET_USER_INFO
+  } from '@/store/mutations-types';
+  import {
+    mapState,
+    mapMutations
+  } from 'vuex';
+  export default {
+    name: "reset-pwd",
+    data() {
+      return {
+        form: {
+          oldPwd: '',
+          newPwd: '',
+          rePwd: ''
+        },
+
+        rule: [{
+            key: "oldPwd",
+            message: "请输入原密码",
+            type: "isEmpty"
+          },
+          {
+            key: "newPwd",
+            message: "请输入新密码",
+            type: "isEmpty"
+          },
+          {
+            key: "newPwd",
+            message: "请设置8-16位数字+字母组合密码",
+            type: "isPassword"
+          },
+        ]
+      }
+    },
+    computed: {
+      ...mapState(['userinfo'])
+    },
+    methods: {
+      ...mapMutations([SET_USER_INFO, SET_SESSION_ID]),
+      // 验证form参数
+      validatorForm() {
+        return this.$validator(this.form, this.rule).check(item => {
+          this.$notify(item.message)
+        })
+      },
+
+      reSetPwd() {
+        if (!this.validatorForm()) return
+        if (this.form.newPwd === this.form.oldPwd) {
+          this.$notify('新密码不能与旧密码相同');
+          return;
+        }
+        if (this.form.newPwd !== this.form.rePwd) {
+          this.$notify('两次输入新密码不一致');
+          return;
+        }
+
+        let _mblNo = this.userinfo.mblNo;
+        let obj = {
+          newPwd: md5(_mblNo + this.form.newPwd),
+          oldPwd: md5(_mblNo + this.form.oldPwd)
+        };
+        this.$api.userUpdatePwd(obj).then(res => {
+          this.$notify('修改成功!')
+          //删除信息 重新登录
+          this.SET_USER_INFO({});
+          this.SET_SESSION_ID('');
+          localStorage.removeItem('user_account')
+          localStorage.removeItem('user_pwd')
+          if(sessionStorage.isddxt == 1){
+            this.$router.push('/?platNo=ddxt')
+          }else{
+            this.$router.push('/')
+          }
+          
+        })
+      },
+    }
+  }
+</script>
+
+<style scoped lang="less">
+  .reset-pwd {
+    padding-top: 44px;
+    background-color: @c-f5;
+
+    .cell-group {
+      margin: 10px auto 0 auto;
+      width: 360px;
+    }
+
+
+    .btn {
+      width: 340px;
+      height: 44px;
+      border: none;
+      font-size: @font-16;
+      border-radius: 22px;
+      background-color: @c-bg-default;
+      color: @c-text-fff;
+
+    }
+
+    .footer {
+      margin-top: 25px;
+      padding-bottom: 30px;
+    }
+
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/user/supplement.vue b/src/views/user/supplement.vue
new file mode 100644
index 0000000..07bac0b
--- /dev/null
+++ b/src/views/user/supplement.vue
@@ -0,0 +1,163 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2020-11-09 11:44:43
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-11 16:51:59
+ * @Description: 信息补充页面
+-->
+<template>
+  <div class="information-supplement">
+    <v-navbar title="信息补充"></v-navbar>
+    <div class="content-box">
+      <van-cell-group>
+        <van-field
+          v-model.trim="info.userName"
+          label="姓名"
+          input-align="right"
+          placeholder="请填写真实姓名"
+          clearable
+        />
+        <van-field
+          v-model.trim="info.email"
+          clearable
+          input-align="right"
+          label="邮箱"
+          placeholder="请输入邮箱"
+        />
+        <van-field
+          v-model.trim="info.orgName"
+          is-link
+          disabled
+          label="归属门店"
+          input-align="right"
+          placeholder="请选择归属门店"
+          @click="show=true"
+        />
+      </van-cell-group>
+       <van-button round type="info" color="#896EDB" style="width:100%;margin-top:150px" @click="hanldClick">完成</van-button>
+    </div>
+    <van-popup v-model="show" position="bottom" :style="{ height: '40%' }">
+        <van-picker
+          title="选择归属门店"
+          show-toolbar
+          value-key="orgName"
+          :columns="storeList"
+          @confirm="onConfirm"
+          @cancel="onCancel"
+        />
+    </van-popup>
+  </div>
+</template>
+<script>
+import Vue from 'vue';
+import { Toast } from 'vant';
+import { mapActions } from 'vuex';
+Vue.use(Toast);
+export default {
+    data() {
+        return {
+            info:{
+                orgId:'',
+                orgName:'',
+                email:'',
+                userName:'',
+            },
+            show:false,
+            storeList:[],
+        }
+    },
+    created(){
+        this.init()
+    },
+    methods:{
+      ...mapActions(['loginByOpenId']),
+        /**
+         * @description:初始化
+         * @returns void
+         * **/ 
+       init(){
+          
+          this.storeList = JSON.parse(this.$route.query.storeList) 
+           
+       },
+       /**
+         * @description:确认归属门店选择
+         * @returns void
+         * **/
+       onConfirm(value){
+           this.info.orgName = value.orgName
+           this.info.orgId = value.orgId
+           this.show = false
+       },
+       /**
+         * @description:取消选择门店
+         * @returns void
+         * **/
+       onCancel(){
+           this.show = false
+       },
+       /**
+         * @description:提交
+         * @returns void
+         * **/
+       hanldClick(){
+            let v = this.$tool;
+            if (v.checkValEmpty(this.info.userName)) {
+                Toast.fail('请输入姓名');
+                return;
+            }
+            if (v.checkValEmpty(this.info.email)) {
+                Toast.fail('请输入邮箱');
+                return;
+            }
+            if (!v.checkEmail(this.info.email)) {
+                Toast.fail('请输入正确的邮箱');
+                return;
+            }
+            if (v.checkValEmpty(this.info.orgId)) {
+                Toast.fail('请选择归属门店');
+                return;
+            }
+            this.$api.userAddStoreManager({
+              	email: this.info.email,
+	              mblNo: localStorage.sib_wx_mblNo,
+	              merId: sessionStorage.sib_wx_merId,
+	              storeId: this.info.orgId,
+	              username: this.info.userName,
+	              wechatOpenId: localStorage.sib_wx_openId
+            }).then(res=>{
+                localStorage.sib_wx_userId = res.body.userId
+                this.loginByOpenId({
+                    vm: this,
+                    loginType:2,
+                    mblNo:localStorage.sib_wx_mblNo,
+                    merId:sessionStorage.sib_wx_merId,
+                    wechatOpenId:localStorage.sib_wx_openId,
+                    userId:localStorage.sib_wx_userId
+                })
+
+
+                // this.$router.push({
+                //   path:'/main/mine',
+                //   query:{
+                //       isLoginByOpenId:1
+                //   }
+                // })
+            })
+       }
+    }
+};
+</script>
+<style lang="less" scoped>
+.information-supplement {
+  & {
+    background-color: #f5f5f5;
+    min-height: 100vh;
+  }
+  .content-box{
+      width: 96vw;
+      margin: auto;
+      margin-top: 10px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/zfblx/lxCode.vue b/src/views/zfblx/lxCode.vue
new file mode 100644
index 0000000..33f18c2
--- /dev/null
+++ b/src/views/zfblx/lxCode.vue
@@ -0,0 +1,127 @@
+<template>
+  <div class="lxcode">
+    <van-nav-bar title="支付宝拉新" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+    <div class="lxcoed-bg">
+        <img src="../../assets/zfblx/bg4.png" alt="">
+    </div>
+    <div class="lxcoed-code">
+        <img src="../../assets/zfblx/bg2.png" alt="" style="">
+        <div class="lxcoed-code-content">
+            <img class="ewm-img" src="../../assets/zfblx/bg3.png" alt="">
+            <img class="code-img" src="../../assets/zfblx/code.png" alt="">
+        </div>
+        <div class="lxcoed-code-text">
+            支付宝拉新二维码
+        </div>
+    </div>
+     <van-button round color="#896EDB" class="btn2" @click="bankHome">返回首页</van-button>
+  </div>
+</template>
+
+<script>
+export default {
+    data() {
+        return{
+
+        }
+    },
+    created() {
+
+    },
+    methods: {
+        onClickLeft() {
+            this.$router.go(-1);
+        },
+        //返回首页
+        bankHome() {
+            this.$router.push("/main/product")
+        }
+    }
+}
+</script>
+
+<style lang='less' scoped>
+    .code-img{
+        width: 86% !important;
+        height: 86% !important;
+        // position: absolute;
+        margin-bottom: 4%;
+    }
+    .ewm-img{
+        position: absolute;
+        left: 0;
+        right: 0;
+        z-index: 2222;
+    }
+    .lxcode{
+        background: #F3F4F5;
+        min-height: 100%;
+        text-align: center;
+        img{
+            width: 100%;
+            height: 100%;
+        }
+    }
+    .lxcoed-bg{
+        width: 100%;
+        height: 225px;
+        // background: url('../../assets/zfblx/bg4.png');
+        background-size: 100% 100%;
+    }
+    .lxcoed-code{
+        width: 94%;
+        height: 360px;
+        margin: 0 3%;
+        position: relative;
+        // background: url("../../assets/zfblx/bg2.png");
+        // background-size: 100% 100%;
+        transform: translateY(-50%);
+        overflow: hidden;
+        // padding: 3px;
+        text-align: center;
+        line-height: 330px;
+        img{
+            width: 100%;
+            height: 100%;
+        }
+        &-content{
+            // width: 175px;
+            width: 50%;
+            margin: 0 25%;
+            height: 175px;
+            // background: url("../../assets/zfblx/bg3.png");
+            background-size: 100% 100%;
+            margin-top: 50px;
+            // margin-left: 90px;
+            position: absolute;
+            top: 0;
+            left: 0;
+            bottom: 0;
+            right: 0;
+        }
+        &-text{
+            width: 100%;
+            margin-top: 66px;
+            font-size: 14px;
+            color: #333333;
+            text-align: center;
+            line-height: 20px;
+            position: absolute;
+            bottom: 55px;
+        }
+    }
+    .btn2{
+        // width: 280px;
+        width: 86%;
+        margin: 0 7%;
+        height: 44px;
+        margin-top: 20px;
+        background:rgba(137,110,219,1);
+       
+        color: white;
+         transform: translateY(-180px);
+    }
+
+</style>
\ No newline at end of file
diff --git a/src/views/zfblx/lxExplain.vue b/src/views/zfblx/lxExplain.vue
new file mode 100644
index 0000000..70a8b77
--- /dev/null
+++ b/src/views/zfblx/lxExplain.vue
@@ -0,0 +1,34 @@
+<template>
+  <div>
+    <van-nav-bar title="核算说明" left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+    </van-nav-bar>
+    <div class="img-container" v-for="item in 3">
+        <img :src="`${imgUrl}${item}.png`" :alt="'核算说明'+ item">
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+    data() {
+        return{
+            imgUrl: 'https://t.finlean.com/czjc/img/sib_mer/hssm/',
+        }
+    },
+    methods: {
+        onClickLeft() {
+            this.$router.go(-1);
+        }
+    },
+}
+</script>
+
+<style lang='less' scoped>
+    .img-container{
+        width: 100%;
+        img{
+            width: 100%;
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/zfblx/lxLogin.vue b/src/views/zfblx/lxLogin.vue
new file mode 100644
index 0000000..980a980
--- /dev/null
+++ b/src/views/zfblx/lxLogin.vue
@@ -0,0 +1,192 @@
+<template>
+  <div>
+    <van-nav-bar  left-text="返回" left-arrow @click-left="onClickLeft" style="line-height: 43px;">
+        <div slot="title">
+            <p style="font-weight: bold;">支付宝拉新</p>
+        </div>
+        <i class="iconfont iconzuojiantou" slot="left" style="font-size: 25px;"></i>
+        <div class="" slot="right" style="font-size: 14px;line-height: 50px;" @click="toExplain">说明</div>
+    </van-nav-bar>
+    <div class="lx-content">
+        <div class="lx-content-head">
+            <img src="../../assets/zfblx/bg.png" alt="">
+            <div class="lx-content-head-text">
+                <p v-for="item in text">
+                    {{ item }}
+                </p>
+            </div>
+            <div class="lx-content-head-login">
+                <div>
+                    <i class="iconfont" style="font-size: 20px">&#xe66c;</i>
+                    <input type="text" placeholder="请输入姓名" v-model="username" maxlength="5">
+                </div>
+                <div>
+                    <i class="iconfont" style="font-size: 20px">&#xe664;</i>
+                    <input type="text" placeholder="请输入手机号" v-model="usephone" maxlength="11">
+                </div>
+            </div>
+            <van-button round color="#896EDB" class="btn" @click="toCode">生成二维码</van-button>
+        </div>
+        <div class="lx-content-course">
+            <div class="lx-content-course-item1">
+                <img :src="`${imgAdd}1.png`" :alt="'图文教程'+ item">
+            </div>
+            <div class="lx-content-course-item" v-for="item in 5">
+                <img :src="`${imgAdd}${item + 1}.png`" :alt="'图文教程'+ item">
+            </div>
+        </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import rule from '../../utils/formValidator';
+export default {
+    data() {
+        return{
+            text: [],
+            usephone: '',
+            username: '',
+            imgAdd: 'https://t.finlean.com/czjc/img/sib_mer/zfblx/', //图片存后台的地址路径
+        }
+    },
+    created() {
+        this.init();
+
+    },
+    methods: {
+        init() {          
+            this.text = [
+                " 1、请保证填写信息与客户注册支付宝信息一致,不然无法进行结算。", 
+                "2、需要用户关闭WiFi,使用4G网络,同意所有授权。",
+                "3、客户注册支付宝前需提醒客户千万不要领取系统红包。"
+            ]
+        },
+        //回退按钮
+        onClickLeft() {
+            this.$router.go(-1);
+        },
+        //跳转到拉新说明页面
+        toExplain() {
+            this.$router.push("/product/zfblx/lxexplain")
+        },
+        //跳转到拉新二维码页面
+        toCode() {
+            let v = this.$tool;
+            if (v.checkValEmpty(this.username)) {
+                v.toast('请输入用户名');
+                return;
+            }
+            if (v.checkValEmpty(this.usephone)) {
+                v.toast('请输入手机号');
+                return;
+            }
+            if (!v.checkPhone(this.usephone)) {
+                v.toast('请输入正确的手机号');
+                return;
+            }
+            console.log(this.usephone)
+
+            this.$api.zfbLxSave({usrName: this.username, usrNo: this.usephone}).then(res => {
+                this.$router.push("/product/zfblx/lxcode")
+            },err => err)
+            // this.$api.zfbLxList().then(res => {
+            //     console.log(res.body)
+            // })
+        },
+    }
+}
+</script>
+
+<style lang='less' scoped>
+@font-face {
+  font-family: 'iconfont';  /* project id 1351259 */
+  src: url('//at.alicdn.com/t/font_1351259_rg7lh167259.eot');
+  src: url('//at.alicdn.com/t/font_1351259_rg7lh167259.eot?#iefix') format('embedded-opentype'),
+  url('//at.alicdn.com/t/font_1351259_rg7lh167259.woff2') format('woff2'),
+  url('//at.alicdn.com/t/font_1351259_rg7lh167259.woff') format('woff'),
+  url('//at.alicdn.com/t/font_1351259_rg7lh167259.ttf') format('truetype'),
+  url('//at.alicdn.com/t/font_1351259_rg7lh167259.svg#iconfont') format('svg');
+}
+.lx-content{
+    width: 100%;
+    margin-top: 16px;
+    img{
+        width: 100%;
+        height: 100%;
+    }
+    &-head{
+        height: 395px;
+        width: 94%;
+        margin:  0 3%;
+        // background: url('../../assets/zfblx/bg.png') no-repeat;
+        background-size: 100% 100%;
+        overflow: hidden;
+        position: relative;
+        &-text{
+            position: absolute;
+            top: 0;
+            margin: 50px 25px 0 30px;
+            p{
+                line-height: 20px;
+                font-size: 13px;
+                color: #705BAF;
+            }
+        }
+        &-login{
+            width: 100%;
+            // margin: 55px 25px 0 35px;
+            position: absolute;
+            // left: 35px;
+            width: 80%;
+            margin: 0 10%;
+            bottom: 78px;
+            input{
+                border: none;
+                height: 38px;
+                width: 85%;
+                border-radius: 20px;
+                padding-left: 15%;
+                box-sizing: content-box;
+            }
+            i{
+                position: absolute;
+                left: 16px;
+                line-height: 40px;
+            }
+            :first-child{
+                margin-bottom: 15px;
+            }
+        }
+    }
+    &-course{
+        width: 100%;
+        text-align: center;
+        &-item{
+            width: 100%;
+            img{
+                width: 100%;
+            }
+        }
+        &-item1{
+            margin-top: 32px;
+            width: 100%;
+            img{
+                display: inline-block;
+                width: 110px;
+            }
+        }
+    }
+}
+.btn{
+    width: 80%;
+    margin: 0 10%;
+    height: 40px;
+    position: absolute;
+    background:rgba(137,110,219,1);
+    // margin: 15px 30px 0 30px;
+    bottom: 23px;
+    // left: 35px;
+    color: white;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/zfblx/lxOrder.vue b/src/views/zfblx/lxOrder.vue
new file mode 100644
index 0000000..a4f4b2c
--- /dev/null
+++ b/src/views/zfblx/lxOrder.vue
@@ -0,0 +1,526 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-20 14:07:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-04 16:11:37
+ * @Description: 花呗订单
+ -->
+<template>
+    <div class="order-hb-box">
+        <v-navbar title="支付宝拉新" fixed>
+            <template v-slot:right>
+                <div class="flex-center-g" @click="isShow = true;">
+                    <span>筛选</span>
+                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;">
+                        <use xlink:href="#iconshaixuan"></use>
+                    </svg>
+                </div>
+            </template>
+        </v-navbar>
+        <!-- 订单列表 -->
+        <div class="order-list">
+            <v-datacard class='info' :list="orderData"></v-datacard>
+            <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init" >
+                <!-- <v-order-item :name="item.userName || '无'" :user='item.label' :time='+item.creTime' :list='item.list'
+                    v-for="(item,k) in list" :key="k" @click="go(item.orderId)"></v-order-item> -->
+                    <div class="lx-list fs-14" v-for="(item, index) in list" :key="index" @click="go(item.id)">
+                        <div class="lx-list-head">
+                            <div class="lx-list-head-item">
+                                <p class="fw">{{ item.usrName }}</p>
+                                <p>姓名</p>
+                            </div>
+                            <div class="lx-list-head-item" style="width: 40%;">
+                                <p class="fw">{{ item.usrNo }}</p>
+                                <p>手机号</p>
+                            </div>
+                            <div class="lx-list-head-item">
+                                <p class="fw" :style="{color:item.status == 3?'#ED4014': item.status == 0 ? '#333' : '#19BE6B'}">{{ item.status == 0 ? '待确认' : item.status == 1? '拉新' : item.status == 2? '拉新+绑卡' : '无效' }}</p>
+                                <p>订单状态</p>
+                            </div>
+                        </div>
+                        <div class="lx-list-foot">
+                            <div class="lx-list-foot-top">
+                                <p class="flex">
+                                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;margin-ringt:7px;">
+                                        <use xlink:href="#iconyonghu"></use>
+                                    </svg>
+                                    <span style="margin-left:7px;">{{  }}</span>
+                                    
+                                </p>
+                                <p class="flex">
+                                    <svg class="icon" aria-hidden="true" style="width:18px;height:18px;margin-ringt:7px;">
+                                        <use xlink:href="#iconshijian"></use>
+                                    </svg>
+                                    <span style="margin-left:7px;">{{ item.creTime | timeformat('yyyy-MM-dd HH:mm:ss') }}</span>
+                                    
+                                </p>
+                            </div>
+                            <div class="lx-list-foot-bottom flex">
+                                <svg class="icon" aria-hidden="true" style="width:18px;height:18px;margin-ringt:7px;">
+                                    <use xlink:href="#iconshanghumingcheng"></use>
+                                </svg>
+                                <span style="margin-left:7px;">{{ orgType==4? item.mgrName : orgType==3? item.storeName : item.merName }}</span>
+                            </div>
+                        </div>
+                    </div>
+            </van-list>
+        </div>
+        <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle>
+
+        <v-filter v-model="isShow" :belongArr="belongArr"  :statusArr="statusArr"  :hasMoney='false'
+            @search="(v)=>search(v,true)"></v-filter>
+        <!-- <v-filter v-model="isShow" :belongArr="belongArr" :periodsArr="periodsArr" :statusArr="statusArr" customTitle="分期本金" :hasSearch="true"
+            @search="(v)=>search(v,true)"></v-filter> -->
+
+
+        <van-popup v-model="exporShow">
+            <div class="popup-content">
+                <div class="icon-box flex-center-g">
+                    <div class="child flex-center-g">
+                        <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()">
+                            <use xlink:href="#iconyoujian"></use>
+                        </svg>
+                    </div>
+                </div>
+                <p class="text">
+                    <span class="top">已将信息发送至邮箱,请注意查收</span>
+                    <span v-text="userinfo.email || ''">1244667@163.com</span>
+                </p>
+                <van-button class="btn-submit" @click="exporShow=false;">确定</van-button>
+            </div>
+        </van-popup>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapGetters
+    } from 'vuex';
+    import {
+        getParams
+    } from '@/utils/index';
+    export default {
+        data() {
+            return {
+                loading:false,
+                finished:false,
+
+                exporShow:false,
+
+                isShow: false,
+                list: [],
+                orderData: [],
+                belongArr: [],
+                periodsArr: [],
+                statusArr: [],
+                filter: {}
+            }
+        },
+        computed: {
+            ...mapState(['userinfo']),
+            ...mapGetters(['orgType']),
+            prodId() {
+                return this.$route.query.prodId
+            },
+            typeId(){
+                return this.$route.query.typeId
+            },
+            id() {
+                return this.$route.query.id;
+            },
+            dataLabel(){
+                if(this.orgType===1 || this.orgType===2){
+                    return "交易商户数"
+                }else if(this.orgType ===3){
+                    return "交易门店数"
+                }else{
+                    return "交易门店数"
+                }
+            }
+        },
+        created() {
+            // console.log(null == 0)
+            this.init()
+            // console.log(this.orgType)
+            this.getOrderReport()
+            this.getOrderInit()
+        },
+        methods: {
+            search(v,isClear){
+                console.log(v)
+                v.status = v.orderStatus;
+                v.endTime = v.endDay;
+                v.staTime = v.startDay;
+                // v.orgId = v.mgrList[0] || '';
+                this.filter.orderId ="";
+                this.finished = false;
+                this.init(v,isClear)
+                this.getOrderReport(v)
+            },
+            // 获取过滤条件
+            getOrderInit() {
+                // this.$api.zfbLxReport({
+                    
+                // }).then((res) => {
+                //     let body = res.body,
+                //         insTermVoList = body.insTermVoList || [],
+                //         orderStatusList = body.orderStatusList || [],
+                //         orgBaseInfVoList = body.orgBaseInfVoList || [];
+                //     this.periodsArr = insTermVoList;
+                //     // this.statusArr = orderStatusList;
+                //     // this.belongArr = orgBaseInfVoList;
+                    
+                // }).catch((err) => {
+
+                // });
+
+            },
+            // 跳转到详情页面
+            go(id) {
+                this.$router.push(`/order/lxOredrDetail?id=${id}`)
+            },
+            calcLabel(item){
+                switch (this.orgType) {
+                    case 1:
+                        item.label = item.merName
+                        break;
+                    case 2:
+                        item.label = item.merName
+                        break;
+                    case 3:
+                        item.label = item.storeName
+                        break;
+                    case 4:
+                        item.label = item.recordPerson
+                        break;
+                }
+            },
+            // 获取订单列表
+            init(params = this.filter,isClear) {
+                let p = getParams(this.orgType, this.id)
+                params.prodTypeId = this.typeId;
+                params = Object.assign(params, p)
+                this.loading = true;
+                // this.list = [
+                //             {
+                //                 userName: '刘肖百',
+                //                 usrNo: 13688892222,
+                //                 statusStr: 0,
+                //                 bdUsr: '马小琴',
+                //                 time: '2019-08-13 11:59:09',
+                //                 address: '银川市金凤区鼎诚中国移动通讯服务'
+                //             },
+                //             {
+                //                 userName: '刘肖百',
+                //                 usrNo: 13688892222,
+                //                 statusStr: 2,
+                //                 bdUsr: '马小琴',
+                //                 time: '2019-08-13 11:59:09',
+                //                 address: '银川市金凤区鼎诚中国移动通讯服务'
+                //             },
+                //             {
+                //                 userName: '刘肖百',
+                //                 usrNo: 13688892222,
+                //                 statusStr: 1,
+                //                 bdUsr: '马小琴',
+                //                 time: '2019-08-13 11:59:09',
+                //                 address: '银川市金凤区鼎诚中国移动通讯服务'
+                //             },
+                //         ]
+                // console.log(new Date().valueOf())
+                //拉新列表初始化
+                this.$api.zfbLxInit().then(res => {
+                    this.belongArr = res.body.orgInfList;
+                    console.log(this.belongArr.length)
+                    if(this.belongArr.length == 0){
+                        console.log('this.belongArr')
+                        this.belongArr.push({code:'code', name:''})
+                    }
+                    this.statusArr = res.body.statusList;
+                })
+                // this.$api.zfbLxList().then(res => {
+
+                // })
+                console.log(params.merList)
+                let date = {
+                    status : params.orderStatus,
+                    endTime : params.endDay,
+                    staTime : params.startDay,
+                    orgId : ''
+                }
+                if(params.merList) {
+                    date.orgId = params.merList[0];
+                }
+                if(params.chanList) {
+                    date.orgId = params.chanList[0];
+                }
+                if(params.storeList) {
+                    date.orgId = params.storeList[0];
+                }
+                this.$api.zfbLxList({...date}).then(res => {
+                    // console.log(res.body)
+                    this.filter = {...params};
+                    this.list = res.body;
+                    // console.log(this.list)
+                    this.$forceUpdate();
+                    // if(isClear){
+                    //     this.list = [];
+                    //     console.log('is')
+                    // }
+                    let list = res.body || [],
+                        len = list.length;
+                    if (len) {
+                        this.filter.orderId = list[list.length - 1].orderId;
+                        // list.forEach(item => {
+                        //     this.calcLabel(item)
+                        //     let color = 'success';
+                        //     switch (item.status) {
+                        //         case 1:
+                        //             color = 'success';
+                        //             break;
+                        //         case 2:
+                        //             color = 'error';
+                        //             break;
+                        //         case 0:
+                        //             color = 'warning';
+                        //             break;
+                        //         case 3:
+                        //             color = 'warning';
+                        //             break;
+                        //     }
+                        //     this.list.push({
+                        //         ...item,
+                        //         list: [{
+                        //                 value: item.settAmt,
+                        //                 label: '分期本金(元)',
+                        //             },
+                        //             {
+                        //                 value: item.insTermStr,
+                        //                 label: '分期期数(月)',
+                        //             },
+                        //             {
+                        //                 value: item.statusStr,
+                        //                 label: '订单状态',
+                        //                 color
+                        //             }
+                        //         ]
+                        //     })
+                        // })
+                    }
+                    if (len < 10) {
+                        this.finished = true;
+                    }
+                    this.loading = false;
+                    this.isShow = false;
+                }).catch((err) => {
+                    this.finished = true;
+                    this.loading = false;
+                });
+            },
+            //订单导出
+            exportFile() {
+                    if (!this.list.length) {
+                    this.$notify('暂无数据导出')
+                    return;
+                }
+                console.log(this.filter)
+                let date = {
+                    status : this.filter.orderStatus,
+                    endTime : this.filter.endDay,
+                    staTime : this.filter.startDay,
+                    orgId : ''
+                }
+                if(params.merList) {
+                    date.orgId = params.merList[0];
+                }
+                if(params.chanList) {
+                    date.orgId = params.chanList[0];
+                }
+                if(params.storeList) {
+                    date.orgId = params.storeList[0];
+                }
+                this.$api.zfbLxExport(date).then((res) => {
+
+                    this.exporShow = true;
+
+                    // this.$dialog.alert({
+                    //     showCancelButton: false,
+                    //     message: `<div>
+                    //             <p>已将信息发送至邮箱,请注意查收</p>
+                    //             <p>${this.userinfo.email}</p>
+                    //         </div>`
+                    // }).then(() => {
+                    //
+                    // });
+                }).catch((err) => {
+
+                });
+            },
+            // 获取订单统计数据
+            getOrderReport(params) {
+                console.log(params)
+                // params.status = params.orderStatus;
+                    let date = {
+                        status : '',
+                        endTime : '',
+                        staTime : '',
+                        orgId : ''
+                    }
+                if(params) {
+                    console.log('1')
+                    date.endTime = params.endDay;
+                    date.staTime = params.startDay;
+                    date.status = params.orderStatus;
+                    if(params.merList) {
+                        date.orgId = params.merList[0];
+                    }
+                    if(params.chanList) {
+                        date.orgId = params.chanList[0];
+                    }
+                    if(params.storeList) {
+                        date.orgId = params.storeList[0];
+                    }
+                }
+                this.$api.zfbLxReport({
+                    ...date,
+                    prodId: this.prodId,
+                    pageType: 2,
+                }).then(({
+                    body
+                }) => {
+                    this.orderData = [];
+                    this.orderData.push({
+                        title: '待确认',
+                        num: body.dqrNum || 0,
+                    })
+                    this.orderData.push({
+                        title: '拉新',
+                        num: body.lxNum || 0,
+                    })
+                    let num = body.lxAndBkNum || 0;
+                    // if(this.orgType==4){
+                    //     num = "—";
+                    // }
+                    this.orderData.push({
+                        title: "拉新+绑卡",
+                        num
+                    })
+                }).catch((err) => {
+
+                })
+            },
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .fs-12{
+        font-size: 12px;
+        color: #999;
+    }
+    .fs-14{
+        font-size: 14px;
+        color: #333333;
+    }
+    .bor-box{
+        box-sizing: border-box;
+    }
+    .flex{
+        .flex();
+    }
+    .fw{
+        font-weight: bold;
+    }
+    .order-hb-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+    }
+    .order-list {
+        padding: 0 8px 30px;
+
+        .info {
+            margin-bottom: 20px;
+        }
+    }
+    .popup-content{
+        height: 150px;
+        width: 280px;
+        border-radius: 3px;
+        .icon-box{
+            z-index: 99999;
+            height: 64px;
+            width: 64px;
+            position: absolute;
+            left: 50%;
+            background:rgba(66,61,93,0.1);
+            border-radius: 50%;
+            transform: translate(-50%,-50%);
+
+            .child{
+                height: 55px;
+                width: 55px;
+                background:rgba(66,61,93,0.8);
+                border-radius: 50%;
+            }
+        }
+        .text{
+            width: 210px;
+            text-align: center;
+            margin: 0 auto;
+            padding-top: 50px;
+            line-height: 18px;
+            .top{
+                color: @c-text-666;
+            }
+        }
+        .btn-submit{
+            .lh(44px);
+            position: absolute;
+            width: 100%;
+            bottom: 0;
+            color: @c-text-default;
+        }
+    }
+    .lx-list{
+        width: 96%;
+        height: 135px;
+        margin: 0 2%;
+        background: #FFFFFF;
+        margin-top: 10px;
+        // &:extend(.bor-box);
+        // box-sizing: border-box;
+        &-head{
+            width: 100%;
+            .flex();
+            text-align: center;
+            &-item{
+                width: 30%;
+                height: 77px;
+                :first-child{
+                    margin-top: 22px;
+                    margin-bottom: 9px;
+                }
+                :last-child{
+                    font-size: 12px;
+                    color: #999;
+                }
+            }  
+        }
+        &-foot{
+            height: 50px;
+            width: 92%;
+            margin: 0 2%;
+            padding: 0 2%;
+            font-size: 12px;
+            color: #999;
+            background: #F7F7FA;
+            &-top{
+                .flex(space-between, center);
+                height: 25px;
+                line-height: 25px;
+                margin-bottom: 3px;
+            }
+        }
+    }
+</style>
diff --git a/src/views/zfblx/lxOrderDetail.vue b/src/views/zfblx/lxOrderDetail.vue
new file mode 100644
index 0000000..19190df
--- /dev/null
+++ b/src/views/zfblx/lxOrderDetail.vue
@@ -0,0 +1,189 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 16:20:48
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-10-22 08:56:10
+ * @Description: 花呗分期——订单详情
+ -->
+<template>
+    <div class="hb-detail-box h-100-g">
+        <v-navbar title="订单详情" fixed></v-navbar>
+        <div class="content">
+            <div class="cell-group">
+                <van-cell :value="form.usrName" title='姓名' readonly></van-cell>
+                <van-cell :value="form.usrNo" title='手机号' readonly></van-cell>
+            </div>
+
+            <div class="cell-group">
+                <van-cell v-if="form.creTime" :value="form.creTime | timeformat('yyyy-MM-dd')" title='交易时间' readonly></van-cell>
+                <van-cell v-else title='交易时间' readonly></van-cell>
+                <van-cell :value="form.status" :value-class="statusColor" title='订单状态' readonly>{{ form.status == 0 ? '待确认' : form.status == 1? '拉新' : form.status == 2? '拉新+绑卡' : '无效' }}</van-cell>
+            </div>
+
+            <div class="cell-group" >
+                <van-cell :value="form.chanName || '无'" title='办理渠道' readonly></van-cell>
+                <van-cell :value="form.merName || '无'" title='办理商户' readonly></van-cell>
+                <van-cell :value="form.storeName || '无'" title='办理门店' readonly></van-cell>
+                <van-cell :value="form.mgrName || '无'" title='办单员' readonly></van-cell>
+            </div>
+
+            <!-- <div class="cell-group">
+                <van-cell :value="form.rate + '%'" title='费率' readonly></van-cell>
+            </div> -->
+        </div>
+
+        <!-- <footer class="footer flex-center-g">
+            <van-button class="btn" v-if="form.refundStatus==1" @click="refund">退款</van-button>
+            <van-button class="btn" v-if="form.status==0" @click="showCode">显示支付二维码</van-button>
+        </footer> -->
+
+    </div>
+</template>
+
+<script>
+    import {
+        mapState
+    } from 'vuex';
+    export default {
+        data() {
+            return {
+                form: {},
+                statusColor:'',
+                id: this.$route.query.id, //lx订单详情id
+            }
+        },
+        computed: {
+            id() {
+                return this.$route.query.id
+            },
+            typeId() {
+                return this.$route.query.typeId
+            },
+            ...mapState(['userinfo'])
+        },
+        created() {
+            this.init()
+        },
+        methods: {
+            init() {
+                // this.$api.getHBDetail(this.id).then((res) => {
+                //     this.form = res.body || {};
+                //     if(this.form) {
+                //         if (this.form.status == 1) {
+                //             this.statusColor = 'status-val-done';
+                //         } else if (this.form.status == 2) {
+                //             this.statusColor = 'status-val-error';
+                //         } else if (this.form.status == 3) {
+                //             this.statusColor = 'status-val-refund';
+                //         } else if (this.form.status == 0) {
+                //             this.statusColor = 'status-val-wait';
+                //         } else {
+                //             this.statusColor = 'status-val-done';
+                //         }
+                //     }
+                // }).catch((err) => {
+
+                // });
+                //拉新列表初始化
+                this.$api.zfbLxList().then(res => {
+                    res.body.filter( item => {
+                        if(item.id == this.id) this.form = item
+                    })
+                    // console.log(this.form)
+                    switch (this.form.status) {
+                        case 0: 
+                            this.statusColor = 'status-val-wait'
+                            break;
+                        case 1: 
+                            this.statusColor = 'status-val-done'
+                        case 2: 
+                            this.statusColor = 'status-val-done'
+                            break;
+                        case 2: 
+                            this.statusColor = 'status-val-error'
+                            break;
+                    
+                        default:
+                            break;
+                    }
+                }).catch((err) => {
+
+                });
+            },
+            //退款
+            refund() {
+                this.$dialog.confirm({
+                    message: '是否确认退款'
+                }).then(() => {
+                    this.$api.hbOrderRefund(this.id).then((res) => {
+                        if (res.errorCode == 0) {
+                            this.$notify('退款成功');
+                            this.$router.back();
+                        }
+                    }).catch((err) => {
+
+                    });
+                }).catch(() => {
+                    // on cancel
+                });
+                // this
+
+            },
+            //展示二维码
+            showCode() {
+                if (this.form.payCode) {
+                    // window.sessionStorage.setItem("hbpayQrCodeUrl", this.payCode);
+                    let queryObj = {
+                        payQrCodeUrl:this.form.payCode,
+                        orderId: this.form.orderId,
+                        totalAmount: this.form.insAmt,
+                        term: this.form.insTerm,
+                        typeId:this.typeId || ''
+                    }
+                    this.$router.push({
+                        path: "/hb-getHBQRCode",
+                        query: queryObj
+                    })
+                }
+            }
+        },
+    }
+</script>
+<style lang="less" scoped>
+    .status-val-done {
+        color:#19BE6B;
+    }
+    .status-val-refund {
+        color:#FF9900;
+    }
+    .status-val-wait {
+        color:#333333;
+    }
+    .status-val-error {
+        color:#ED4014;
+    }
+    .hb-detail-box {
+        padding-top: 44px;
+        background-color: @c-bg-f5;
+
+        .content {
+            padding: 10px 8px;
+        }
+
+        .cell-group {
+            margin-bottom: 10px;
+        }
+    }
+
+    .footer {
+        padding-bottom: 30px;
+        margin: 0 8px;
+        background-color: @c-bg-f5;
+
+        .btn {
+            width: 50%;
+            color: @c-text-fff;
+            background-color: @c-bg-default;
+        }
+    }
+</style>
diff --git a/static/README.md b/static/README.md
new file mode 100644
index 0000000..e938604
--- /dev/null
+++ b/static/README.md
@@ -0,0 +1,8 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-13 18:10:18
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-13 18:10:18
+ * @Description: 
+ -->
+# 静态文件目录
\ No newline at end of file
diff --git a/static/agreement1.js b/static/agreement1.js
new file mode 100644
index 0000000..b2e6235
--- /dev/null
+++ b/static/agreement1.js
@@ -0,0 +1,3 @@
+const agreement1='<div><p style="line-height:19pt; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:DengXian; font-size:20pt">智享微金融</span><span style="font-family:DengXian; font-size:20pt">用户服务协议</span></p><p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0"><span style="font-family:DengXian; font-size:13pt">为使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应当阅读并遵守《</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">服务协议》</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">以下简称</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">本协议</span><span style=" font-size:13pt">”)</span><span style="font-family:DengXian; font-size:13pt">。请您务必审慎阅读、充分理解各条款内容</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">特别是免除或者限制责任的条款、管辖与法律适用条款</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以及开通或使用某项服务的单独协议。限制、免责条款可能以黑体加粗或加下划线的形式提示您重点注意。除非您已阅读并接受本协议所有条款</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">否则您无权使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">提供的服务。您使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的服务即视为您已阅读并同意上述协议的约束。如果您未满</span><span style=" font-size:13pt">18</span><span style="font-family:DengXian; font-size:13pt">周岁</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">请在法定监护人的陪同下阅读本协议</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">并特别注意未成年人使用条款。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">一、</span><span style="font-family:DengXian; font-size:13pt">【</span><span style="font-family:DengXian; font-size:13pt">协议的范围】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1.1</span><span style="font-family:DengXian; font-size:13pt">本协议是您与</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">之间关于用户使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">相关服务所订立的协议。</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style=" font-size:13pt">”</span><span style="font-family:DengXian; font-size:13pt">是指</span><span style="font-family:DengXian; font-size:13pt">唯知科技</span><span style="font-family:DengXian; font-size:13pt">公司的产品。</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">用户</span><span style=" font-size:13pt">”</span><span style="font-family:DengXian; font-size:13pt">是指使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">相关服务的使用人</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">在本协议中更多地称为</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">您</span><span style=" font-size:13pt">”</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1.2</span><span style="font-family:DengXian; font-size:13pt">本协议项下的服务是指</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">向用户提供的包括但不限于</span><span style="font-family:DengXian; font-size:13pt">零售金融服务、</span><span style="font-family:DengXian; font-size:13pt">移动服务</span><span style="font-family:DengXian; font-size:13pt">、</span><span style="font-family:DengXian; font-size:13pt">电子商务和广告等产品及服务</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">以下简称</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">本服务</span><span style=" font-size:13pt">”</span><span style=" font-size:13pt">)</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">二、</span><span style="font-family:DengXian; font-size:13pt">【帐号与密码安全</span><span style="font-family:DengXian; font-size:13pt">】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">2.1</span><span style="font-family:DengXian; font-size:13pt">您在使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的服务时需要注册一个帐号。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">2.2</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">特别提醒您应妥善保管您的帐号和密码。当您使用完毕后</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">应安全退出。因您保管不善可能导致遭受盗号或密码失窃</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">责任由您自行承担。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">三、【用户</span><span style="font-family:DengXian; font-size:13pt">信息保护】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.1</span><span style="font-family:DengXian; font-size:13pt">保护用户</span><span style="font-family:DengXian; font-size:13pt">信息是</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的一项基本原则</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">将按照本协议的规定收集、使用、储存和分享您的</span><span style="font-family:DengXian; font-size:13pt">信息</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.2</span><span style="font-family:DengXian; font-size:13pt">您在注册帐号或使用本服务的过程中</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">可能需要填写一些必要的信息。若国家法律法规有特殊规定的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您需要填写真实的身份信息。若您填写的信息不完整</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">无法使用本服务或在使用过程中受到限制。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.3</span><span style="font-family:DengXian; font-size:13pt">一般情况下</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您可随时浏览、修改自己提交的信息</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">但出于安全性和身份识别的考虑</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您可能无法修改注册时提供的初始注册信息及其他验证信息。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.4</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">将运用各种安全</span><span style="font-family:DengXian; font-size:13pt">技术和程序建立完善的管理制度来保护您的</span><span style="font-family:DengXian; font-size:13pt">信息</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以免遭受未经授权的访问、使用或披露</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.</span><span style=" font-size:13pt">5</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">不会将您的</span><span style="font-family:DengXian; font-size:13pt">信息转移或披露给任何非关联的第三方</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">除非</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">相关法律法规或法院、政府机关要求</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">为完成合并、分立、收购或资产转让而转移</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(3)</span><span style="font-family:DengXian; font-size:13pt">为提供您要求的服务所必需。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">3.</span><span style=" font-size:13pt">6</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">非常重视对未成年人</span><span style="font-family:DengXian; font-size:13pt">信息的保护。若您是</span><span style=" font-size:13pt">18</span><span style="font-family:DengXian; font-size:13pt">周岁以下的未</span><span style="font-family:DengXian; font-size:13pt">成年人</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">在使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的服务前</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">应事先取得您家长或法定监护人</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">以下简称</span><span style=" font-size:13pt">"</span><span style="font-family:DengXian; font-size:13pt">监护人</span><span style=" font-size:13pt">")</span><span style="font-family:DengXian; font-size:13pt">的书面同意。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">四、【使用本服务的方式】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">4.1</span><span style="font-family:DengXian; font-size:13pt">除非您与</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">另有约定</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您同意本服务为商业性质的使用。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">4.2</span><span style="font-family:DengXian; font-size:13pt">您应当通过</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">提供或认可的方式使用本服务。您依本协议条款所取得的权利不可转让。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">4.3</span><span style="font-family:DengXian; font-size:13pt">您不得使用未经</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">授权的插件、外挂或第三方工具对本协议项下的服务进行干扰、破坏、修改或施加其他影响。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">五、【按现状提供服务】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的服务是按照现有技术和条件所能达到的现状提供的。</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">会尽最大努力向您提供服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">确保服务的连贯性和安全性</span><span style=" font-size:13pt">;</span><span style="font-family:DengXian; font-size:13pt">但</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">不能随时预见和防范法律、技术以及其他风险</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">包括但不限于不可抗力、病毒、木马、黑客攻击、系统不稳定、第三方服务瑕疵、政府行为等原因可能导致的服务中断、数据丢失以及其他的损失和风险。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">六、【自备设备】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">6.</span><span style=" font-size:13pt">1</span><span style="font-family:DengXian; font-size:13pt">您应当理解</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的服务需自行准备与相关服务有关的终端设备</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">如手机</span><span style=" font-size:13pt">),</span><span style="font-family:DengXian; font-size:13pt">并承担所需的费用</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">如电话费、上网费等费用</span><span style=" font-size:13pt">)</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">6.2</span><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您使用本服务时会耗用您的终端设备和带宽等资源。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">七、【广告】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">7.1</span><span style="font-family:DengXian; font-size:13pt">您同意</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">可以在提供服务的过程中自行或由第三方广告商向您发送广告、推广或宣传信息</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">包括商业与非商业信息</span><span style=" font-size:13pt">),</span><span style="font-family:DengXian; font-size:13pt">其方式和范围可不经向您特别通知而变更</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">7.</span><span style=" font-size:13pt">2</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">可能为您提供选择关闭广告信息的功能</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">但任何时候您都不得以本协议未明确约定或</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">未书面许可的方式屏蔽、过滤广告信息</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">7.3</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">依照法律的规定对广告商履行相关义务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应当自行判断广告信息的真实性并为自己的判断行为负责</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">除法律明确规定外</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您因依该广告信息进行的交易或前述广告商提供的内容而遭受的损失或损害</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">不承担责任</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">7.4</span><span style="font-family:DengXian; font-size:13pt">您同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">对</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">服务中出现的广告信息</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应审慎判断其真实性和可靠性</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">除法律明确规定外</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应对依该广告信息进行的交易负责。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">八、【收费服务】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">8.1</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的部分服务是以收费方式提供的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">如您使用收费服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">请遵守相关的协议</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">8.2</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">可能根据实际需要对收费服务的收费标准、方式进行修改</span><span style="font-family:DengXian; font-size:13pt">和变更</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">也可能会对部分免费服务开始收费。前述修改、变更或开始收费前</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">将在相应服务页面进行通知或公告。如果您不同意上述修改、变更或付费内容</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">则应停止使用该服务</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">九、【第三方提供的产品或服务】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">您在</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">平台上使用第三方提供的产品或服务时</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">除遵守本协议约定外</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">还应遵守第三方的用户协议。</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">和第三方对可能岀现的纠纷在法律规定和约定的范围内各自承担责任。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十、【基于软件提供服务】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">若</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">依托</span><span style=" font-size:13pt">“</span><span style="font-family:DengXian; font-size:13pt">软件</span><span style=" font-size:13pt">”</span><span style="font-family:DengXian; font-size:13pt">向您提供服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您还应遵守以</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">下约定</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">0.1</span><span style="font-family:DengXian; font-size:13pt">您在使用本服务的过程中可能需要下载软件</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">对于这些软件</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">给予您一项个人</span><span style="font-family:DengXian; font-size:13pt">或工商主体</span><span style="font-family:DengXian; font-size:13pt">的、不可转让及非排他性的许可。您仅可为访问或使用本服务的目的而使用这些软件</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">0.2</span><span style="font-family:DengXian; font-size:13pt">为了改善用户体验、保证服务的安全性及产品功能的一致性</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">可能会对软件进行更新。您应该将相关软件更新到最新版本</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">否则</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">并不保证其能正常使用。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">0.3</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">可能为不同的终端设备开发不同的软件版本</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应当根据实际情况选择下载合适的版本进行安装。您可以直接从</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的网站上获取软件</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">也可以从得到</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">授权的第三方获取。如果您从未经</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">授权的第三方获取软件或与软件名称相同的安装程序</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">无法保证该软件能够正常使用</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">并对因此给您造成的损失不予负责。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">0.4</span><span style="font-family:DengXian; font-size:13pt">除非</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">书面许可</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您不得从事下列任一行为</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">删除软件及其副本上关于著作权的信息</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">2)</span><span style="font-family:DengXian; font-size:13pt">对软件进行反向工程、反向汇编、反向编译</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">或者以其他方式尝试发现软件的源代码</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">3</span><span style=" font-size:13pt">)</span><span style="font-family:DengXian; font-size:13pt">对</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">拥有知识产权的内容进行使用、出租、岀借、复制、修改、链接、转载、汇编、发表、出版、建立镜像站点等</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(4)</span><span style="font-family:DengXian; font-size:13pt">对软件或者软件运行过程中释放到任何终端内存中的数据、软件运行过程中客户端与服务器端的交互数据</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以及软件运行所必需的系统数据</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">进行复制、修改、增加、删除、挂接运行或创作任何衍生作品</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">形式包括但不限于使用插件、外挂或非经</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">授权的第三方工具</span><span style=" font-size:13pt">/</span><span style="font-family:DengXian; font-size:13pt">服务接入软件和相关系统</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(5)</span><span style="font-family:DengXian; font-size:13pt">通过修改或伪造软件运行中的指令、数据</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">增加、删减、变动软件的功能或运行效果</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">或者将用于上述用途的软件、方法进行运营或向公众传播</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">无论这些行为是否为商业目的</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(6)</span><span style="font-family:DengXian; font-size:13pt">通过非</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">开发、授权的第三方软件、插件、外挂、系统</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">登录或使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">软件及服务或制作、发布、传播非掌上客如去开发、授权的第三方软件、插件、外挂、系统</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十一、【知识产权声明】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">12.1</span><span style="font-family:DengXian; font-size:13pt">您在使用本服务时须遵守法律法规</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">不得利用本服务从事违法违规行为</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">包括但不限于</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">发布、传送、传播、储存危害国家安全统一、破坏社会稳定、违反公序良俗、侮辱、诽谤、淫秽、暴力以及任何违反国家法律法规的内容</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">发布、传送、传播、储存侵害他人知识产权、商业秘密等合法权利的内容</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(3)</span><span style="font-family:DengXian; font-size:13pt">恶意虚构事实、隐瞒真相以误导、欺骗他人</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(4)</span><span style="font-family:DengXian; font-size:13pt">发布、传送、传播广告信息及垃圾信息</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">5)</span><span style="font-family:DengXian; font-size:13pt">其他法律法规禁止的行为。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">12.2</span><span style="font-family:DengXian; font-size:13pt">如果您违反了本条约定</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">相关国家机关或机构可能会对您提起诉讼、罚款或采取其他制裁措施</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">并要求</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">给予协助。造成损害的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应依法予以赔偿</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">不承担任何责任</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">12.3</span><span style="font-family:DengXian; font-size:13pt">如果</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">发现或收到他人举报您发布的信息违反本条约定</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有权进行独立判断并采取技术手段予以删除、屏蔽或断开链接。同时</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有权视用户的行为性质</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">采取包括但不限于暂停或终止服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">限制、冻结或终止用户账号的使用</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">追究法律责任等措施。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">12.4</span><span style="font-family:DengXian; font-size:13pt">您违反本条约定</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">导致任何第三方损害的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应当独立承担责任</span><span style=" font-size:13pt">;</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">因此遭受损失的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您也应当并赔偿。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十三、【遵守当地法律监管】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">13.1</span><span style="font-family:DengXian; font-size:13pt">您在使用本服务过程中应当遵守当地相关的法律法规</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">并尊重当地的道德和风俗习惯。如果您的行为违反了当地法律法规或道德风俗</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您应当为此独立承担责任</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">13.</span><span style=" font-size:13pt">2</span><span style="font-family:DengXian; font-size:13pt">您应避免因使用本服务而使</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">卷入政治和公共事件</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">否则</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有权暂停或终止对您的服务</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十四、【用户发送、传播的內容与第三方投诉处理】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">14.</span><span style=" font-size:13pt">1</span><span style="font-family:DengXian; font-size:13pt">您通过本服务发送或传播的内容</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">包括但不限于网页、文字、图片、音频、视频、图表等</span><span style=" font-size:13pt">)</span><span style="font-family:DengXian; font-size:13pt">均由您自行承担责任。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">4.2</span><span style="font-family:DengXian; font-size:13pt">您发送或传播的内容应有合法来源</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">相关内容为您所有或您已获得权利人的授权。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">14.3</span><span style="font-family:DengXian; font-size:13pt">您同意</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">可为履行本协议或提供本服务的目的而使用您发送或传播的内容。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">14.4</span><span style="font-family:DengXian; font-size:13pt">如果</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">收到权利人通知</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">主张您发送或传播的内容侵犯其相</span><span style="font-family:DengXian; font-size:13pt">关权利的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您同意</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有权进行独立判断并采取删除、屏蔽或断开链接等措施</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">14.</span><span style=" font-size:13pt">5</span><span style="font-family:DengXian; font-size:13pt">您使用本服务时不得违反国家法律法规、侵害他人合法权益。您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">如您被他人投诉侵权或您投诉他人侵权</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有权将争议中相关方的主体联系方式、投诉相关内容等必要信息提供给其他争议方或相关部门</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以便及时解决投诉纠纷</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">保护他人合法权</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十五、【不可抗力及其他免责事由】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.1</span><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">在使用本服务的过程中</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">可能会遇到不可抗力等风险因素</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">使本服务发生中断。不可抗力是指不能预见、不能克服并不能避免且对一方或双方造成重大影响的客观事件</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">包括但不限于自然灾害如洪水、地震、瘟疫流行和风暴等以及社会事件如战争、动乱、政府行为等。岀现上述情况时</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">将努力在第一时间与相关单位配合</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">及时进行修复</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">但是由此给您造成的损失</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">在法律允许的范围内免责</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.2</span><span style="font-family:DengXian; font-size:13pt">在法律允许的范围内</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">对以下情形导致的服务中断或受阻不承担责任</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">1)</span><span style="font-family:DengXian; font-size:13pt">受到手机病毒、木马或其他恶意程序、黑客攻击的破坏</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">用户或</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的电脑软件、系统、硬件和通信线路出现故障</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(3)</span><span style="font-family:DengXian; font-size:13pt">用户操作不当</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">4)</span><span style="font-family:DengXian; font-size:13pt">用户通过非</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">授权的方式使用本服务</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(5)</span><span style="font-family:DengXian; font-size:13pt">其他</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">无法控制或合理预见的情形</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.3</span><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">在使用本服务的过程中</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">可能会遇到网络信息或其他用户行为带来的风险</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">不对任何信息的真实性、适用性、合法性承担责任</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">也不对因侵权行为给您造成的损害负责。这些风险包括但不限于</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">来自他人匿名或冒名的含有威胁、诽谤、令人反感或非法内容的信息</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">因使用本协议项下的服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">遭受他人误导、欺骗或其他导致或可能导致的任何心理、生理上的伤害以及经济上的损失</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(</span><span style=" font-size:13pt">3)</span><span style="font-family:DengXian; font-size:13pt">其他因网络信息或用户行为引起的风险</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.4</span><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">本服务并非为某些特定目的而设计</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">包括但不限于核设施、军事用途、医疗设施、交通通讯等重要领域。如果因为软件或服务的原因导致上述操作失败而带来的人员伤亡、财产损失和环境破坏等</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">不承担法律责任。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.5</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">依据本协议约定获得处理违法违规内容的权利</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">该权利不构成</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的义务或承诺</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">不能保证及时发现违法行为或进行相应处理。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">15.6</span><span style="font-family:DengXian; font-size:13pt">在任何情况下</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您不应轻信借款、索要密码或其他涉及财产的网络信</span><span style="font-family:DengXian; font-size:13pt">息。涉及财产操作的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">请一定先核实对方身份</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">并请经常留意</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有关防范诈骗犯罪的提示。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十六、【协议的生效与变更】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">16.1</span><span style="font-family:DengXian; font-size:13pt">您使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">的服务即视为您已阅读本协议并接受本协议的约束</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">16.2</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有权在必要时修改本协议条款。您可以在相关服务页面查阅最新版本的协议条款</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">16.3</span><span style="font-family:DengXian; font-size:13pt">本协议条款变更后</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">如果您继续使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">提供的软件或服务</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">即视为您已接受修改后的协议。如果您不接受修改后的协议</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">应当停止使用</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">提供的软件或服务</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十七、【服务的变更、中断、终止</span><span style="font-family:DengXian; font-size:13pt">】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">17.1</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">可能会对服务内容进行变更</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">也可能会中断、中止或终止服务。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">17.</span><span style=" font-size:13pt">2</span><span style="font-family:DengXian; font-size:13pt">您理解并同意</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有权自主决定经营策略。在</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">发生合并、分立、收购、资产转让时</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">可向第三方转让本服务下相关资产</span><span style=" font-size:13pt">;</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">也可在单方通知您后</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">将本协议下部分或全部服务转交由第三方运营或履行。具体受让主体以</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">通知的为准</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">17.</span><span style=" font-size:13pt">3</span><span style="font-family:DengXian; font-size:13pt">如发生下列任何一种情形</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有权不经通知而中断或终止向您提供的服务</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">根据法律规定您应提交真实信息</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">而您提供的个人资料不真实、或与注册时信息不一致又未能提供合理证明</span><span style="font-family:DengXian; font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">您违反相关法律法规或本协议的约定</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(3)</span><span style="font-family:DengXian; font-size:13pt">按照法律规定或主管部门的要求</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(4)</span><span style="font-family:DengXian; font-size:13pt">出于安全的原因或其他必要的情形。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">17.</span><span style=" font-size:13pt">4</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有权按本协议</span><span style=" font-size:13pt">8.2</span><span style="font-family:DengXian; font-size:13pt">条的约定进行收费。若您未按时足额付费</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">有权中断、中止或终止提供服务。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">17.5</span><span style="font-family:DengXian; font-size:13pt">您有责任自行备份存储在本服务中的数据。如果您的服务被终止</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">可以从服务器上永久地删除您的数据</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">但法律法规另有规定的除外。服务终止后</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">没有义务向您返还数据。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十八、【管辖与法律适用】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">18.1</span><span style="font-family:DengXian; font-size:13pt">本协议的成立、生效、履行、解释及纠纷解决</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">适用中华人民共和国大陆地区法律</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">不包括冲突法</span><span style=" font-size:13pt">)</span><span style="font-family:DengXian; font-size:13pt">。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">18.</span><span style=" font-size:13pt">2</span><span style="font-family:DengXian; font-size:13pt">本协议签订地为中华人民共和国四川省成都市。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">18.3</span><span style="font-family:DengXian; font-size:13pt">若您和</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">之间发生任何纠纷或争议</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">首先应友好协商解决</span><span style=" font-size:13pt">;</span><span style="font-family:DengXian; font-size:13pt">协商不成的</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">您同意将纠纷或争议提交本协议签订地有管辖权的人民法院管辖。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">18.</span><span style=" font-size:13pt">4</span><span style="font-family:DengXian; font-size:13pt">本协议所有条款的标题仅为阅读方便</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">本身并无实际涵义</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">不能作为本协议涵义解释的依据。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">18.5</span><span style="font-family:DengXian; font-size:13pt">本协议条款无论因何种原因部分无效或不可执行</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">其余条款仍有效</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">对双方具有约束力。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">十九、【未成年人使用条款</span><span style="font-family:DengXian; font-size:13pt">】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">19.1</span><span style="font-family:DengXian; font-size:13pt">若用户未满</span><span style=" font-size:13pt">18</span><span style="font-family:DengXian; font-size:13pt">周岁</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">则为未成年人</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">应在监护人监护、指导下阅读本协议和使用本服务</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">19.2</span><span style="font-family:DengXian; font-size:13pt">未成年人用户涉世未深</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">容易被网络虚象迷惑</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">且好奇心强</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">遇事缺乏随机应变的处理能力</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">很容易被别有用心的人利用而又缺乏自我保护能力。因此</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">未成年人用户在使用本服务时应注意以下事项</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">提高安全意识</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">加强自我保护</span><span style="font-family:DengXian; font-size:13pt">:</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(1)</span><span style="font-family:DengXian; font-size:13pt">认清网络世界与现实世界的区别</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">避免沉迷于网络</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">影响日常的学习生活</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(2)</span><span style="font-family:DengXian; font-size:13pt">填写个人资料时</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">加强个人保护意识</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以免不良分子对个人生活造成骚扰</span><span style=" font-size:13pt">;</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(3)</span><span style="font-family:DengXian; font-size:13pt">在监护人或老师的指导下</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">学习正确使用网络</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">(4)</span><span style="font-family:DengXian; font-size:13pt">避免陌生网友随意会面或参与联谊活动</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">以免不法分子有机可乘</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">危及自身安全。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style=" font-size:13pt">1</span><span style=" font-size:13pt">9.3</span><span style="font-family:DengXian; font-size:13pt">监护人、学校均应对未成年人使用本服务时多做引导。特别是家长应关心子女的成长</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">注意与子女的沟通</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">指导子女上网应该注意的安全问题</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">防患于未然。</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">二十、【其他】</span></p><p style="line-height:19pt; margin:0pt; orphans:0; widows:0"><span style="font-family:DengXian; font-size:13pt">如果您对本协议或本服务有意见或建议</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">可与</span><span style="font-family:DengXian; font-size:13pt">智享微金融</span><span style="font-family:DengXian; font-size:13pt">客户服务部门联系</span><span style=" font-size:13pt">,</span><span style="font-family:DengXian; font-size:13pt">我们会给予您必要的帮助。</span><span style=" font-size:13pt">(</span><span style="font-family:DengXian; font-size:13pt">正文完</span><span style=" font-size:13pt">)</span></p></div>'
+
+// export default agreement;
\ No newline at end of file
diff --git a/static/agreement2.js b/static/agreement2.js
new file mode 100644
index 0000000..2506e90
--- /dev/null
+++ b/static/agreement2.js
@@ -0,0 +1 @@
+const agreement2='<div><p style="font-size:16pt; line-height:150%; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:仿宋; font-size:16pt; font-weight:bold">智分期业务合作协议(普通商户版)</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:125%; margin:0pt 0pt 0pt 271.45pt; orphans:0; padding-left:61.3pt; text-align:right; text-indent:-61.3pt; widows:0"><span style="font-family:仿宋; font-size:12pt"> </span><span style="font-family:仿宋; font-size:12pt">协议</span><span style="font-family:仿宋; font-size:12pt">编号:</span><span style="font-family:仿宋; font-size:12pt">ZFQ-SY-QC</span><span style="font-family:仿宋; font-size:12pt">-</span><span style="font-family:仿宋; font-size:12pt">2018-</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">0001</span><span style="font-family:仿宋; font-size:12pt">                                         </span><span style="font-family:仿宋; font-size:12pt">                   </span><span style="font-family:仿宋; font-size:12pt">                      </span></p><p style="font-size:12pt; line-height:125%; margin:0pt 0pt 0pt 271.45pt; orphans:0; padding-left:61.3pt; text-align:right; text-indent:-61.3pt; widows:0"><span style="font-family:仿宋; font-size:12pt">协议</span><span style="font-family:仿宋; font-size:12pt">签订地:</span><span style="font-family:仿宋; font-size:12pt">成都市高新区</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 63pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 0.5pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">甲    方:</span><span style="font-family:仿宋; font-size:12pt">深圳前海彩蜂商业保理有限公司</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">统一社会信用代码为:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">91440300MA5F1HWU0L</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">业务联系人:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">余梦颖</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">联系</span><span style="font-family:仿宋; font-size:12pt">方式:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">18828020724</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 0.5pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">乙    方:</span><span style="font-family:仿宋; font-size:12pt">本次注册商户</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">统一社会信用代码为:</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时填写的营业执照号</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">业务联系人:</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时填写的负责人姓名</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">联系</span><span style="font-family:仿宋; font-size:12pt">方式:</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时填写的负责人手机号</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 63pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">丙    方</span><span style="font-family:仿宋; font-size:12pt">:</span><span style="font-family:仿宋; font-size:12pt">成都唯知信息科技有限公司</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">统一社会信用代码为:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">91510100MA6C9H4L1L</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">业务联系人:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">易轩弘</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">联系</span><span style="font-family:仿宋; font-size:12pt">方式:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">18108214026</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">鉴于</span><span style="font-family:仿宋; font-size:12pt">:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">甲方是一家依法设立并有效存续的商业保理公司。主要受让乙方拥有或控制的基于消费场景下产生的应收账款,为乙方用户提供分期付款服务(即“智分期”服务),进而提升乙方平台交易量。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 0pt 0pt 0.85pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">乙方是一家依法成立并有效存续的独立公司法人企业,主营</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">汽车</span><span style="font-family:仿宋; font-size:12pt">类</span><span style="font-family:仿宋; font-size:12pt">相关产品</span><span style="font-family:仿宋; font-size:12pt">(</span><span style="font-family:仿宋; font-size:12pt">商品或服务</span><span style="font-family:仿宋; font-size:12pt">)的销售</span><span style="font-family:仿宋; font-size:12pt">并</span><span style="font-family:仿宋; font-size:12pt">提供相关服务</span><span style="font-family:仿宋; font-size:12pt">。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">丙方是一家专业的</span><span style="font-family:仿宋; font-size:12pt">系统开发服务商</span><span style="font-family:仿宋; font-size:12pt">,受甲方委托提供消费分期技术服务,致力于为商户及消费者提供基于互联网的更加便捷、安全、高效的一体化解决方案(分期服务),专注于消费品交易为主的在线分期购物商城及消费金融服务平台,是国内领先的消费品分期服务公司。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">为合理利用甲乙丙三方的有利资源,实现互利共赢,三方将合作运营并推广智分期业务,共同促进在消费业务领域的深度合作,在自愿、平等、诚信的基础上,交易各方经友好协商就智分期服务合作相关事宜达成共识,并就已经</span><span style="font-family:仿宋; font-size:12pt">确定</span><span style="font-family:仿宋; font-size:12pt">智分期交易规则、各方权利义务等内容达成如下协议,以资共同遵守。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第一条  定义</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">本协议中,除非文义另有所指,下列名词具有如下特定含义:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、用户:指基于甲方提供的智分期服务基础上在乙方处进行消费的个人。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、商户:指为用户提供商品或服务(本协议统称“产品”)的供应商,即本协议中的乙方。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、交易规则:指标示在乙方店面或网站之上的,与用户使用乙方所提供的平台服务有关的任何规范性文件,包括但不限于购物流程、售后政策、退款说明等,同时包括智分期服务交易规则,以下统称</span><span style="font-family:仿宋; font-size:12pt">“</span><span style="font-family:仿宋; font-size:12pt">交易规则</span><span style="font-family:仿宋; font-size:12pt">”</span><span style="font-family:仿宋; font-size:12pt">。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、智分期服务:指甲方作为商业保理公司,受让乙方平台拥有或者控制的基于消费场景产生的应收账款,并通过乙方向用户提供的一种先消费后付款的购物体验的信用</span><span style="font-family:仿宋; font-size:12pt">分期</span><span style="font-family:仿宋; font-size:12pt">付款</span><span style="font-family:仿宋; font-size:12pt">服务</span><span style="font-family:仿宋; font-size:12pt">(以下</span><span style="font-family:仿宋; font-size:12pt">简称“</span><span style="font-family:仿宋; font-size:12pt">智分期</span><span style="font-family:仿宋; font-size:12pt">”</span><span style="font-family:仿宋; font-size:12pt">服务)</span><span style="font-family:仿宋; font-size:12pt">。</span><span style="font-family:仿宋; font-size:12pt">甲方可根据法律、法规和规范性文件的规定和营销推广的实际情况对相关技术服务的名称进行调整。甲方委托丙方为“智分期”服务提供技术支持,“智分期”服务包括但不限于以下特点:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(1)用户可延期支付或者分期支付;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(2)以用户的真实交易为背景;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(3)依赖丙方优质的信用分期付款技术服务;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(4)浮动费率。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">、信用分期服务:指商户基于智分期服务为符合条件的用户提供 “先购物、后付款”的信用赊购方式付款的平台服务。“赊购方式付款”指用户在乙方消费时,可依据乙方交易规则及相应申请流程,享受由甲方在商业保理业务基础上提供的相应的延后付款或分期付款的付款方式。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6、</span><span style="font-family:仿宋; font-size:12pt">商业保理:是指销售商(债权人)将其与买方(债务人)订立的货物销售(服务)协议所产生的应收账款转让给商业保理公司,由商业保理公司为其提供贸易融资、应收账款管理与催收等综合性商贸服务。在本协议项下,由甲方受让乙方基于消费场景产生的应收账款,提供商业保理服务。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">7、资金服务机构:指为智分期中受让合作商户信用分期应收账款的资金机构和个人,包括且不限于银行、商业保理、融资租赁、消费金融公司、小贷公司、信托、私募基金等机构。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">8、分期服务费:指用户使用甲方提供的智分期服务需承担的服务费用,具体标准以甲方及乙方页面显示为准。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">9</span><span style="font-family:仿宋; font-size:12pt">、</span><span style="font-family:仿宋; font-size:12pt">保理</span><span style="font-family:仿宋; font-size:12pt">服务费:</span><span style="font-family:仿宋; font-size:12pt">指用户</span><span style="font-family:仿宋; font-size:12pt">使用“</span><span style="font-family:仿宋; font-size:12pt">智</span><span style="font-family:仿宋; font-size:12pt">分期</span><span style="font-family:仿宋; font-size:12pt">”</span><span style="font-family:仿宋; font-size:12pt">服务</span><span style="font-family:仿宋; font-size:12pt">时,</span><span style="font-family:仿宋; font-size:12pt">乙方</span><span style="font-family:仿宋; font-size:12pt">按照交易账款的</span><span style="font-family:仿宋; font-size:12pt">约</span><span style="font-family:仿宋; font-size:12pt">定比例</span><span style="font-family:仿宋; font-size:12pt">向甲</span><span style="font-family:仿宋; font-size:12pt">方支付的服务费用</span><span style="font-family:仿宋; font-size:12pt">即甲方在受让乙方拥有或控制的应收账款时,乙方应向甲方支付的费用,本协议项下保理服务费费率详见附表一(甲方有权根据业务发展情况调整该项费率,经相关各方书面确认后生效)。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">10</span><span style="font-family:仿宋; font-size:12pt">、交易</span><span style="font-family:仿宋; font-size:12pt">账款</span><span style="font-family:仿宋; font-size:12pt">:指用户在乙方使用“智分期</span><span style="font-family:仿宋; font-size:12pt">”</span><span style="font-family:仿宋; font-size:12pt">服务的</span><span style="font-family:仿宋; font-size:12pt">消费</span><span style="font-family:仿宋; font-size:12pt">订单(根据</span><span style="font-family:仿宋; font-size:12pt">甲方后台确认</span><span style="font-family:仿宋; font-size:12pt">的订单确定</span><span style="font-family:仿宋; font-size:12pt">)</span><span style="font-family:仿宋; font-size:12pt">对应价款的金额(即乙方与用户基于商品销售及服务并符合《合同法》相关政策法规的基础交易约定,由乙方向用户提供服务或货物产生的应收账款金额),其中不包括用户已经另行向乙方支付的款项。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">11</span><span style="font-family:仿宋; font-size:12pt">、</span><span style="font-family:仿宋; font-size:12pt">应收账款</span><span style="font-family:仿宋; font-size:12pt">受让款</span><span style="font-family:仿宋; font-size:12pt">:</span><span style="font-family:仿宋; font-size:12pt">指甲方在受让乙方拥有或控制的应收账款后,在</span><span style="font-family:仿宋; font-size:12pt">交易账款中</span><span style="font-family:仿宋; font-size:12pt">扣除保理</span><span style="font-family:仿宋; font-size:12pt">服务费</span><span style="font-family:仿宋; font-size:12pt">后应向乙方支付</span><span style="font-family:仿宋; font-size:12pt">的账款余额</span><span style="font-family:仿宋; font-size:12pt">。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">12</span><span style="font-family:仿宋; font-size:12pt">、清算服务机构:指甲乙丙三方基于智分期相关协议约定基础上,甲方或丙方委托其负责交易账款及相关业务中交易结算资金清分服务的机构。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">13</span><span style="font-family:仿宋; font-size:12pt">、用户个人信息:指用户依据智分期服务相关各方要求所提供的个人身份信息及历史消费情况,包括但不限于姓名、证件号、联系地址、手机号码等。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">14</span><span style="font-family:仿宋; font-size:12pt">、关联公司:本协议所称“关联公司”是指由一方直接控制或间接控制;或直接或间接控制一方;或与一方共同控制同一家公司或能对其施加重大影响;或与一方受同一家公司直接或间接控制的公司。包括但不限于一方的母公司、子公司;与一方受同一母公司控制的子公司;一方的合营企业、联营企业等。这里的“公司”指任何一人公司、有限责任公司或股份有限公司;“控制”是指直接或间接地拥有影响所提及公司管理的能力,无论是通过所有权、有投票权的股份、协议或其他被人民法院认定的方式。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">本协议未作定义或约定的词语,按相关法律、法规及行业惯例解释。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第二条  分期业务合作约定与业务流程</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">、甲方为乙方用户提供“智分期”服务。乙方向用户提供所需要的产品或服务后,甲方受让基于前述消费场景产生的应收账款。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、丙方接受甲乙二方的委托,为“智分期”服务提供技术服务。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3</span><span style="font-family:仿宋; font-size:12pt">、乙方放置“智分期”业务的链接、端口或分期二维码,引导用户使用“智分期”服务完成订单支付,并协助用户在申请“智分期”服务过程中完成授权及其他资料的提供。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4</span><span style="font-family:仿宋; font-size:12pt">、甲方对用户进行实名认证,用户资质审核通过后,同意用户使用智分期信用分期付款,乙方认可用户通过“智分期”业务支付的订单,乙方应根据订单向用户提供相应商品交付或服务。订单交易完成确认后,甲方受让该等应收账款并向乙方支付应收账款转让对价款项。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5、</span><span style="font-family:仿宋; font-size:12pt">乙方基于“</span><span style="font-family:仿宋; font-size:12pt">智</span><span style="font-family:仿宋; font-size:12pt">分期”服务形成的对用户的分期应收账款债权及其附属权益,包括但不限于对该等分期应收账款等款项以及请求、起诉、收回、接受与该等分期应收账款相关的全部应偿付款项的权利、与该等分期应收账款相关的承诺的利益、强制执行该等分期应收账款的全部权利和申请法律救济的权利。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6、乙方在此不可撤销地确认, 将以其自身名义向用户告知应收账款转让事宜,乙方应在签署</span><span style="font-family:仿宋; font-size:12pt">本</span><span style="font-family:仿宋; font-size:12pt">协议的同时一并签署《分期应收账款转让通知书》交甲方保存,在债务人(即用户)违约或出现本协议约定的风险事件情形下,乙方授权甲方向债务人发送其已签署的《分期应收账款转让通知书》,以行使该资产转让后在甲方和用户之间的相关权利。同时甲方如需在中国人民银行的债权转让相关登记或公示系统进行转让登记的,乙方应积极配合协助,根据甲方要求及时提供必要的转让登记资料,不得以任何理由拒绝。</span><br /><span style="font-family:仿宋; font-size:12pt">    7</span><span style="font-family:仿宋; font-size:12pt">、甲乙丙</span><span style="font-family:仿宋; font-size:12pt">三</span><span style="font-family:仿宋; font-size:12pt">方共同约定,自甲方支付应收账款受让款之日起,该等应收账款即转让给甲方,该应收账款包括但不限于截止转让日债务人尚未支付的全部款项(无论是否已满足支付条件)及其自转让日起产生的全部逾期利息、违约金、赔偿金、补偿金及任何其他应付款项等。同时,乙方基于前述债权享有的任何从权利包括但不限于抵押权、质押权、保证金等担保权利以及为实现债权而享有的任何实体性权利及程序性权利等也于转让日一并转让给甲方。</span><br /><span style="font-family:仿宋; font-size:12pt">    </span><span style="font-family:仿宋; font-size:12pt">8、自甲方支付应收账款受让款之日起,该应收账款回收款由用户直接支付至甲方指定的账户,若用户未按约定进行还款,甲方有权对用户进行催收,并对该应收账款债权资产处置。</span><br /><span style="font-family:仿宋; font-size:12pt">    9</span><span style="font-family:仿宋; font-size:12pt">、根据本协议执行情况及乙方所属行业,甲、乙双方后续可根据业务开展情况通过签署书面补充协议的形式调整具体的业务规则及业务流程等产品信息。在任何</span><span style="font-family:仿宋; font-size:12pt">情形下</span><span style="font-family:仿宋; font-size:12pt">,如本协议项下智分期业务终止,协议各方</span><span style="font-family:仿宋; font-size:12pt">仍应按照</span><span style="font-family:仿宋; font-size:12pt">本</span><span style="font-family:仿宋; font-size:12pt">协议约定</span><span style="font-family:仿宋; font-size:12pt">,承担其在业务开展期间所产生的上述风险及法律责任。</span><br /><span style="font-family:仿宋; font-size:12pt">    </span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第三条  商品服务承诺</span><br /><span style="font-family:仿宋; font-size:12pt; font-weight:bold">    </span><span style="font-family:仿宋; font-size:12pt">1、乙方应保证所销售的商品或服务与其对外承诺保持一致且符合国家、地区及行业标准;乙方应按照法律、法规和规范性文件的规定对其出售给用户的商品或服务承担产品质量责任,并按照法律规定向用户履行“三包”义务。</span><br /><span style="font-family:仿宋; font-size:12pt">    </span><span style="font-family:仿宋; font-size:12pt">2、</span><a name="OLE_LINK2"><span style="font-family:仿宋; font-size:12pt">乙方应保证乙方具备所销售商品和服务的经营资质,并确认其拥有开具对应发票的资格</span></a><span style="font-family:仿宋; font-size:12pt">。</span><br /><span style="font-family:仿宋; font-size:12pt">    </span><span style="font-family:仿宋; font-size:12pt">3、甲方、丙方无须因乙方产品及服务问题承担任何责任。如因应归责于乙方原因(如产品质量有瑕疵、未实现服务承诺等)而产生的纠纷或争议,从而导致用户逾期付款或拒绝履行付款义务的,甲方有权就其所遭受的一切损失及不利后果向乙方进行追偿。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 0pt 0pt 24pt; orphans:0; padding-left:12pt; text-align:justify; text-indent:-12pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第四条  甲方权利与义务</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">、乙方基于向用户提供产品或服务形成对用户(或者基础债务人)的分期应收账款债权及其附属权益,甲方按照本协议从乙方处受让全部分期应收账款债权及其附属权益, 包括但不限于对该等分期应收账款等款项以及请求、起诉、收回、接受与该等分期应收账款相关的全部应偿付款项的权利、与该等分期应收账款相关的承诺的利益、强制执行该等分期应收账款的全部权利和申请法律救济的权利。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、自甲方支付乙方分期应收账款受让款之日起,对应的智分期交易应收账款即转让给甲方,该应收账款包括但不限于截止甲方付款日用户尚未支付的全部款项(无论是否已满足支付条件)及其自甲方付款日起产生的全部逾期利息、违约金、赔偿金、补偿金及任何其他应付款项等。同时,乙方基于前述债权享有的任何权利包括但不限于抵押权、质押权、保证金等担保权利以及为实现债权而享有的任何实体性权利及程序性权利等也于转让日一并转让给甲方。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、甲方应按照本协议第7.1款将相应分期应收账款受让款按时支付至乙方指定账户。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4</span><span style="font-family:仿宋; font-size:12pt">、本协议项下的分期应收账款转让后,相关分期应收账款回收款由用户支付至甲方指定账户,若甲方在用户还款期未能按期足额收到应收账款回收款时,由甲方根据风险控制措施处理,与乙方无关。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">、当发生下列情形之一时,甲方在书面通知后即可暂停、终止、中止向乙方提供服务而无需承担任何违约责任:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1)乙方提供的资料不真实、且未能提供合理说明及证明;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2)乙方违反法律、法规、规章及政府规范性文件或本协议约定;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3)中国人民银行、公安机关、政府机关或司法机关等国家机关向甲方发出要求的。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6</span><span style="font-family:仿宋; font-size:12pt">、如乙方发生退货次数超过成功交易次数的</span><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">%,甲方有权向乙方提出警示或终止合作。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 0pt 0pt 24pt; orphans:0; padding-left:12pt; text-align:justify; text-indent:-12pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第五条  乙方权利与义务</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">、乙方应向甲方提供的基本信息、营业执照复印件、税务登记证复印件和法定代表人或负责人身份证复印件等均真实、合法、有效。乙方应在安全的场所提供符合国家法律法规或相关质量标准或管理标准规定的商品和服务,乙方的经营应符合国家法律法规对其经营的要求。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、乙方承诺其拥有合法有效的经营资质在其乙方经营场所向用户销售相关产品或服务。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3</span><span style="font-family:仿宋; font-size:12pt">、由于乙方原因造成乙方所提供的服务引起的一切客户投诉、质疑、纠纷或引起的法律上的责任,由乙方负责;如因前述情况导致甲方被裁定承担法律责任的,乙方应依法赔偿甲方损失。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4</span><span style="font-family:仿宋; font-size:12pt">、乙方在使用“智分期”业务过程中,有义务遵守包括国家法律、金融政策、中国银联规章制度在内的所有政策法规。乙方违法违规所造成的全部法律责任由乙方承担,造成甲方损失或承担责任的,甲方可随时向乙方追偿,并有权立即解除协议。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">、乙方应及时有效地处理用户、客户或合作伙伴的各种投诉以及由乙方提供的产品和服务引发的质量、价格、售后服务等纠纷。由于乙方原因造成其客户投诉或引起其他法律纠纷和责任的,均与甲方无关,由此造成甲方损失的,应由乙方承担赔偿责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6</span><span style="font-family:仿宋; font-size:12pt">、当用户至乙方使用“智分期”服务过程中,若用户采取银行信用卡作为风险信用担保的,乙方务必保证用户所用信用卡持卡人信息真实有效,并和分期交易确认单上所填信息一致,否则由此造成的损失由乙方自行承担。同时乙方有义务确保分期交易的真实性及有效性,乙方有义务向甲方提供真实有效的用户订单信息和配送物流信息,乙方如发现用户有欺诈、非法套现、提供虚假资料、恶意刷单等情况,应及时采取包括且不限于通知甲方、协助甲方进行调查、处理,暂停对该用户提供服务等措施。如给甲方造成任何损失的,乙方还应该负责赔偿。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">7</span><span style="font-family:仿宋; font-size:12pt">、乙方应该在分期交易后及时通知用户应收账款转让事宜,并协助甲方对用户进行还款提醒,若用户未能在还款日还款,乙方应协助甲方开展催收工作及惩罚。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">8</span><span style="font-family:仿宋; font-size:12pt">、乙方保证其有权获得通过乙方使用智分期的用户的充分授权,可以合理使用并授权丙方使用用户的相关信息,包括但不限于用户在乙方平台的注册信息、交易关系、浏览行为记录、相关消费记录和支付结算结果等。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">9</span><span style="font-family:仿宋; font-size:12pt">、乙方有权设定智分期的使用范围,但该设定范围应取得甲方的同意且不得歧视智分期的用户。但依据商品的属性(如话费充值卡、游戏点卡、游戏币等虚拟商品和黄金、珠宝、钻石等投资性贵金属等)不宜采用“智分期”服务的,乙方不得支持用户使用。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">10</span><span style="font-family:仿宋; font-size:12pt">、乙方保证具备开具所销售商品发票的资格且应按乙方与用户约定的价格向用户开具相应法定足额发票。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">11</span><span style="font-family:仿宋; font-size:12pt">、如甲方通过技术手段判定或有证据证明乙方联合用户进行套利套现交易,甲方有权要求乙方对甲方造成的损失进行全额赔偿。如套利套现情况严重的,甲方有权立即停止与乙方的合作及结算,并保留追究乙方违约责任的权利。如出现乙方用户进行套利套现交易,乙方承担同样的连带赔偿责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">六</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">条  丙方权利与义务</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">、丙方有义务向甲方提供智分期业务运营所需的技术支持,维护智分期正常运行,并努力提升和改进技术能力,但不对因通信故障等非甲方原因引起的用户与甲方的交易中断、交易错误等承担责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、丙方受甲方的委托,有权要求乙方提供使用智分期服务付款的用户在其交易平台上的相关消费记录和支付结算结果,丙方有权依据本协议从甲方及</span><span style="font-family:仿宋; font-size:12pt">/或乙方处获得并合理使用本协议</span><span style="font-family:仿宋; font-size:12pt">约定的用户相关信息,乙方应负责取得对于上述事项的合法授权。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3</span><span style="font-family:仿宋; font-size:12pt">、丙方有义务按照本协议约定就</span><span style="font-family:仿宋; font-size:12pt">本协议约定的服务流程</span><span style="font-family:仿宋; font-size:12pt">提供技术服务支持</span><span style="font-family:仿宋; font-size:12pt">并保证系统安全稳定</span><span style="font-family:仿宋; font-size:12pt">。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第七条  费用结算及支付</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">甲乙丙三方同意并确认,本协议项下涉及的付款、还款、退款等操作处理均以以下方式处理:</span><br /><span style="font-family:仿宋; font-size:12pt">    1</span><span style="font-family:仿宋; font-size:12pt">、账款结算约定,用户通过</span><span style="font-family:仿宋; font-size:12pt">“</span><span style="font-family:仿宋; font-size:12pt">智分期</span><span style="font-family:仿宋; font-size:12pt">”</span><span style="font-family:仿宋; font-size:12pt">服务</span><span style="font-family:仿宋; font-size:12pt">支付成功</span><span style="font-family:仿宋; font-size:12pt">时,甲方</span><span style="font-family:仿宋; font-size:12pt">于交易成功后</span><span style="font-family:仿宋; font-size:12pt">T+</span><span style="font-family:仿宋; font-size:12pt">0</span><span style="font-family:仿宋; font-size:12pt">个工作日内由清算服务机构在扣除依照附表一约定的费率扣除保理服务费后,将应收账款受让款结算至乙方指定账户。</span><br /><span style="font-family:仿宋; font-size:12pt">    2</span><span style="font-family:仿宋; font-size:12pt">、在甲方开展营销活动时,涉及的促销费率双方另行以补充协议形式约定。</span><br /><span style="font-family:仿宋; font-size:12pt">    3</span><span style="font-family:仿宋; font-size:12pt">、技术服务费约定,甲方基于丙方提供的技术服务一次性向丙方支付技术服务费人民币</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">  零  </span><span style="font-family:仿宋; font-size:12pt">元。</span><br /><span style="font-family:仿宋; font-size:12pt">    </span><span style="font-family:仿宋; font-size:12pt">4</span><span style="font-family:仿宋; font-size:12pt">、本协议项下,</span><span style="font-family:仿宋; font-size:12pt">双</span><span style="font-family:仿宋; font-size:12pt">方指定收款账户信息</span><span style="font-family:仿宋; font-size:12pt">:</span></p><table cellspacing="0" cellpadding="0" style="border-collapse:collapse; margin-left:26.55pt; width:498.45pt"><tr style="height:16.95pt"><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">账户信息</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:230.2pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:仿宋; font-size:12pt">甲方</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:top; width:180.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:仿宋; font-size:12pt">乙方</span></p></td></tr><tr style="height:13.6pt"><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">账户名称</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:230.2pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:top; width:180.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户名称或法人姓名</span></p></td></tr><tr style="height:27.4pt"><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">账    号</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:230.2pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:top; width:180.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; widows:0"><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时填写的银行卡号</span></p></td></tr><tr style="height:15.9pt"><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:54.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">开 户 行</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:230.2pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p></td><td style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:top; width:180.55pt"><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时选择的银行</span></p></td></tr></table><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">任何一方如需改变账户信息,应提前</span><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">个工作日书面通知另一方,否则协议其他方仍然有权视原账户为有效账户,因变更方未及时通知账户变更信息导致协议其他方将支付款项汇入变更方原账户的,视为变更方已经足额收到协议其他方应付的款项,因此产生的一切费用由变更方承担。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">、在甲乙丙三方协商一致的情况下,可在协议期内根据合作的业务量、交易成功率等因素,对相关费用标准进行调整。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6</span><span style="font-family:仿宋; font-size:12pt">、除甲方依照本协议约定收取的保理服务费及分期服务费外,用户、乙方及/或资金服务机构之间的任何资金款项往来涉及的相关责任均由该等主体之间通过资金提供协议或其他协议自行约定承担方式,该等主体之间的资金款项往来是否按时足额支付给相关方、是否发生逾期或资金提供协议或其他协议项下的违约等与甲方无关。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">7、甲乙双方在前期非系统(单指结算系统)状态下,按照以下流程进行应收账款受让款结算。乙方按照附件四</span><span style="font-family:仿宋; font-size:12pt">—</span><span style="font-family:仿宋; font-size:12pt">商户交易确认单填写订单信息,填写完成,经过核对,待确认无误后,连同用户办理“智分期”业务所填写贷记卡原件,用户确认办理“智分期”业务的确认短信三者一起拍照留存,将所拍照片发送到甲方指定邮箱。甲方按照收到照片所呈现的信息进行核对付款。信息核对无误按照7.1执行。如存在信息差异的,由甲乙双方协商处理,甲乙双方协商后无法达成一致意见的,以甲方所持有信息</span><span style="font-family:仿宋; font-size:12pt">为准。</span><span style="font-family:仿宋; font-size:12pt">乙方应保证所提供资料信息的正确性。甲乙双方在系统状态下,按照系统定义结算流程结算。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第八条  退货退款的处理</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、如用户提出退货申请且乙方已受理的,同时甲方针对该笔订单对应应收账款已向乙方完成受让支付的,乙方应在退货申请受理后的第二个工作日将甲方支付的应收</span><span style="font-family:仿宋; font-size:12pt">账款</span><span style="font-family:仿宋; font-size:12pt">及应收账款的退还至甲方指定收款账户。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、当乙方为用户办理退货时,应按照以下规定和退货流程办理:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(1)用户不得直接向甲方申请退款,只得向乙方发出申请。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(2)乙方同意用户退货退款申请后,需通过“智分期”后台提交退款申请,同时将已清算应收账款退回至甲方指定账户。上述应收账款确认退回后,甲方将用户已发生分期金额原路径返还并对剩余期数平账。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(3)自交易日起30日内用户可向乙方申请退款,该笔交易所产生的保理服务费由甲方部分承担,超过上述期限甲方不再受理退款申请。其中0.2%的支付通道费用由乙方承担。甲方承担其余保理服务费用。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(4)乙方</span><span style="font-family:仿宋; font-size:12pt">若</span><span style="font-family:仿宋; font-size:12pt">以现金方式退款给用户</span><span style="font-family:仿宋; font-size:12pt">,</span><span style="font-family:仿宋; font-size:12pt">因此产生的一切法律及经济责任由乙方承担。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第九条  违约事件与违约责任</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、甲乙丙三方应当严格遵守本合作协议之规定,保障合作顺利进行。协议的任何一方违反其于本协议项下的陈述、承诺、保证或义务,则视为违约。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、出现下列情况之一的,视为已发生违约事件:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(</span><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">)</span><span style="font-family:仿宋; font-size:12pt">任何一方提供的资料不真实或隐瞒重大事项、且未能提供合理说明及证明;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(2)</span><span style="font-family:仿宋; font-size:12pt">任何一方违反法律、法规、规章及政府规范性文件或本协议约定</span><span style="font-family:仿宋; font-size:12pt">或侵害第三人包括知识产权在内的一切权利的</span><span style="font-family:仿宋; font-size:12pt">;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(3)乙方</span><span style="font-family:仿宋; font-size:12pt">或其员工,故意构造虚假订单或虚假资料</span><span style="font-family:仿宋; font-size:12pt">或冒充</span><span style="font-family:仿宋; font-size:12pt">他人或联合他人不以真实消费为目的的申请</span><span style="font-family:仿宋; font-size:12pt">“智分期”服务;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(4)用户提交分期申请后,乙方无法向用户提供相应产品或服务;或因</span><span style="font-family:仿宋; font-size:12pt">乙方商品、发布的信息或提供的售后服务问题引发</span><span style="font-family:仿宋; font-size:12pt">用户大量投诉并影响三方合作的;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(5)乙方故意销售假冒伪劣、有毒有害商品或构造虚假订单或虚假资料或冒充他人或联合他人不以真实消费为目的申请“智分期”服务或利用甲方提供的服务进行不正当交易的。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、违约方发生违约事项时,守约方有权视具体情况分别或同时采取以下措施:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(1)要求违约方在一定时限内停止违约行为,消除相关影响。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(2)要求违约方就违约事项的背景、原因、过程进行详细说明,并对后续按约定履行义务进行承诺和保证。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(3)要求违约方就违约行为所导致的守约方实际经济损失、产生的额外费用进行赔偿。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(4)要求违约方妥善解决其违约行为而给守约方带来的诉讼、纠纷、索赔、处罚或其他不利影响。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(5)守约方认为有必要的其他合理措施。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">任何一方发生前述违约事件或因中国人民银行、公安机关、政府机关或司法机关等国家机关向守约方发出要求的,守约方有权要求违约方限期整改其违约行为,给守约方造成损失的,有权要求违约方承担赔偿责任,同时守约方有权采取暂停、中止或终止合作或其他违约救济措施而无需承担任何违约责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、除非发生不可抗力之情形,否则违约方须在违约事项发生后承担违约责任。违约方经催告后拒不纠正违约行为或拒绝承担违约责任的,守约方有权中止或终止协议。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5</span><span style="font-family:仿宋; font-size:12pt">、任何一方未行使其权利或未就违约方的违约行为采取任何行动,不应被视为对权利的放弃或对追究违约责任或义务的放弃。任何一方放弃针对违约方的任何权利或放弃追究违约方的任何责任,不应被视为放弃对违约方的任何其他权利或任何其他任何责任的追究,所有放弃均应以书面形式做出。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第十</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">条 </span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">知识产权及保密条款</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、因本协议约定事项进行的合作如涉及甲乙丙三方知识产权研发、归属的,原则上相关知识产权归属于研发主体。涉及合作开发的,由</span><span style="font-family:仿宋; font-size:12pt">双方</span><span style="font-family:仿宋; font-size:12pt">另行签署协议约定,并以该协议的约定为准。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、甲乙丙三方确认,“智分期”所</span><span style="font-family:仿宋; font-size:12pt">涉及</span><span style="font-family:仿宋; font-size:12pt">相关的知识产权归甲方所有,包括 “</span><span style="font-family:仿宋; font-size:12pt">智</span><span style="font-family:仿宋; font-size:12pt">分期”著作权、商标权以及甲方受乙方委托为其设计的产品页面等</span><span style="font-family:仿宋; font-size:12pt">均</span><span style="font-family:仿宋; font-size:12pt">由</span><span style="font-family:仿宋; font-size:12pt">甲方</span><span style="font-family:仿宋; font-size:12pt">和/或甲方关联方享有,</span><span style="font-family:仿宋; font-size:12pt">未经甲方书面同意,乙方不得将其用于本次合作以外的目的或授权他人使用</span><span style="font-family:仿宋; font-size:12pt">。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、在履行本协议期间,本协议项下各方在使用其他方授权的企业名称、商标、商号、品牌、域名和网站时,应当仅限于为各方在本协议中约定的内容服务,不得用于与“智分期”业务无关的其他业务内容或经营目的。各方在其自身宣传材料、名片、市场宣传、网站建设以及其他任何方面使用其他方授权的名称、域名和网站,都必须事先书面通知其他方,并获得其他方的许可后方可进行,否则一方有权要求违约方承担由此而产生的一切法律责任,并赔偿因此造成的直接损失。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、甲乙丙三方应对其在履行本协议过程中获悉的任何有关其他方及其他客户的非公开信息和资料给予保密,未经其他方事先书面同意,不得用于本协议之外的目的,不得向任何第三方披露或以其他方式予以公开,但相关法律法规及规范性文件另有规定或监管部门另有要求的,以及第三方专业服务机构(法律、财务、审计等)和资金服务机构的合理要求除外。如因任何一方原因造成前述信息揭露且无法消除影响的,过错方应承担一切违约责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5、甲乙丙三方承认在合作过程中获得的信息的敏感性及保密性,并承诺对该等信息进行保密。保密信息包括但不限于:①本合作本身,包括合作各方的名称及本协议的条款和内容;②一方因本协议协商和履行而获得的另一方的任何信息,包括但不限于交易数据、信用卡持卡人或乙方用户的信息和资料、另一方的财务状况、商业活动计划和安排、市场调查结果、数据模型、数据分析报告、所有关于履行本合作项目所产生的相关数据;③任何其它因本协议而获悉的另一方的任何信息。一方同意在未取得另一方事先书面同意前不得以口头或书面的方式向任何第三方披露任何该等保密信息,除非该等披露是法律或法定程序所强制要求的。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6、甲乙丙三方应保证其所有雇员、佣工、代理人和承包商对上述保密信息保密。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第十一条  协议的生效、解除与终止</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、本协议自甲乙丙三方法定</span><span style="font-family:仿宋; font-size:12pt">代表人</span><span style="font-family:仿宋; font-size:12pt">/授权</span><span style="font-family:仿宋; font-size:12pt">签约人签字并</span><span style="font-family:仿宋; font-size:12pt">加盖各自公章或协议章后生效,有效期为自本协议生效之日起</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline"> </span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">壹</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline"> </span><span style="font-family:仿宋; font-size:12pt">年,</span><span style="font-family:仿宋; font-size:12pt">有效期届满,</span><span style="font-family:仿宋; font-size:12pt">双</span><span style="font-family:仿宋; font-size:12pt">方如需继续开展合作的,应另行</span><span style="font-family:仿宋; font-size:12pt">签署</span><span style="font-family:仿宋; font-size:12pt">书面协议</span><span style="font-family:仿宋; font-size:12pt">,</span><span style="font-family:仿宋; font-size:12pt">本协议</span><span style="font-family:仿宋; font-size:12pt">的</span><span style="font-family:仿宋; font-size:12pt">有效期满/终止/</span><span style="font-family:仿宋; font-size:12pt">中止</span><span style="font-family:仿宋; font-size:12pt">均不影响</span><span style="font-family:仿宋; font-size:12pt">甲乙双</span><span style="font-family:仿宋; font-size:12pt">方</span><span style="font-family:仿宋; font-size:12pt">在本协议有效期间</span><span style="font-family:仿宋; font-size:12pt">对</span><span style="font-family:仿宋; font-size:12pt">用</span><span style="font-family:仿宋; font-size:12pt">户所承诺服务的履行,</span><span style="font-family:仿宋; font-size:12pt">同时本协议有效期间双方已产生的权利义务</span><span style="font-family:仿宋; font-size:12pt">也不受影响。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、本协议对本协议各方的承继人或受让人具有同等约束力。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、除本协议另有约定外,如发生以下情形之一的,甲方有权单方面解除本协议,本协议自甲方发出的解除通知到达本协议其他方之日起解除:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(1)因不可抗力,或因法律、法规或国家政策调整或监管机关、司法部门等国家机关要求终止本协议,从而导致本协议无法继续履行;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(2)因甲方发生重组、股权调整、经营决策调整导致甲方无法继续履行本协议;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(3)因乙方严重违约导致本协议无法继续履行;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">本协议因前款第(1)、(2)项情形解除的,本协议双方互不负任何违约责任;本协议因前款第(3)项情形解除的,</span><span style="font-family:仿宋; font-size:12pt">甲方</span><span style="font-family:仿宋; font-size:12pt">有权要求乙方承担违约责任,如造成损失或其他不利影响的,</span><span style="font-family:仿宋; font-size:12pt">甲方</span><span style="font-family:仿宋; font-size:12pt">有权要求乙方承担赔偿责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第十二条   通知与送达</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、本协议项下任一方做出或者发出的任何通知、要求或者信函应以书面形式(包含电子邮件等方式)交付或者发送至另一方,相关方联系方式如下:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(</span><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">)甲方接收通知方式:邮箱</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">yumengying@finlean.com</span><span style="font-family:仿宋; font-size:12pt">  </span><span style="font-family:仿宋; font-size:12pt">电话</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">18828020724</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">甲方接收通知地址</span><span style="font-family:仿宋; font-size:12pt">:</span><span style="font-family:仿宋; font-size:12pt">四川省</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">成都市高新区香年广场T3-4301</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(</span><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">)乙方接收通知方式:邮箱</span><span style="font-family:仿宋; font-size:12pt">  </span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时填写的负责人邮箱</span><span style="font-family:仿宋; font-size:12pt">  </span><span style="font-family:仿宋; font-size:12pt">电话</span><span style="font-family:仿宋; font-size:12pt">    </span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">负责人手机号</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">乙方接收通知地址:</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">商户注册时选择及填写的地址</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">(</span><span style="font-family:仿宋; font-size:12pt">3</span><span style="font-family:仿宋; font-size:12pt">)丙方接收通知方式:邮箱</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">yixuanhong@finlean.com</span><span style="font-family:仿宋; font-size:12pt">  </span><span style="font-family:仿宋; font-size:12pt">电话</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">18108214026</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">丙方接收通知地址:四川省</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">成都市高新区香年广场T3-4301</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">甲乙丙三方合作期内,如联系方式发生变更的,变更方应当提前十个工作日以电子邮件或邮寄等书面方式通知对方。未及时书面通知而造成的任何损失,由违约方承担相应责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、任何通知、要求或其它文件都应当以书面形式做出,如通过传真或邮件等有线传输方式发送的,发出方传送系统确认传送成功之时,视为送达。如通过邮资预付的挂号邮递或快递的方式发送,在发出后的第三日视为已经送达。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、任何一方没有向对方预留或补留通讯地址、或预留的通讯地址有误的、或在邮寄途中发生延误或丢失的,对方不承担任何延误或未送达的责任。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、本协议有效期间,如乙方发生重大产权转让、体制变更、申请停业整顿、申请解散、申请破产等足以影响甲方权利实现的行为时,乙方保证提前30个工作日通知甲方。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第十三条</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold"> </span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">争议的解决</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1</span><span style="font-family:仿宋; font-size:12pt">、</span><span style="font-family:仿宋; font-size:12pt">甲乙丙三方确认,本协议的签署、生效和履行以不违反中国的法律法规为前提。如本协议中任一条款违反适用的法律法规,则该条款将被视为无效,但该无效条款并不影响本协议其他条款的效力。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2</span><span style="font-family:仿宋; font-size:12pt">、</span><span style="font-family:仿宋; font-size:12pt">因本协议引发的或与本协议有关的争议,由双</span><span style="font-family:仿宋; font-size:12pt">方</span><span style="font-family:仿宋; font-size:12pt">协商解决,也可由有关部门调解;协商或调解不成的,任何一方可以将争议提交北京仲裁委员会申请仲裁,甲乙丙三方同意根据申请仲裁时北京仲裁委员会现行有效的仲裁规则进行仲裁。仲裁裁决是终局的,对甲乙丙三方具有约束力,双方特此不可撤销地放弃向可能对争议事项有管辖权的任何法院提起诉讼的权利。仲裁费用和胜诉方因办理案件所支出的合理费用由败诉方承担。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt 1.3pt 0pt 0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">第十四条 其他条款</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、除前述第五条相关条款约定以外,乙方承诺在本协议签署之日起的一年内,乙方不会就信用卡分期以及类似智分期业务模式的任何其他机构开展基于信用卡分期合作。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、甲乙丙三方均系合法成立并有效存续的公司,其拥有充分的权力和权利签署并履行本协议;各方均已经充分知悉、理解本协议的全部条款内容,并且已采取一切适当和必要的公司行为,授权签署和履行本协议,签署和履行本协议是各方真实意思表示,该等签署是真实、合法、有效的。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、本协议附件为本协议不可分割的组成部分,与本协议具有同等法律效力。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、本协议的任何一方不得就本协议的内容做出单方面修改,本协议中未尽事宜由甲乙丙三方协商,需采用书面形式签订补充协议,补充协议与本协议具有同等法律效力。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">5、本协议正文、本协议附件和本协议之补充协议(如有)共同组成本协议之完整内容。甲乙丙三方认可并同意在就“智分期”业务进行合作时,除遵守本协议正文的相关约定外,还应遵守本协议附件和本协议之补充协议(如有)的约定。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">6、本协议一式叁份,甲乙丙三方</span><span style="font-family:仿宋; font-size:12pt">各</span><span style="font-family:仿宋; font-size:12pt">执壹份,具有同等法律效力。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">附件列表</span><span style="font-family:仿宋; font-size:12pt">:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">附件一:智分期服务费费率标准</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">附件二:分期交易确认单模板</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">附件</span><span style="font-family:仿宋; font-size:12pt">三:</span><span style="font-family:仿宋; font-size:12pt">《分期应收账款转让通知书》</span></p><p style="margin:0pt"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt; font-style:italic"> </span><span style="font-family:仿宋; font-size:12pt; font-style:italic">---------------------</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">以下无正文,</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">签</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">字页</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">随附</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">-</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">-------------------</span><span style="font-family:仿宋; font-size:12pt; font-style:italic">-</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">甲方(盖章):</span><span style="font-family:仿宋; font-size:12pt">深圳前海彩蜂商业保理有限公司</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">法定</span><span style="font-family:仿宋; font-size:12pt">代表人</span><span style="font-family:仿宋; font-size:12pt">/授权</span><span style="font-family:仿宋; font-size:12pt">签约人</span><span style="font-family:仿宋; font-size:12pt">签字:</span><a name="Text41"><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">余雁南</span><span style="font-family:仿宋; font-size:12pt">      </span></a></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:300pt; widows:0"><span style="-aw-bookmark-end:Text41"></span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期年</span><span style="font-family:仿宋; font-size:12pt">年</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期月</span><span style="font-family:仿宋; font-size:12pt">月</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期日</span><span style="font-family:仿宋; font-size:12pt">日   </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">乙方(盖章):</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">法定</span><span style="font-family:仿宋; font-size:12pt">代表人</span><span style="font-family:仿宋; font-size:12pt">/授权</span><span style="font-family:仿宋; font-size:12pt">签约人</span><span style="font-family:仿宋; font-size:12pt">签字:</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">法人姓名</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:288pt; widows:0"><span style="font-family:仿宋; font-size:12pt">  </span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期年</span><span style="font-family:仿宋; font-size:12pt">年</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期月</span><span style="font-family:仿宋; font-size:12pt">月</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期日</span><span style="font-family:仿宋; font-size:12pt">日   </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">丙方(盖章):</span><span style="font-family:仿宋; font-size:12pt">成都唯知信息科技有限公司</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">法定</span><span style="font-family:仿宋; font-size:12pt">代表人</span><span style="font-family:仿宋; font-size:12pt">/授权</span><span style="font-family:仿宋; font-size:12pt">签约人</span><span style="font-family:仿宋; font-size:12pt">签字:</span><span style="font-family:仿宋; font-size:12pt; text-decoration:underline">赵育梓</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">             </span><span style="font-family:仿宋; font-size:12pt">               </span><span style="font-family:仿宋; font-size:12pt">     </span><span style="font-family:仿宋; font-size:12pt">                 </span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期年</span><span style="font-family:仿宋; font-size:12pt">年</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期月</span><span style="font-family:仿宋; font-size:12pt">月</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期日</span><span style="font-family:仿宋; font-size:12pt">日   </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">附件</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">: 分期</span><span style="font-family:仿宋; font-size:12pt; font-weight:bold">应收账款转让通知书</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">分期应收账款转让通知书</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:center; widows:0"><span style="font-family:仿宋; font-size:12pt; font-weight:bold">(致用户声明)</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; widows:0"><span style="font-family:仿宋; font-size:12pt">【此处填写用户名称】(下称“贵方”):</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">贵方通过智分期服务</span><span style="font-family:仿宋; font-size:12pt">向</span><span style="font-family:仿宋; font-size:12pt">乙方购买商品而与乙方形成了买卖关系及保理公司自【乙方】处受让【乙方】在该买卖约定项下对贵方享有的应收账款而与贵方形成了交易关系及在此基础上形成了应收账款,现就应收账款项下我方对贵方享有的应收账款转让的事宜我方向贵方通知如下:</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">1、我方与保理公司签署了智分期业务合作协议,我方将我方对贵方在商务协议项下享有的应收账款(截至保理公司支付转让对价之日)及自该日起(含该日)产生的全部逾期利息、违约金、赔偿金、补偿金及任何其他应付款项等及任何从权利包括但不限于抵押权、质押权、保证金等担保权利以及为实现应收账款而享有的任何实体性权利及程序性权利等,全部转让给保理公司。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">2、自本通知书签署之日起,保理公司作为新债权人有权要求贵方根据上述商务协议向保理公司清偿本通知书列明的应收账款及履行商务协议项下的其他义务。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">贵方应自收到本通知书之日起,将上述商务协议项下的全部应付款项于其到期之日支付至保理公司与贵方约定的指定账户或自本通知书签署之日起保理公司另行通知的其他账户。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">贵方仅得通过上述收款账户以电汇货币方式偿付本通知书列明的应收账款,除非保理公司另行书面同意或通知,我方无权通知贵方更改上述还款账户信息,贵方亦不得向保理公司指定账户外的其他任何账户或以其他方式偿付应收账款,否则视为贵方未能偿付相应债务,贵方仍应按保理公司的要求再行偿付。由此产生的一切损失、责任</span><span style="font-family:仿宋; font-size:12pt">等,由贵方自行承担。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">3、为避免歧义,我方在此确认:我方在商品服务项下的任何义务和责任均不转让给保理公司,仍由我方承担。</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">4、本通知书一式三份,贵我双方各执一份,另一份由我方提交保理公司备存。</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">&#xa0;</span></p><p style="font-size:12pt; line-height:150%; margin:0pt; orphans:0; text-align:justify; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">                      </span><span style="font-family:仿宋; font-size:12pt">         </span><span style="font-family:仿宋; font-size:12pt">                  </span><span style="font-family:仿宋; font-size:12pt">乙方</span><span style="font-family:仿宋; font-size:12pt">法人签字</span><span style="font-family:仿宋; font-size:12pt">(公章):</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">法人姓名</span><span style="font-family:仿宋; font-size:12pt"> </span></p><p style="font-size:12pt; line-height:150%; margin:0pt 36pt 0pt 0pt; orphans:0; text-align:center; text-indent:24pt; widows:0"><span style="font-family:仿宋; font-size:12pt">                   </span><span style="font-family:仿宋; font-size:12pt">                          </span><span style="font-family:仿宋; font-size:12pt"> </span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期年</span><span style="font-family:仿宋; font-size:12pt">年</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期月</span><span style="font-family:仿宋; font-size:12pt">月</span><span style="background-color:#ffff00; font-family:仿宋; font-size:12pt; text-decoration:underline">当天日期日</span><span style="font-family:仿宋; font-size:12pt">日</span><span style="font-family:仿宋; font-size:12pt">  </span><span style="font-family:仿宋; font-size:12pt"> </span><span style="font-family:仿宋; font-size:12pt"> </span></p></div>'
\ No newline at end of file
diff --git a/static/agreement3.js b/static/agreement3.js
new file mode 100644
index 0000000..e4d0629
--- /dev/null
+++ b/static/agreement3.js
@@ -0,0 +1,126 @@
+const agreement3= `<p style="line-height:19pt; margin:0pt; orphans:0; text-align:center; widows:0">
+<span style="font-family:DengXian; font-size:14pt">智享收银台扫码支付客户服务协议</span>
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  智享收银台扫码支付客户服务协议(以下简称“本协议”)是作为您(以下简称“客户”)与智享收银台商户办理花呗分期业务(以下简称“商户’)就使用扫码支付服务(以下简称“本服务”)等相关事宜而共同缔结。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+一、声明与承诺
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  (一)	智享收银台提醒客户认真阅读并充分理解本协议各条款。请谨慎阅读并选择是否接受本协议。在阅读本协议的过程中,如果不同意本协议或其中任何条款约定,客户可以立即停止使用本服务。客户一经使用本服务即视为对本协议的理解和接受。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  (二)客户在使用本服务时,应自行判断交易对方是否具有完全民事行为能力并自行决定是否使用本服务与对方进行交易,且客户应自行承担与此相关的所有风险。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  (三)客户在使用本服务时,应完全遵循本协议及智享收银台不时制定的各项规定及相关页面提示内容。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  二、	智享收银台扫码支付业务条款
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  智享收银台扫码支付业务仅限于用户个人消费领域,不得用于生成经营、投资等非消费领域,不得从事套现、洗钱和其他非法活动。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  智享收银台扫码支付业务名称如发生更改,以智享收银台公告为准,本协议的有效期不受业务名称变而影响。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(一)向商户付款
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+向商户付款:是客户使用支付宝客户端向商户出示付款二维码并经商户扫描(以下简称“被扫业务”),或客户使用支付宝客户端扫描商户出示的二维码(以下简称“主扫业务“)经收单机构受理后完成资金支付的服务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+使用本服务付款是基于付款客户对收款客户的充分了解(包括但不限于对方的真实身份及交易背景等),付款客户应当承担自身指示错误(失误)而导致的风险。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(二)交易撤销及退货
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+向商户付款业务提供交易撤销与退货功能,客户在消费并成功使用扫码支付业务付款后,如需撤销该笔支付交易或退货,可通过商户申请发起交易撤销或退货,智享收银台将根据相关业务规则将交易款项退还至客户原付款账户中。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+三、本服务的其他业务规则
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+1.	智享收银台银行依据客户付款指示,根据本协议的约定向收款客户/商户完成支付后,即完成了当次服务的所有义务。对于收付款双方之间产生的关于当次交易的任何纠纷不承担任何责任,客户应当自行处理相关的纠纷。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+2.	客户使用本协议,即表明同意授权智享收银台在付款客户符合指定条件或状态时,支付款项给收款商户。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+四、信息保密与使用
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+客户授权并同意智享收银台为提供本服务而收集、保留和使用由客户提供并保存在智享收银台的个人信息(包括但不限于客户姓名、手机号码等)以及客户在使用本协议时留存在智享收银台客户端及各类数据信息,(以下合称“客户信息”)。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+对于智享收银台在为客户提供本本地服务过程中获取和知悉的客户信息,智享收银台对相关的使用不得违反法律法规和监管要求,并应当承担保密责任,不向第三方披露该信息,但下列情形除外:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(一)使用法律法规要求披露的:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(二)司法部门或监管机构依法要求披露的:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(三)客户另行同意或授权智享收银台进行披露的。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+五、智享收银台的权利与义务
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(一)智享收银台有权对使用本服务进行的交易及交易风险进行监控和评估,并根据相关法律法规、监管要求及本协议约定,根据客户风险状况采取调整、限制客户付款项金额、限制涉嫌违规的交易款项、终止受理业务等风险管理措施。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(二)智享收银台应向客户提供符合相关法律法规规定、监管要求及支付宝业务规则的支付服务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+六、客户的与义务
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(一)客户有权享有智享收银台提供的符合相关法律法规规定、监管要求及支付宝业务规则的扫码支付服务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(二)客户有权知悉本服务的所有功能、使用方法、各类收费项目和标准等信息。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(三)客户应根据本协议相关说明及智享收银台扫码支付交易支付页面中明示的相关规定/提示进行支付。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+七、责任承担及责任限制
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(一)使用本服务的付款客户和收款商户之间发生的任何交易纠纷应由纠纷各方自行解决,智享收银台不承担任何责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(二)客户在未受安全保护的手机客户端上使用本服务的,包括但不限于在受到病毒侵害的电脑或手机或其他移动设备终端上、在不安全的wifi环境里使用本服务等情形造成的损失,应由客户本人承担,智享收银台对此不承担任何责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(三)客户未按照本服务相关规则/页面提示内容操作,或未及时进行支付操作等原因造成付款失败所造成的一切损失,应由客户本人承担,智享收银台对此不承担任何责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(四)客户使用本服务时同意并认可,由于不可抗力及/或国家政策变化、IT系统故障、通讯系统故障、电力系统故障、金融危机等非银行所能控制的原因导致的损失,客户须自行承担。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+八、法律使用及争议解决条款
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(一)本协议的生效、履行、解释及争议的解决均适用中华人民共和国法律。本条款如因与中华人民共和国现行法律相抵触而导致部分无效,不影响其他部分的效力。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(二)如就本协议内容或其他执行发生任何争议,则双方应首先通过友好协商方式解决:协商不成的,任何一方均应向智享收银台所在地的人民法院提起诉讼。双方在补充协议/补充条款中另有约定的除外。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+九、其他
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(一)本协议经客户扫码付款二维码后生效。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(二)如本协议中的任何条款无论任何原因被视为完全或部分无效或不具有执行力,均不影响本协议的任何其余条款的有效性、约束力及可执行性。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(三)智享收银台修改本协议内容的,应根据适用的法律、法规、规章和监管规定提前在智享收银台门户网站、相关渠道公告。
+</p>`
\ No newline at end of file
diff --git a/static/agreement4.js b/static/agreement4.js
new file mode 100644
index 0000000..fceb005
--- /dev/null
+++ b/static/agreement4.js
@@ -0,0 +1,428 @@
+const agreement4= `<p style="line-height:19pt; margin:0pt; orphans:0; text-align:center; widows:0">
+<span style="font-family:DengXian; font-size:14pt">订单账款管理服务合同</span>
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0;font-size:10pt">
+    合同签订地及履行地:杭州市西湖区
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+    特别提醒:鉴于您(或称“客户”)通过四川纷领信息技术科技有限公司运营的智享收银台(域名为sie.jycash.cn,以下简称“交易平台”)向浙江网商银行股份有限公司(以下简称“网商银行”)申请开通“订单账款管理”服务(以下简称“本服务”),网商银行诚恳地建议您:在网商银行网站或其他与网商银行相关的软件客户端(简称“银行平台”)点击接受本合同之前,应事先了解清楚并充分理解本合同条款的全部内容。一旦您在任何银行平台点击接受本合同,即意味着您愿意向网商银行申请本服务,并已阅读、充分理解和接受本合同所有条款,同意接受本合同约束。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+    为充分维护您的合法权益,网商银行特提醒您特别关注本合同条款中的加粗及加下划线部分。如您无法准确理解或不同意本合同任一条款,请勿继续之后的流程;如有疑问,烦请致电网商银行客服电话【95188-3】。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  第一条     了解订单账款安全
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  1.1	考虑到订单账款安全,建议您:(1)妥善保管法定代表人身份证、营业执照、组织机构代码证、税务登记证、开户许可证等身份证明文件;(2)妥善保管手机、电脑等电子终端,并确保前述设备在安全的环境下使用服务;(3)妥善保管银行平台登录名、账号、密码、交易验证码等重要信息,不要轻信他人随意泄露;(4)交易完成后及时核对交易记录;(5)及时通知网商银行任何可疑的事项。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  1.2   对于可能发生或实际已发生的资金安全问题,建议您采取如下措施:(1)即刻自行操作或致电网商银行冻结资金,并及时修改密码;(2)如身份证明文件丢失,即刻向发证机关提出挂失申请;(3)如手机等电子终端丢失,向电信运营商提出号码挂失及换领申请。网商银行将尽力协助您减少可能损失的发生,但不会就您申请冻结资金之前发生的损失承担责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  1.3   为了保障您的订单账款安全,当网商银行判断存在较高的欺诈,盗用,不当使用,黑客入侵,病毒,恶意的、破坏性的或损坏性的代码、程序或宏指令攻击风险,或者存在疑似洗钱等违反法律法规的操作时,网商银行可以视情况在最长不超过180天的一定期间(简称“锁定期”)内锁定您的服务使用,并且拒绝接收您的任何交易指令。在该等情况下,您可以在锁定期后重新使用服务或者发送交易指令,也可以在锁定期内拨打网商银行客服电话申请解除锁定。该等锁定不应被视为网商银行的义务,网商银行也免于为此承担责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  第二条	了解服务申请的条件
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  2.1   本服务申请过程中,您须根据监管规定及网商银行要求向网商银行提供相应资料并按照银行平台提示的流程提交申请。网商银行可能会对不同客户增减所需信息、验证步骤及具体要求,请以申请时银行平台的具体提示为准。网商银行将根据监管规定及网商银行要求对您的申请进行审核,并通过银行平台提示告知审核结果,烦请您关注。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  2.2   本服务申请过程中,您须根据银行平台提示的流程关联同名银行账户,并且应根据银行平台的提示完成相关验证。操作及使用关联同名银行账户时应遵循如下约定:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  (a)   为了确保您的合法权益,您应确保同名银行账户为您实名开立并使用。如非本人实名开立的账户请勿进行关联,否则网商银行有权拒绝您的关联申请或单方面解除已关联账户的关联关系。如因您的关联行为造成您自身、网商银行或第三方损失的,您同意就前述损失承担全部责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  (b)   您授权同意,除留存您主动提供的同名银行账户信息外,网商银行亦可通过非银行支付机构、清算机构、合作银行获取并留存您的同名银行账户信息,包括但不限于账号、户名、证件类型、证件号码。并同意网商银行通过非银行支付机构、清算机构、合作银行进行上述账户信息的校验,您亦同意前述非银行支付机构、清算机构、合作银行将校验信息反馈给网商银行。您应确保同名银行账户信息的真实、完整、准确、合法、有效。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  2.3   基于运营及风险考虑,服务开通后,根据您的具体情况,对于以下第三条所述的网商银行的各项服务,网商银行可能会增减具体服务内容和(或)限制条件,请以银行平台的具体提示为准,烦请您关注。
+</p>
+
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  第三条  了解订单账款管理服务
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  一&nbsp&nbsp服务内容
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.1订单账款管理服务是指您向交易对手提供商品或服务时,由网商银行为您提供保理服务,即您同意委托网商银行向您在交易平台的交易对手或合作机构(如收单机构、支付机构等)代收订单账款,并将订单账款根据本协议约定的方式进行结算。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.2您在使用订单账款管理服务时应遵守银行平台及交易平台设定的流程、规则,否则网商银行有权拒绝向您提供本服务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  二&nbsp&nbsp订单账款结算
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.3您同意并理解,您可以通过以下方式实现订单账款结算:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(a)网商银行仅为您代收基于交易平台上的订单账款,如前述资金非交易款项,则网商银行保留拒绝接收并退回原汇入账户的权利;此外,网商银行亦会根据交易平台的指令将订单账款退返。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(b)根据您与交易平台的约定将订单账款结算至您已关联的同名银行账户。网商银行将视情况,在交易当日或之后的工作日尽快处理。您确认并同意,前述交易的完成将受限于网商银行及/或其他机构操作此类交易的工作时间。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.4您在提交指令时,请反复确认指令的准确性及完整性(包括转出金额、转出账户的户名、开户行、账号及其他网商银行要求的信息),网商银行没有义务对上述信息进行核实。一旦网商银行收到您或交易平台的任何结算指令,除非网商银行另行同意,网商银行将不会受理和执行您随后要求取消、撤销或修改该转账指令的任何指令。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.5基于运营及风险考虑,网商银行将对可结算的金额、次数及使用方式进行限制,并单方面决定本服务的服务费用及交易指令的截止时间。除非紧急情况,网商银行将在银行平台公示前述信息。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.6您理解并同意,对于本服务,除非因网商银行欺诈行为或重大过失导致的直接损失,网商银行对资金划转或传输过程中可能产生的任何损失或迟延,信息传输途中可能发生的任何错误、遗漏或毁损,或对收到的信息的错误解释,免于承担责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+ 三  订单账款融资
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.7您理解,基于付款机构、交易平台等因素,网商银行将上述订单账款结算给您存在一定的期间。为了保证您的流动性,您可选择向网商银行申请订单账款融资。该申请是一次性的,即在您同意办理订单账款融资至您终止本服务的期间,您无须针对每笔订单账款进行单独申请,网商银行将在确认您确实存在该笔订单账款后的约定时间内将款项支付至您授权的账户。前述约定时间具体以交易平台的规则、页面展示为准。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.8鉴于网商银行向您提供了订单账款融资服务,为此您须向网商银行支付相应的服务费。具体服务费收取标准详以交易平台或银行平台的展示为准。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.9您在申请订单账款融资服务并收到对应的款项后,除网商银行书面同意外,您不得就该笔订单账款向交易对手或合作机构主张债权。网商银行将享有该笔订单账款的权利,包括向交易对手或合作机构请求付款至网商银行指定账户等。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.10如您与交易对手的交易存在瑕疵(如商品瑕疵、货不对版、伪造交易、交易对手拒付等),网商银行有权不向您提供订单账款融资服务。如网商银行已将融资款支付给您指定账户的,则您同意通过第三方(如支付宝(中国)网络技术有限公司等,以下简称“支付宝”)划转相应款项,或从您的其他交易资金中划转相应款项,针对其他交易资金划转的款项,网商银行将不再向您承担本协议项下订单账款结算的义务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(二)智享收银台应向客户提供符合相关法律法规规定、监管要求及支付宝业务规则的支付服务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+四   对账查询
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+3.11您可以通过银行平台的指定页面查询您的账户信息及明细。如您对相关服务信息及结算明细存在疑问的,烦请致电网商银行客服电话咨询。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第四条  了解交易指令
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+4.1网商银行接受并执行通过以下任意一种或者多种方式发送的交易指令:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(a)根据交易平台的规则或与您的约定,交易平台自行或代您发送的交易指令。前述指令包括但不限于冻结、解冻、划转款项等;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(b)验证您在网商银行预留的交易密码(如有);
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(c)网商银行不时认可的其他方式。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+4.2您确认并同意,依据4.1条约定发送的交易指令,无论是否由您本人亲自做出,均视为您本人做出,对您具有法律上的约束力。您不得因为前述指令存在交易平台转交情况而拒绝认可该交易指令,并就网商银行执行该交易指令提出任何赔偿请求。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+4.3您可以通过银行平台指定的操作流程变更或者网商银行客服电话予以变更交易密码(如有),或以网商银行不时允许的其他方式予以操作。在网商银行收到上述申请并确认完成该变更操作之后,该变更方生效。交易密码变更的生效不影响变更前使用原交易密码已进行的交易的效力。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+4.4如果您连续多次未通过网商银行认可的验证方式的验证,并达到网商银行认为合理的次数限制,网商银行将视情况在一定期间(简称“锁定期”)内锁定您的访问,或者拒绝接收您的任何交易指令。在该等情况下,您可以在锁定期结束后重新使用本服务,也可以在锁定期内拨打网商银行客服电话,按照银行平台的提示验证您的身份,并申请解除锁定。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第五条  服务状态异常将会影响交易指令执行
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+5.1当服务状态异常(比如订单账款余额不足、被冻结等)时,网商银行将不会执行您的交易指令(包括任何网商银行收费或网商银行应当代收的费用、手续费、佣金)。网商银行亦不就因延迟或未执行该等交易指令所导致的任何后果承担责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+5.2如网商银行收到数项付款或其他交易指令,并且其涉及的总额超出订单账款余额或任何交易限额时,网商银行有权不考虑相关指令的发出日期以及收到该等指令的时间先后,自行决定选择执行和不执行其中的一项或若干项交易指令。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第六条  了解资金使用限制的情形
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+您不可撤销地授权网商银行,在为了确保您有足够资金执行您的任何交易指令,及根据交易平台自行或代您发送的交易指令,或基于法律法规规定、有权机关要求及其他合理理由的情况下,网商银行有权限制您使用相应资金,或冻结、划转部分或全部资金。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第七条  了解您应承担的债务追讨费用
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+网商银行可采取合理行动,以强制执行本合同,包括在向网商银行所知悉的您的任一联系方式发出通知后,聘请律师及/或第三方催收公司等代理人追讨您所欠网商银行的任何款项。您应当向网商银行赔偿网商银行为行使或实现网商银行在本合同项下任何权利或利益所产生的一切合理的法律及其他合理费用及开支(包括但不限于诉讼费用、律师费用、催收费用、调查费用、公证费用、评估费、鉴定费、拍卖费及差旅费等)。您不可撤销地同意及授权网商银行为上述目的向该等人士披露您的相关资料及信息。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第八条  如何终止服务
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+8.1在您违反本合同约定时,网商银行有权随时经通知您,自通知时起不再为您提供本服务,而免于为此承担责任。网商银行在发出该等通知后,即无任何义务执行与本服务有关的任何交易指令。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+8.2网商银行有权在出现下列情况时,随时暂停您使用或中止本服务,而无须提供任何通知或理由:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(a)本服务的维持或操作,因任何法律、法规或监管规定而被禁止或变得不合法/不合规; 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(b)您违反本合同的任何条款或与网商银行达成的其他约定;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(c)您未按照网商银行的要求更新您的客户资料,包括但不限于身份证明信息、手机号等; 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(d)经网商银行合理判断,本服务被用作任何不合法或不正当的用途,或者存在被用作任何不合法或不正当的用途的嫌疑; 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(e)网商银行就有关本服务的操作收到互相抵触的指示; 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(f)网商银行收到任何第三方对您的订单账款的权利主张。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+8.3如您申请终止本服务,应当通过客服电话办理。网商银行将酌情决定接受或拒绝您的服务终止申请。如果存在任何未结清的交易,或者您欠付网商银行的任何款项尚未结清,网商银行将不会接受您的服务终止申请。请您理解,网商银行目前暂不提供服务主动终止服务,如有疑问可咨询网商银行客服电话。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+8.4服务终止后如有订单账款未处理,网商银行可根据网商银行认为妥当的途径和方式将扣除您欠付网商银行的任何网商银行收费及其他款项后的余额交还您,包括将款项转入您另行指定的您本人在其他银行或机构开立的账户。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+8.5不论您的部分或全部服务是否已暂停或终止,您仍有责任向网商银行支付手续费、佣金及您应当支付的其他款项,以及截至服务暂停或终止时所累积的欠款,即使本合同之效力终止,您仍应承担该等付款责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+8.6服务终止后,您将无法继续使用网商银行的本服务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第九条  了解反洗钱的相关约定
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+9.1根据法律、法规和该司法管辖区的政府和监管机关的要求,若我们怀疑或认为任何账户的收支款项是恐怖分子/恐怖组织的财产或资金、或是毒品交易、恐怖活动或任何犯罪的收入、或者该等汇款或支付可能另行受到任何司法管辖区的制裁,我们可以决定并采取我们认为适当的任何行动。该等行动包括但不限于:拦截和调查任何付款指示以及通过网商银行的系统发往您或由您发出或代表您发出的其他信息或通讯;就可能涉及被制裁的任何个人或实体的姓名/名称是否确为该受制裁的个人或实体作进一步查询;在一段合理时间内推迟处理该等资金划转或支付以进行我们认为必需的调查和查询;拒绝进行该等资金划转或支付或拒绝接受该等交易指令。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+9.2网商银行对任何一方由于以下任何事项遭受的任何损失(无论是直接损失还是间接损失,包括但不限于利润损失或利息损失)或损害免于承担责任:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(a)网商银行迟延或未能处理任何该等交易指令或其他信息或通讯,或迟延或未能履行与任何账户或向您提供任何服务相关的任何职责或其他义务,只要该等迟延或未能处理/未能履行是全部或部分由于网商银行根据前述法律、法规和要求而采取的任何行为或措施而导致的; 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(b)网商银行行使本合同下的任何权利。在某些情况下,网商银行采取的行为可能导致不予或迟延处理某些指令或信息。在采取该等行为时,网商银行均不保证网商银行系统中的相关付款指示或其他信息和通讯是准确的、现时的或更新的。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第十条  了解网商银行如何行使抵销权
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+在不损害(现有或将来设立的)任何留置权、抵押权、质押权或其他担保权利的情况下,除网商银行可行使的所有其他权利及救济外,网商银行有权(但无义务)在不经事先通知您或取得您事先同意的情况下,抵销或转移本服务项下的订单账款,以偿还您对网商银行在任何账户或任何服务项下或其他任何方式的义务、债务或责任,不论该等义务、债务或责任为连带或单独的、基本或从属的,亦不论是否需要通过您的交易指令执行。您在此同意并授权网商银行执行(或要求执行)任何必要的资金划转。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第十一条  了解网商银行如何行使留置权
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+网商银行有权留置您通过任何途径由网商银行持有或控制的任何现有和将来的财产,作为您对网商银行的任何义务、债务或责任的持续性担保,直至该等义务、债务或责任已完全清偿。网商银行有权出售该等财产,并在扣除相关费用、手续费、佣金或您应当支付的其他款项后,将所获款项用作偿还您对网商银行的任何义务、债务及责任(包括诉讼费用、律师费用、评估费、拍卖费及差旅费等)。如该等款项不足以偿付您对网商银行的所欠款项,您应一经网商银行要求立即补足其差额。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第十二条  了解网商银行的免责条款
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+12.1除非由于网商银行或网商银行员工的欺诈行为或重大过失,否则网商银行或网商银行员工就下列事宜向您或第三人均免于承担责任或义务: 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(a)本服务因任何法律、法规或监管要求而被禁止或变得不合法/不合规 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(b)您没有遵守本合同的约定;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(c)网商银行按照交易平台之指示行事;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(d)任何与本服务有关的设备或装置的机械故障、电力故障、失灵、停顿、运作中断或设备或装置的不足,或任何天灾、恐怖活动、战争或延期偿付之宣布或任何其他不在网商银行控制范围内的事宜;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(e)网商银行执行符合本合同的任何指令,或网商银行基于合理理由未能执行或决定不执行该等指令;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(f)网商银行基于合理理由未能或延迟执行您的指令。 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+12.2网商银行相关系统或软件因下列状况无法正常运作,使您无法使用或无法正常使用各项服务或使网商银行无法根据您的指令行事或者履行本合同项下的其他义务时,网商银行不承担损害赔偿责任,该状况包括但不限于: 
+</p> 
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(a)在网商银行相关系统或软件或与交易相关的其他系统或软件公告之系统维护期间;
+</p> 
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(b)电信设备出现故障不能正常进行数据传输的;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(c)因台风、地震、海啸、洪水、停电、战争、恐怖袭击等不可抗力之因素,造成网商银行系统障碍不能正常执行业务的;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(d)由于黑客攻击、电信部门技术调整或故障、网站升级、第三人方面的问题等原因而造成的服务中断或者延迟。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+12.3在任何情况下,网商银行对您或任何第三人的责任均仅限于直接及纯粹因上述事宜导致的直接且可合理预计的损失。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+12.4除非网商银行另行明确书面同意,网商银行不对您承担任何咨询、建议或类似服务的义务。您确认,您已经就任何账户、服务、您与网商银行之间的任何交易或网商银行按您任何指示而进行的交易,在相关的法律、税务、财务和其他方面,取得了必要的独立咨询意见。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+12.5您使用本服务或进行任何交易或投资的任何决定,均是根据您本身的独立判断和评估而作出的,并不依赖网商银行给予的任何意见、建议或信息;您亦同意,即使决策是根据网商银行给予的任何具有参考性的意见、建议或信息而进行的,网商银行不会就您的决策导致的损失或损害承担责任,您不会就此要求网商银行承担责任,亦不会就此加入或进行针对网商银行的任何行动或诉讼。您了解,进行任何投资前应当寻求独立的专业咨询,并且就与本合同有关的任何事项而言,网商银行并非专业的独立顾问。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第十三条  了解网商银行对交易记录及资料保存的方式方法
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+13.1在提供本合同项下服务的过程中,您同意且网商银行有权(但无义务),以各种可行方式记录您的客户资料、交易指令、交流信息(包括但不限于客服电话的录音)及其他相关文件。所有资料均属网商银行所有,并可作为您的交易指令或证明网商银行与您之间沟通情况的决定性证据,对您具有法律上的约束力。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+13.2网商银行可自行确定保存客户资料、交易指令、交流信息及其他相关文件的期限,并可能在期限届满后销毁其正本。该正本可能会被复制成数字存储的副本,该等数字存储的副本应被视为与其正本具有相同的真实性及效力。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+13.3所有以上客户资料、交易指令、交流信息及其他相关文件,以及相应的数字存储的副本等均具有法律上完全的证据效力,对您具有法律上的约束力。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第十四条  了解您及时更改客户资料的义务
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+14.1您保证您提供给网商银行的任何资料均为真实、准确、有效。当您的任何客户资料出现任何更改或更新,应立即通过网商银行认可的方式提交更新申请。在网商银行确认上述更新之后,客户资料变更方生效。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+14.2客户资料包括但不限于身份信息、联系方式等。提交客户资料更新申请后,网商银行可能要求您提交相关补充资料,您应尽协助之义务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+14.3所有源于您没有向网商银行提供最新客户资料而引致的后果均由您自行承担。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第十五条  了解您的建议及投诉渠道 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+如您对网商银行提供的服务有任何建议或投诉,可致电网商银行的客服电话或登录网商银行银行平台。您的所有建议和投诉将按网商银行的内部处理程序予以处理。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第十六条  了解网商银行更正错误记录
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+即使有任何明示或默示的相反规定,网商银行有权并且您授权网商银行在发现:(i)任何交易记录错误; (ii)任何交易记录遗漏;或(iii)任何交易存在计算错误时,随时更正交易记录。您同意并授权,如该等错误或遗漏造成网商银行向相关账户支付了超过应付数额的任何款项,则网商银行有权调整任何相关交易记录、要求您退款及/或从您在本网商银行开立的任何账户扣除相关款项。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第十七条  了解网商银行承担赔偿的范围
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+如网商银行因为或出于向您提供任何服务、与您进行任何交易、为您维持履行本合同项下义务、您违反本合同或适用的法律而基于合同、侵权或其他方面遭受或产生任何索赔、责任、损失、损害、成本、费用和开支(不论因税款、税费或其他事由产生的,包括但不限于全额赔偿网商银行为维护和实现本条款项下权利而发生的诉讼费用、律师费用、评估费、拍卖费及差旅费等,且不论是实际发生的还是可能发生的),您应向网商银行赔偿该等索赔、责任、损失、损害或费用,并且确保网商银行免受该等索赔、责任、损失、损害、费用或开支的影响,除非该等索赔、责任、损失、损害或费用是由网商银行的欺诈或重大过失造成。网商银行出具的任何您就上述赔偿责任而对网商银行应承担的责任或债务的证明,应对您具有约束力,并且作为最终证据,而无须进一步证明该等索赔、责任、损失、损害、费用或开支。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第十八条  了解网商银行如何收集信息
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+18.1您理解并同意,当您使用网商银行服务时,您会向网商银行主动提供一些信息,网商银行也会通过您授权的渠道收集您的一些信息。网商银行将依据《网商银行隐私权政策》的要求严格保护您的信息。请您仔细阅读该政策,如有任何疑问,请随时联系网商银行。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+18.2您理解并同意,网商银行在遵循合法、正当、必要原则的前提下,按照如下方式收集您的相关信息:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(a)为减少可能存在的资金损失风险,网商银行将对您根据本协议2.2条关联的银行账户进行验证,验证的信息应当至少包括:开户申请人姓名、居民身份证号码、手机号码、绑定账户账号(卡号)、绑定账户是否为Ⅰ类银行账户或者信用卡账户。您理解并同意网商银行在监管要求的必要范围内,收集您的前述信息;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(b)为了遵守法律法规及监管机构的管理的要求,以及向您提供更个性化、更便捷的服务,网商银行需要收集您主动提供的身份信息,或向支付宝等网商银行关联公司及合法留存您信息的其他方(如:I类银行账户或信用卡账户开户银行)收集您的身份信息,并进行交叉验证核对。身份信息包括:您的姓名、身份证件、地址、职业、电话号码和电子邮件地址及相关附加信息(如您所在的省份和城市、邮政编码等);
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(c)为便于您查询您的交易状态或历史记录,也为了遵守法律法规的规定,网商银行会保存您使用网商银行服务产生的交易信息,并严格按照法律法规及监管的要求对这些信息进行妥善保管;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(d)为了保护您的账户安全,防止您的资金、个人信息被不法分子获取,当您使用网商银行提供的服务时,您理解并同意网商银行记录您操作的相关信息,如:您的网络信息、设备标识符、硬件型号、操作系统版本、您的位置以及与网商银行服务相关的日志信息。这些信息可帮助网商银行更好地保护您的账户安全。您可以关闭收集位置功能,这样网商银行会停止对您的位置信息的收集,这样做不会影响您使用网商银行服务,但可能会影响网商银行判断您的账户是否安全;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(e)网商银行为了提供服务及改进服务质量的合理需要,您理解并同意网商银行收集其他必要信息,如:您与网商银行的客户服务团队联系时您提供的相关信息,您参与提供的与网商银行服务或产品相关的问卷答复信息。与此同时,为提高您使用网商银行提供的服务的安全性,更准确地预防钓鱼网站、短信欺诈和木马病毒,网商银行可能会通过了解一些您的网络使用习惯、您使用的移动应用(App)或软件信息等手段来判断您账户的风险,并可能会记录一些网商银行认为有风险的URL。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第十九条  了解网商银行如何使用信息
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+19.1收集您的信息是出于遵守国家法律法规的规定或监管要求,以及向您提供服务及提升服务质量的目的。为了实现前述目的,您理解并同意网商银行把您的信息用于下列用途:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(a)向您提供网商银行的各项服务及客户服务,并维护、改进这些服务;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(b)比较信息的准确性,并与第三方进行验证。例如,将您向网商银行提交的身份信息与身份验证的服务机构进行验证;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(c)为使您知晓自己使用网商银行的各项服务的情况或了解网商银行的服务,向您发送服务状态的通知、营销活动及其他商业性电子信息。如您不希望接收该等信息,请您收到营销信息后按照信息提示的方式退订;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(d)对网商银行用户的身份数据、交易信息等进行综合统计、分析或加工等处理,为您提供理财、信贷等服务;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(e)预防或禁止非法的活动;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(f)行政和司法机关根据法律及行政法规的合法要求。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+19.2为了提升服务效率,降低服务成本,或提高服务质量,网商银行可能需要委托关联公司或专业机构(以下合称“受托机构”)协助完成本协议项下服务或职责,例如:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(a)委托具备专业技术能力的关联公司按照本协议的约定采集您的信息或对您的信息进行分析、加工和处理,用于网商银行服务的风险控制或维护、改善网商银行服务;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(b)委托具备专业技术能力的关联公司评估您的履约能力和履约意愿,供网商银行决策参考;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(c)委托受托机构提供客户服务(如:客服热线接听)。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+为此,网商银行将在与相关服务必要范围内向受托机构提供您的部分信息。网商银行承诺受托机构同样遵守严格的保密义务及采取有效的保密措施,禁止其将这些信息用于未经您同意的用途,网商银行对此承担相应的责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第二十条  了解网商银行如何共享信息
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+网商银行对您的信息承担严格保密义务,您理解并同意,网商银行为了遵守国家法律法规的规定或监管要求,以及向您提供服务并提升服务质量的目的,在下列情况下将您的信息与第三方共享:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(a)若第三方根据其与您的约定可以获取您提供给或留存在网商银行的信息,网商银行将依据您同意的范围向第三方提供该等信息;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(b)某些情况下,只有共享您的信息,才能提供您需要的服务和(或)产品,或处理您与他人的交易纠纷或争议;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(c)某些情况下,只有共享您的信息,才能判断您的账户或交易是否安全;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(d)某些服务和(或)产品由网商银行的合作伙伴提供或由网商银行与合作伙伴、供应商共同提供,网商银行会与其共享提供服务和(或)产品必须的信息;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(e)网商银行与第三方进行联合推广活动,网商银行可能与其共享活动过程中产生的、为完成活动所必要的个人信息,如参加活动的用户数、中奖名单、中奖人联系方式等,以便第三方能及时向您发放奖品;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(f)为促进社会信用体系的建立和完善,您同意将您提供的或履约中产生的相关必要信息(包括不良信息)向征信机构、信用服务机构以及中国互联网金融协会提供;
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(g)行政和司法机关根据法律及行政法规的合法要求。 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第二十一条  合同的适用法律及争议解决方式 
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+本合同适用中华人民共和国法律。本合同在履行过程中发生争议,可以协商解决,协商不成,向合同签订地及履行地人民法院起诉。在诉讼期间,本合同不涉及争议部分的条款仍须履行。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第二十二条  合同的生效、变更、解除
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+22.1本合同自网商银行向您提供具体服务之日起生效。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+22.2网商银行有权不定期修改本合同,不时增加、减少或变更任何服务(包括其相关范围及使用条件)、网商银行服务收费表。当本合同的相关变更涉及增加网商银行收费及/或影响您的责任及义务时,网商银行将通过银行平台的相应页面,至少提前三十天予以公布。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+22.3除法律法规另有强制性规定外,如您在相关修改生效后继续使用相关服务,即视为同意该等变更或修订。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+22.4本合同生效后,除本合同另有约定外,未与网商银行协商一致的情况下您不得变更或解除本合同。网商银行基于自身经营考虑,可以中断、终止本合同或其任何部分,但网商银行将尽最大可能减少或避免侵害您的合法权益。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+第二十三条  通知及其他
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+23.1通知
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+本合同履行过程中,网商银行可以通过银行平台的内置信息、您留存在网商银行或交易平台的电子邮箱等途径向您发出通知,发送当日即视为送达。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+23.2其他
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+除本合同的相关约定外,您还须遵守国家法律法规、监管规定关于支付结算、银行服务等相关规定。
+</p>
+`
\ No newline at end of file
diff --git a/static/agreement5.js b/static/agreement5.js
new file mode 100644
index 0000000..60219eb
--- /dev/null
+++ b/static/agreement5.js
@@ -0,0 +1,283 @@
+const agreement5= `<p style="line-height:19pt; margin:0pt; orphans:0; text-align:center; widows:0">
+<span style="font-family:DengXian; font-size:14pt"><span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>用户服务协议</span>
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0;font-size:10pt">
+    为使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的服务,您应当阅读并遵守《<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>用户服务协议》(以下简称“本协议”)。请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款、管辖与法律适用条款,以及开通或使用某项服务的单独协议。限制、免责条款可能以黑体加粗或加下划线的形式提示您重点注意。除非您已阅读并接受本协议所有条款,否则您无权使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>提供的服务。您使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的服务即视为您已阅读并同意上述协议的约束。如果您未满18周岁,请在法定监护人的陪同下阅读本协议,并特别注意未成年人使用条款。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+    一、【协议的范围】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+    1.1本协议是您与<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>之间关于用户使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>相关服务所订立的协议。“<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>”是指珠海稻壳信息科技有限公司与四川纷领信息技术有限公司联合开发的产品。“用户”是指使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>相关服务的使用人,在本协议中更多地称为“您”。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+    1.2本协议项下的服务是指<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>向用户提供的包括但不限于经营范围项下的信息技术服务、零售金融服务、移动服务等(以下简称“本服务”)
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+   二、【帐号与密码安全】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+   2.1您在使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的服务时需要注册一个帐号。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+    2.2<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>特别提醒您应妥善保管您的帐号和密码。当您使用完毕后,应安全退出。因您保管不善可能导致遭受盗号或密码失窃,责任由您自行承担。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+    三、【用户信息保护】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  3.1保护用户信息是<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的一项基本原则<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>将按照本协议的规定收集、使用、储存和分享您的信息
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  3.2您在注册帐号或使用本服务的过程中,可能需要填写一些必要的信息。若国家法律法规有特殊规定的,您需要填写真实的身份信息。若您填写的信息不完整,无法使用本服务或在使用过程中受到限制。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  3.3一般情况下,您可随时浏览、修改自己提交的信息,但出于安全性和身份识别的考虑,您可能无法修改注册时提供的初始注册信息及其他验证信息。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  3.4<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>将运用各种安全技术和程序建立完善的管理制度来保护您的信息,以免遭受未经授权的访问、使用或披露
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  3.5<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>不会将您的信息转移或披露给任何非关联的第三方,除非:
+  (1)相关法律法规或法院、政府机关要求;
+  (2)为完成合并、分立、收购或资产转让而转移;
+  (3)为提供您要求的服务所必需。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  3.6<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>非常重视对未成年人信息的保护。若您是18周岁以下的未成年人,在使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的服务前,应事先取得您家长或法定监护人(以下简称"监护人")的书面同意。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  四、【使用本服务的方式】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+  4.1除非您与<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>另有约定,您同意本服务为商业性质的使用。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+4.2您应当通过<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>提供或认可的方式使用本服务。您依本协议条款所取得的权利不可转让。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+4.3您不得使用未经<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>授权的插件、外挂或第三方工具对本协议项下的服务进行干扰、破坏、修改或施加其他影响。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+五、【按现状提供服务】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+您理解并同意,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的服务是按照现有技术和条件所能达到的现状提供的。<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>会尽最大努力向您提供服务,确保服务的连贯性和安全性;但<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>不能随时预见和防范法律、技术以及其他风险,包括但不限于不可抗力、病毒、木马、黑客攻击、系统不稳定、第三方服务瑕疵、政府行为等原因可能导致的服务中断、数据丢失以及其他的损失和风险。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+六、【自备设备】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+6.1您应当理解,您使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的服务需自行准备与相关服务有关的终端设备(如手机),并承担所需的费用(如电话费、上网费等费用)。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+6.2您理解并同意,您使用本服务时会耗用您的终端设备和带宽等资源。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+七、【广告】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+ 7.1您同意<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>可以在提供服务的过程中自行或由第三方广告商向您发送广告、推广或宣传信息(包括商业与非商业信息),其方式和范围可不经向您特别通知而变更。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+7.2<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>可能为您提供选择关闭广告信息的功能,但任何时候您都不得以本协议未明确约定或<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>未书面许可的方式屏蔽、过滤广告信息。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+7.3<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>依照法律的规定对广告商履行相关义务,您应当自行判断广告信息的真实性并为自己的判断行为负责,除法律明确规定外,您因依该广告信息进行的交易或前述广告商提供的内容而遭受的损失或损害<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>不承担责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+7.4您同意,对<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>服务中出现的广告信息,您应审慎判断其真实性和可靠性,除法律明确规定外,您应对依该广告信息进行的交易负责。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+八、【收费服务】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+8.1<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的部分服务是以收费方式提供的,如您使用收费服务,请遵守相关的协议。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+8.2<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>可能根据实际需要对收费服务的收费标准、方式进行修改和变更,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>也可能会对部分免费服务开始收费。前述修改、变更或开始收费前,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>将在相应服务页面进行通知或公告。如果您不同意上述修改、变更或付费内容,则应停止使用该服务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+九、【第三方提供的产品或服务】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+您在<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>上使用第三方提供的产品或服务时,除遵守本协议约定外,还应遵守第三方的用户协议。<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>和第三方对可能岀现的纠纷在法律规定和约定的范围内各自承担责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+十、【基于软件提供服务】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+若<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>依托“软件”向您提供服务,您还应遵守以
+下约定:
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+10.1您在使用本服务的过程中可能需要下载软件,对于这些软件,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>给予您一项个人或工商主体的、不可转让及非排他性的许可。您仅可为访问或使用本服务的目的而使用这些软件。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+10.2为了改善用户体验、保证服务的安全性及产品功能的一致性,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>可能会对软件进行更新。您应该将相关软件更新到最新版本,否则<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>并不保证其能正常使用。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+10.3<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>可能为不同的终端设备开发不同的软件版本,您应当根据实际情况选择下载合适的版本进行安装。您可以直接从<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的网站上获取软件,也可以从得到<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>授权的第三方获取。如果您从未经<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>授权的第三方获取软件或与软件名称相同的安装程序,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>无法保证该软件能够正常使用,并对因此给您造成的损失不予负责。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+10.4除非<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>书面许可,您不得从事下列任一行为:
+(1)删除软件及其副本上关于著作权的信息;
+(2)对软件进行反向工程、反向汇编、反向编译,或者以其他方式尝试发现软件的源代码;
+(3)对<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>拥有知识产权的内容进行使用、出租、岀借、复制、修改、链接、转载、汇编、发表、出版、建立镜像站点等
+(4)对软件或者软件运行过程中释放到任何终端内存中的数据、软件运行过程中客户端与服务器端的交互数据,以及软件运行所必需的系统数据,进行复制、修改、增加、删除、挂接运行或创作任何衍生作品,形式包括但不限于使用插件、外挂或非经<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>授权的第三方工具/服务接入软件和相关系统;
+(5)通过修改或伪造软件运行中的指令、数据,增加、删减、变动软件的功能或运行效果,或者将用于上述用途的软件、方法进行运营或向公众传播,无论这些行为是否为商业目的;
+(6)通过非<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>开发、授权的第三方软件、插件、外挂、系统,登录或使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>软件及服务或制作、发布、传播非掌上客如去开发、授权的第三方软件、插件、外挂、系统
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+十一、【知识产权声明】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+12.1您在使用本服务时须遵守法律法规,不得利用本服务从事违法违规行为,包括但不限于:
+(1)发布、传送、传播、储存危害国家安全统一、破坏社会稳定、违反公序良俗、侮辱、诽谤、淫秽、暴力以及任何违反国家法律法规的内容;
+(2)发布、传送、传播、储存侵害他人知识产权、商业秘密等合法权利的内容;
+(3)恶意虚构事实、隐瞒真相以误导、欺骗他人;
+(4)发布、传送、传播广告信息及垃圾信息
+(5)其他法律法规禁止的行为。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+12.2如果您违反了本条约定,相关国家机关或机构可能会对您提起诉讼、罚款或采取其他制裁措施,并要求<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>给予协助。造成损害的,您应依法予以赔偿,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>不承担任何责任</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+12.3如果<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>发现或收到他人举报您发布的信息违反本条约定,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有权进行独立判断并采取技术手段予以删除、屏蔽或断开链接。同时,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有权视用户的行为性质,采取包括但不限于暂停或终止服务,限制、冻结或终止用户账号的使用,追究法律责任等措施。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+12.4您违反本条约定,导致任何第三方损害的,您应当独立承担责任;<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>因此遭受损失的,您也应当并赔偿。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+十三、【遵守当地法律监管】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+13.1您在使用本服务过程中应当遵守当地相关的法律法规,并尊重当地的道德和风俗习惯。如果您的行为违反了当地法律法规或道德风俗,您应当为此独立承担责任
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+13.2您应避免因使用本服务而使<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>卷入政治和公共事件,否则<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有权暂停或终止对您的服务
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+十四、【用户发送、传播的內容与第三方投诉处理】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+14.1您通过本服务发送或传播的内容(包括但不限于网页、文字、图片、音频、视频、图表等)均由您自行承担责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+14.2您发送或传播的内容应有合法来源,相关内容为您所有或您已获得权利人的授权。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+14.3您同意<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>可为履行本协议或提供本服务的目的而使用您发送或传播的内容。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+14.4如果<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>收到权利人通知,主张您发送或传播的内容侵犯其相关权利的,您同意<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有权进行独立判断并采取删除、屏蔽或断开链接等措施
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+14.5您使用本服务时不得违反国家法律法规、侵害他人合法权益。您理解并同意,如您被他人投诉侵权或您投诉他人侵权,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有权将争议中相关方的主体联系方式、投诉相关内容等必要信息提供给其他争议方或相关部门,以便及时解决投诉纠纷,保护他人合法权
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+十五、【不可抗力及其他免责事由】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+15.1您理解并同意,在使用本服务的过程中,可能会遇到不可抗力等风险因素,使本服务发生中断。不可抗力是指不能预见、不能克服并不能避免且对一方或双方造成重大影响的客观事件,包括但不限于自然灾害如洪水、地震、瘟疫流行和风暴等以及社会事件如战争、动乱、政府行为等。岀现上述情况时,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>将努力在第一时间与相关单位配合,及时进行修复,但是由此给您造成的损失<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>在法律允许的范围内免责
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+(f)网商银行收到任何第三方对您的订单账款的权利主张。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+15.2在法律允许的范围内,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>对以下情形导致的服务中断或受阻不承担责任:
+(1)受到手机病毒、木马或其他恶意程序、黑客攻击的破坏;
+(2)用户或<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的电脑软件、系统、硬件和通信线路出现故障;
+(3)用户操作不当;
+(4)用户通过非<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>授权的方式使用本服务;
+(5)其他<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>无法控制或合理预见的情形
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+15.3您理解并同意,在使用本服务的过程中,可能会遇到网络信息或其他用户行为带来的风险,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>不对任何信息的真实性、适用性、合法性承担责任,也不对因侵权行为给您造成的损害负责。这些风险包括但不限于:
+(1)来自他人匿名或冒名的含有威胁、诽谤、令人反感或非法内容的信息
+(2)因使用本协议项下的服务,遭受他人误导、欺骗或其他导致或可能导致的任何心理、生理上的伤害以及经济上的损失;
+(3)其他因网络信息或用户行为引起的风险
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+15.4您理解并同意,本服务并非为某些特定目的而设计,包括但不限于核设施、军事用途、医疗设施、交通通讯等重要领域。如果因为软件或服务的原因导致上述操作失败而带来的人员伤亡、财产损失和环境破坏等,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>不承担法律责任。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+15.5<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>依据本协议约定获得处理违法违规内容的权利,该权利不构成<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的义务或承诺,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>不能保证及时发现违法行为或进行相应处理。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+15.6在任何情况下,您不应轻信借款、索要密码或其他涉及财产的网络信息。涉及财产操作的,请一定先核实对方身份,并请经常留意<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有关防范诈骗犯罪的提示。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+十六、【协议的生效与变更】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+16.1您使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>的服务即视为您已阅读本协议并接受本协议的约束
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+16.2<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有权在必要时修改本协议条款。您可以在相关服务页面查阅最新版本的协议条款
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+16.3本协议条款变更后,如果您继续使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>提供的软件或服务,即视为您已接受修改后的协议。如果您不接受修改后的协议,应当停止使用<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>提供的软件或服务
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+十七、【服务的变更、中断、终止】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+17.1<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>可能会对服务内容进行变更,也可能会中断、中止或终止服务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+17.2您理解并同意,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有权自主决定经营策略。在<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>发生合并、分立、收购、资产转让时,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>可向第三方转让本服务下相关资产;<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>也可在单方通知您后,将本协议下部分或全部服务转交由第三方运营或履行。具体受让主体以<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>通知的为准
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+17.3如发生下列任何一种情形,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有权不经通知而中断或终止向您提供的服务:
+(1)根据法律规定您应提交真实信息,而您提供的个人资料不真实、或与注册时信息不一致又未能提供合理证明;
+(2)您违反相关法律法规或本协议的约定;
+(3)按照法律规定或主管部门的要求;
+(4)出于安全的原因或其他必要的情形。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+17.4<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有权按本协议8.2条的约定进行收费。若您未按时足额付费,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>有权中断、中止或终止提供服务。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+17.5您有责任自行备份存储在本服务中的数据。如果您的服务被终止,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>可以从服务器上永久地删除您的数据,但法律法规另有规定的除外。服务终止后,<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>没有义务向您返还数据。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+十八、【管辖与法律适用】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+18.1本协议的成立、生效、履行、解释及纠纷解决,适用中华人民共和国大陆地区法律(不包括冲突法)。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+18.2本协议签订地为中华人民共和国四川省成都市。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+18.3若您和<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>之间发生任何纠纷或争议,首先应友好协商解决;协商不成的,您同意将纠纷或争议提交本协议签订地有管辖权的人民法院管辖。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+18.4本协议所有条款的标题仅为阅读方便,本身并无实际涵义,不能作为本协议涵义解释的依据。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+18.5本协议条款无论因何种原因部分无效或不可执行,其余条款仍有效,对双方具有约束力。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+十九、【未成年人使用条款】
+</p> 
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+19.1若用户未满18周岁,则为未成年人,应在监护人监护、指导下阅读本协议和使用本服务
+</p> 
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+19.2未成年人用户涉世未深,容易被网络虚象迷惑,且好奇心强,遇事缺乏随机应变的处理能力,很容易被别有用心的人利用而又缺乏自我保护能力。因此,未成年人用户在使用本服务时应注意以下事项,提高安全意识,加强自我保护:
+(1)认清网络世界与现实世界的区别,避免沉迷于网络,影响日常的学习生活
+(2)填写个人资料时,加强个人保护意识,以免不良分子对个人生活造成骚扰;
+(3)在监护人或老师的指导下,学习正确使用网络
+(4)避免陌生网友随意会面或参与联谊活动,以免不法分子有机可乘,危及自身安全。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+19.3监护人、学校均应对未成年人使用本服务时多做引导。特别是家长应关心子女的成长,注意与子女的沟通,指导子女上网应该注意的安全问题,防患于未然。
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+二十、【其他】
+</p>
+<p style="line-height:19pt; margin:0pt; orphans:0; text-indent:26.25pt; widows:0">
+如果您对本协议或本服务有意见或建议,可与<span style="text-decoration:underline;color:#66CCFF;">和微分平台</span>客户服务部门联系,我们会给予您必要的帮助。(正文完)
+</p>
+`
diff --git a/static/img/1.png b/static/img/1.png
new file mode 100644
index 0000000..7d492d7
--- /dev/null
+++ b/static/img/1.png
Binary files differ
diff --git a/static/img/2.png b/static/img/2.png
new file mode 100644
index 0000000..3197eb8
--- /dev/null
+++ b/static/img/2.png
Binary files differ
diff --git a/static/img/3.png b/static/img/3.png
new file mode 100644
index 0000000..eae2437
--- /dev/null
+++ b/static/img/3.png
Binary files differ
diff --git a/static/img/4.png b/static/img/4.png
new file mode 100644
index 0000000..5a8d054
--- /dev/null
+++ b/static/img/4.png
Binary files differ
diff --git a/static/img/back.png b/static/img/back.png
new file mode 100644
index 0000000..5850131
--- /dev/null
+++ b/static/img/back.png
Binary files differ
diff --git a/static/img/bg-qr-code.png b/static/img/bg-qr-code.png
new file mode 100644
index 0000000..0748e2a
--- /dev/null
+++ b/static/img/bg-qr-code.png
Binary files differ
diff --git a/static/img/bg.png b/static/img/bg.png
new file mode 100644
index 0000000..641f78f
--- /dev/null
+++ b/static/img/bg.png
Binary files differ
diff --git a/static/img/bg_code.png b/static/img/bg_code.png
new file mode 100644
index 0000000..7908d74
--- /dev/null
+++ b/static/img/bg_code.png
Binary files differ
diff --git a/static/img/bg_top.png b/static/img/bg_top.png
new file mode 100644
index 0000000..2fbcfe3
--- /dev/null
+++ b/static/img/bg_top.png
Binary files differ
diff --git a/static/img/cg.png b/static/img/cg.png
new file mode 100644
index 0000000..5708fba
--- /dev/null
+++ b/static/img/cg.png
Binary files differ
diff --git a/static/img/circle-bottom.png b/static/img/circle-bottom.png
new file mode 100644
index 0000000..83238d9
--- /dev/null
+++ b/static/img/circle-bottom.png
Binary files differ
diff --git a/static/img/circle-top.png b/static/img/circle-top.png
new file mode 100644
index 0000000..1ec6a83
--- /dev/null
+++ b/static/img/circle-top.png
Binary files differ
diff --git a/static/img/cs.png b/static/img/cs.png
new file mode 100644
index 0000000..0fa2c46
--- /dev/null
+++ b/static/img/cs.png
Binary files differ
diff --git a/static/img/ddxtlogo.png b/static/img/ddxtlogo.png
new file mode 100644
index 0000000..b40bdc9
--- /dev/null
+++ b/static/img/ddxtlogo.png
Binary files differ
diff --git a/static/img/hongbao.png b/static/img/hongbao.png
new file mode 100644
index 0000000..704fc7f
--- /dev/null
+++ b/static/img/hongbao.png
Binary files differ
diff --git a/static/img/hongbaoxiao.png b/static/img/hongbaoxiao.png
new file mode 100644
index 0000000..924e909
--- /dev/null
+++ b/static/img/hongbaoxiao.png
Binary files differ
diff --git a/static/img/img.png b/static/img/img.png
new file mode 100644
index 0000000..f846b8d
--- /dev/null
+++ b/static/img/img.png
Binary files differ
diff --git a/static/img/img_agree.png b/static/img/img_agree.png
new file mode 100644
index 0000000..3b2d47c
--- /dev/null
+++ b/static/img/img_agree.png
Binary files differ
diff --git a/static/img/img_auditing.png b/static/img/img_auditing.png
new file mode 100644
index 0000000..b08b4d9
--- /dev/null
+++ b/static/img/img_auditing.png
Binary files differ
diff --git a/static/img/img_frozen.png b/static/img/img_frozen.png
new file mode 100644
index 0000000..ccb6698
--- /dev/null
+++ b/static/img/img_frozen.png
Binary files differ
diff --git a/static/img/img_refuse.png b/static/img/img_refuse.png
new file mode 100644
index 0000000..19ea1ab
--- /dev/null
+++ b/static/img/img_refuse.png
Binary files differ
diff --git a/static/img/img_reupload.png b/static/img/img_reupload.png
new file mode 100644
index 0000000..151b888
--- /dev/null
+++ b/static/img/img_reupload.png
Binary files differ
diff --git a/static/img/ing.png b/static/img/ing.png
new file mode 100644
index 0000000..33696fc
--- /dev/null
+++ b/static/img/ing.png
Binary files differ
diff --git a/static/img/left.png b/static/img/left.png
new file mode 100644
index 0000000..f747d79
--- /dev/null
+++ b/static/img/left.png
Binary files differ
diff --git a/static/img/logo.png b/static/img/logo.png
new file mode 100644
index 0000000..dd926e3
--- /dev/null
+++ b/static/img/logo.png
Binary files differ
diff --git a/static/img/paying.png b/static/img/paying.png
new file mode 100644
index 0000000..7952f90
--- /dev/null
+++ b/static/img/paying.png
Binary files differ
diff --git a/static/img/post_agree.png b/static/img/post_agree.png
new file mode 100644
index 0000000..1a12902
--- /dev/null
+++ b/static/img/post_agree.png
Binary files differ
diff --git a/static/img/right.png b/static/img/right.png
new file mode 100644
index 0000000..6f060a4
--- /dev/null
+++ b/static/img/right.png
Binary files differ
diff --git a/static/img/share_pic.png b/static/img/share_pic.png
new file mode 100644
index 0000000..f44436a
--- /dev/null
+++ b/static/img/share_pic.png
Binary files differ
diff --git a/static/img/shsaom.png b/static/img/shsaom.png
new file mode 100644
index 0000000..f2e1a2e
--- /dev/null
+++ b/static/img/shsaom.png
Binary files differ
diff --git a/static/img/tonglian.png b/static/img/tonglian.png
new file mode 100644
index 0000000..719d922
--- /dev/null
+++ b/static/img/tonglian.png
Binary files differ
diff --git a/static/img/zxsyt.png b/static/img/zxsyt.png
new file mode 100644
index 0000000..c32a7ac
--- /dev/null
+++ b/static/img/zxsyt.png
Binary files differ
diff --git a/vue.config.js b/vue.config.js
new file mode 100644
index 0000000..8c63047
--- /dev/null
+++ b/vue.config.js
@@ -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']
+        })
+    }
+}
diff --git a/webpack.common.js b/webpack.common.js
new file mode 100644
index 0000000..386507b
--- /dev/null
+++ b/webpack.common.js
@@ -0,0 +1,133 @@
+/*
+ * @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;
+
+//打包地址
+let srcUrl = '/sib_wx_score/'
+module.exports = {
+    entry: {
+        index: "./src/index.js",
+    },
+    output: {
+        filename: 'js/[name].js',
+        path: path.resolve(__dirname, 'dist'),
+        publicPath: env ? '/sib_wx_score/' : '/' //根据线上项目路径更改 /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: 100000,
+                        outputPath: 'img/',
+                        publicPath: `${srcUrl}img`
+                        //publicPath: `/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'
+//     }]
+//     }
+// );
diff --git a/webpack.dev.js b/webpack.dev.js
new file mode 100644
index 0000000..75e817a
--- /dev/null
+++ b/webpack.dev.js
@@ -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: '127.0.0.1',
+        //服务端压缩是否开启
+        compress: true,
+        //配置服务端口号
+        port: 8011,
+        // 代理配置
+        proxy:{
+            "/sib": {
+                // 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,
+    }
+});
diff --git a/webpack.prod.js b/webpack.prod.js
new file mode 100644
index 0000000..cffc0e2
--- /dev/null
+++ b/webpack.prod.js
@@ -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']),
+    ],
+});
\ No newline at end of file

--
Gitblit v1.8.0