From 1358e52fdb0b20dee0b1b8f18e89ea041ea5f9d1 Mon Sep 17 00:00:00 2001
From: weicw <594098497@qq.com>
Date: Tue, 7 Nov 2023 17:11:57 +0800
Subject: [PATCH] 1107
---
.gitignore | 3 +
App.vue | 55 +
LICENSE.md | 21 +
README.md | 498 ++
app.config.js | 136 +
changelog.md | 1548 ++++
changelog.new.md | 8 +
common/css/app.scss | 28 +
common/css/common.css | 2075 +++++
common/css/uni.scss | 73 +
common/function/myPubFunction.js | 15 +
components/category-bar/category-bar.vue | 320 +
components/common-footer/common-footer.vue | 20 +
components/common-header/common-header.vue | 117 +
.../custom-form-section.vue | 68 +
components/page-nav/page-nav.vue | 20 +
components/right-bar/right-bar.vue | 180 +
components/top-bar/top-bar.vue | 138 +
.../vk-data-input-editor.vue | 1005 +++
index.html | 22 +
main.js | 60 +
manifest.json | 105 +
package-lock.json | 464 ++
package.json | 96 +
pages.json | 102 +
pages/auth/login/login.vue | 612 ++
pages/auth/register/register.vue | 629 ++
pages/company/company.vue | 34 +
pages/enquiry/components/template.vue | 184 +
pages/enquiry/list.vue | 254 +
pages/enquiry/release.vue | 234 +
pages/error/404/404.vue | 49 +
pages/index/index.vue | 76 +
pages/spot/goods/detail.vue | 497 ++
pages/spot/goods/goods.vue | 320 +
pages/spot/release/release.vue | 175 +
pages/user/components/business-card.vue | 211 +
pages/user/components/personal.vue | 309 +
pages/user/user.vue | 61 +
.../80705c8b12d05d0ff67a2758749ef09c.jpg | Bin 0 -> 77644 bytes
static/images/cc-top.png | Bin 0 -> 186 bytes
static/images/cl1.png | Bin 0 -> 18091 bytes
static/images/cl3.png | Bin 0 -> 18117 bytes
static/images/cl4.png | Bin 0 -> 19551 bytes
static/images/cl5.png | Bin 0 -> 18168 bytes
static/images/cl6.png | Bin 0 -> 18187 bytes
static/images/dowm.png | Bin 0 -> 229 bytes
static/images/dowm2.png | Bin 0 -> 212 bytes
static/images/home1.png | Bin 0 -> 31642 bytes
static/images/home2.png | Bin 0 -> 30567 bytes
static/images/home3.png | Bin 0 -> 29095 bytes
static/images/icon1.png | Bin 0 -> 18462 bytes
static/images/iconsmall.png | Bin 0 -> 191713 bytes
static/images/lg1.png | Bin 0 -> 18240 bytes
static/images/lg10.png | Bin 0 -> 95939 bytes
static/images/lg11.png | Bin 0 -> 95853 bytes
static/images/lg12.png | Bin 0 -> 95742 bytes
static/images/lg13.png | Bin 0 -> 17991 bytes
static/images/lg15.png | Bin 0 -> 15294 bytes
static/images/lg2.png | Bin 0 -> 18307 bytes
static/images/lg3.png | Bin 0 -> 18383 bytes
static/images/lg4.png | Bin 0 -> 17986 bytes
static/images/lg5.png | Bin 0 -> 18281 bytes
static/images/lg6.png | Bin 0 -> 18185 bytes
static/images/lg7.png | Bin 0 -> 17984 bytes
static/images/lg8.png | Bin 0 -> 18234 bytes
static/images/lg9.png | Bin 0 -> 95914 bytes
static/images/login-bg.jpg | Bin 0 -> 346154 bytes
static/images/logo-left.png | Bin 0 -> 19869 bytes
static/images/logo-left2.png | Bin 0 -> 20261 bytes
static/images/logo-small.png | Bin 0 -> 37432 bytes
static/images/logo.png | Bin 0 -> 42298 bytes
static/images/tt1.png | Bin 0 -> 20231 bytes
static/images/wx.png | Bin 0 -> 20438 bytes
static/images/后台编辑器05.jpg | Bin 0 -> 135991 bytes
static/images/后台编辑器06.jpg | Bin 0 -> 193253 bytes
static/images/后台编辑器061.jpg | Bin 0 -> 346886 bytes
static/images/后台编辑器07.jpg | Bin 0 -> 101650 bytes
static/images/后台编辑器071.jpg | Bin 0 -> 23553 bytes
static/images/后台编辑器072.jpg | Bin 0 -> 24963 bytes
static/images/后台编辑器073.jpg | Bin 0 -> 25529 bytes
static/images/后台编辑器074.jpg | Bin 0 -> 23005 bytes
static/images/后台编辑器075.jpg | Bin 0 -> 24113 bytes
store/index.js | 133 +
store/modules/$app.js | 60 +
store/modules/$user.js | 50 +
template.h5.html | 32 +
uni.scss | 2 +
.../fadada_verify_notify/index.js | 23 +
.../fadada_verify_notify/package.json | 7 +
.../cloudfunctions/router/config.js | 12 +
.../cloudfunctions/router/dao/config.js | 7 +
.../cloudfunctions/router/dao/index.js | 29 +
.../router/dao/modules/userDao.js | 621 ++
.../cloudfunctions/router/index.js | 7 +
.../cloudfunctions/router/middleware/index.js | 29 +
.../router/middleware/modules/addAdminLog.js | 63 +
.../middleware/modules/customFilter1.js | 22 +
.../middleware/modules/customFilter2.js | 19 +
.../middleware/modules/registerInitFilter.js | 46 +
.../modules/returnUserInfoFilter.js | 82 +
.../router/node_modules/.package-lock.json | 40 +
.../node_modules/crypto-js/CONTRIBUTING.md | 28 +
.../router/node_modules/crypto-js/LICENSE | 24 +
.../router/node_modules/crypto-js/README.md | 275 +
.../router/node_modules/crypto-js/aes.js | 234 +
.../router/node_modules/crypto-js/blowfish.js | 471 ++
.../router/node_modules/crypto-js/bower.json | 39 +
.../node_modules/crypto-js/cipher-core.js | 895 +++
.../router/node_modules/crypto-js/core.js | 807 ++
.../node_modules/crypto-js/crypto-js.js | 6657 +++++++++++++++++
.../crypto-js/docs/QuickStartGuide.wiki | 470 ++
.../node_modules/crypto-js/enc-base64.js | 136 +
.../node_modules/crypto-js/enc-base64url.js | 148 +
.../router/node_modules/crypto-js/enc-hex.js | 18 +
.../node_modules/crypto-js/enc-latin1.js | 18 +
.../node_modules/crypto-js/enc-utf16.js | 149 +
.../router/node_modules/crypto-js/enc-utf8.js | 18 +
.../router/node_modules/crypto-js/evpkdf.js | 134 +
.../node_modules/crypto-js/format-hex.js | 66 +
.../node_modules/crypto-js/format-openssl.js | 18 +
.../router/node_modules/crypto-js/hmac-md5.js | 18 +
.../node_modules/crypto-js/hmac-ripemd160.js | 18 +
.../node_modules/crypto-js/hmac-sha1.js | 18 +
.../node_modules/crypto-js/hmac-sha224.js | 18 +
.../node_modules/crypto-js/hmac-sha256.js | 18 +
.../node_modules/crypto-js/hmac-sha3.js | 18 +
.../node_modules/crypto-js/hmac-sha384.js | 18 +
.../node_modules/crypto-js/hmac-sha512.js | 18 +
.../router/node_modules/crypto-js/hmac.js | 143 +
.../router/node_modules/crypto-js/index.js | 18 +
.../node_modules/crypto-js/lib-typedarrays.js | 76 +
.../router/node_modules/crypto-js/md5.js | 268 +
.../router/node_modules/crypto-js/mode-cfb.js | 80 +
.../crypto-js/mode-ctr-gladman.js | 116 +
.../router/node_modules/crypto-js/mode-ctr.js | 58 +
.../router/node_modules/crypto-js/mode-ecb.js | 40 +
.../router/node_modules/crypto-js/mode-ofb.js | 54 +
.../node_modules/crypto-js/package.json | 70 +
.../node_modules/crypto-js/pad-ansix923.js | 49 +
.../node_modules/crypto-js/pad-iso10126.js | 44 +
.../node_modules/crypto-js/pad-iso97971.js | 40 +
.../node_modules/crypto-js/pad-nopadding.js | 30 +
.../node_modules/crypto-js/pad-pkcs7.js | 18 +
.../node_modules/crypto-js/pad-zeropadding.js | 47 +
.../router/node_modules/crypto-js/pbkdf2.js | 145 +
.../node_modules/crypto-js/rabbit-legacy.js | 190 +
.../router/node_modules/crypto-js/rabbit.js | 192 +
.../router/node_modules/crypto-js/rc4.js | 139 +
.../node_modules/crypto-js/ripemd160.js | 267 +
.../router/node_modules/crypto-js/sha1.js | 150 +
.../router/node_modules/crypto-js/sha224.js | 80 +
.../router/node_modules/crypto-js/sha256.js | 199 +
.../router/node_modules/crypto-js/sha3.js | 326 +
.../router/node_modules/crypto-js/sha384.js | 83 +
.../router/node_modules/crypto-js/sha512.js | 326 +
.../node_modules/crypto-js/tripledes.js | 779 ++
.../router/node_modules/crypto-js/x64-core.js | 304 +
.../node_modules/uni-config-center/index.js | 1 +
.../uni-config-center/package.json | 9 +
.../uni-config-center/uni-id/config.json | 70 +
.../alipay/alipayCertPublicKey_RSA2.crt | 3 +
.../uni-pay/alipay/alipayRootCert.crt | 15 +
.../uni-pay/alipay/appCertPublicKey.crt | 3 +
.../alipay/【重要】这里放支付宝证书.md | 5 +
.../uni-config-center/uni-pay/config.js | 128 +
.../uni-config-center/uni-pay/wxpay/wxpay.p12 | 0
.../wxpay/【重要】这里放微信支付证书.md | 3 +
.../uni-config-center/vk-unicloud/index.js | 141 +
.../uni-config-center/【重要】请先看这里.md | 73 +
.../router/node_modules/uni-id/LICENSE.md | 201 +
.../router/node_modules/uni-id/index.js | 1 +
.../node_modules/uni-config-center/index.js | 1 +
.../uni-config-center/package.json | 9 +
.../uni-config-center/uni-id/config.json | 70 +
.../alipay/alipayCertPublicKey_RSA2.crt | 3 +
.../uni-pay/alipay/alipayRootCert.crt | 15 +
.../uni-pay/alipay/appCertPublicKey.crt | 3 +
.../alipay/【重要】这里放支付宝证书.md | 5 +
.../uni-config-center/uni-pay/config.js | 128 +
.../uni-config-center/uni-pay/wxpay/wxpay.p12 | 0
.../wxpay/【重要】这里放微信支付证书.md | 3 +
.../uni-config-center/vk-unicloud/index.js | 141 +
.../uni-config-center/【重要】请先看这里.md | 73 +
.../router/node_modules/uni-id/package.json | 16 +
.../node_modules/vk-unicloud/LICENSE.md | 201 +
.../router/node_modules/vk-unicloud/index.js | 1 +
.../node_modules/vk-unicloud/package.json | 16 +
.../cloudfunctions/router/package-lock.json | 30 +
.../cloudfunctions/router/package.json | 29 +
.../cloudfunctions/router/router.param.json | 14 +
.../admin/enquiry/attributes/sys/add.js | 35 +
.../admin/enquiry/attributes/sys/delete.js | 29 +
.../admin/enquiry/attributes/sys/getList.js | 29 +
.../admin/enquiry/attributes/sys/update.js | 37 +
.../service/admin/enquiry/template/sys/add.js | 35 +
.../admin/enquiry/template/sys/delete.js | 29 +
.../admin/enquiry/template/sys/getList.js | 29 +
.../admin/enquiry/template/sys/update.js | 37 +
.../router/service/admin/kong/sys/add.js | 34 +
.../router/service/admin/kong/sys/delete.js | 29 +
.../router/service/admin/kong/sys/getList.js | 29 +
.../router/service/admin/kong/sys/update.js | 40 +
.../router/service/admin/select/kh/user.js | 96 +
.../router/service/admin/setting_config.js | 83 +
.../service/admin/site_config/sys/detail.js | 25 +
.../service/admin/site_config/sys/update.js | 29 +
.../service/admin/spot/category/sys/add.js | 66 +
.../service/admin/spot/category/sys/delete.js | 29 +
.../admin/spot/category/sys/getList.js | 29 +
.../admin/spot/category/sys/getTree.js | 45 +
.../service/admin/spot/category/sys/update.js | 67 +
.../admin/spot/category/util/formRules.js | 59 +
.../service/admin/spot/goods/sys/add.js | 38 +
.../service/admin/spot/goods/sys/delete.js | 29 +
.../service/admin/spot/goods/sys/getList.js | 29 +
.../service/admin/spot/goods/sys/getTree.js | 45 +
.../service/admin/spot/goods/sys/update.js | 35 +
.../admin/spot/goods/util/formRules.js | 59 +
.../app-upgrade-center/sys/addUpdate.js | 162 +
.../system/app-upgrade-center/sys/delete.js | 34 +
.../system/app-upgrade-center/sys/getList.js | 31 +
.../app-upgrade-center/util/formRules.js | 83 +
.../service/admin/system/app/sys/add.js | 100 +
.../admin/system/app/sys/createPublishHtml.js | 22 +
.../service/admin/system/app/sys/delete.js | 31 +
.../service/admin/system/app/sys/getInfo.js | 26 +
.../service/admin/system/app/sys/getList.js | 31 +
.../service/admin/system/app/sys/update.js | 98 +
.../app/util/createPublishHtml/index.js | 214 +
.../createPublishHtml/lib/art-template.js | 2 +
.../app/util/createPublishHtml/template.html | 241 +
.../admin/system/app/util/formRules.js | 72 +
.../service/admin/system/menu/sys/add.js | 87 +
.../service/admin/system/menu/sys/adds.js | 74 +
.../admin/system/menu/sys/bindPermission.js | 33 +
.../service/admin/system/menu/sys/delete.js | 40 +
.../service/admin/system/menu/sys/getAll.js | 31 +
.../admin/system/menu/sys/getCascader.js | 57 +
.../service/admin/system/menu/sys/update.js | 87 +
.../admin/system/menu/sys/updateBase.js | 43 +
.../admin/system/menu/util/formRules.js | 80 +
.../admin/system/permission/sys/add.js | 96 +
.../admin/system/permission/sys/delete.js | 39 +
.../admin/system/permission/sys/getAll.js | 30 +
.../admin/system/permission/sys/update.js | 97 +
.../admin/system/permission/sys/updateBase.js | 40 +
.../system/permission/sys/updateCategory.js | 34 +
.../system/permission/sys/updateLevel.js | 34 +
.../admin/system/permission/util/formRules.js | 46 +
.../service/admin/system/role/sys/add.js | 58 +
.../service/admin/system/role/sys/bindMenu.js | 49 +
.../admin/system/role/sys/bindPermission.js | 40 +
.../service/admin/system/role/sys/delete.js | 28 +
.../service/admin/system/role/sys/getList.js | 63 +
.../service/admin/system/role/sys/update.js | 50 +
.../admin/system/role/sys/updateBase.js | 37 +
.../admin/system/role/util/formRules.js | 43 +
.../service/admin/system/user/sys/add.js | 93 +
.../system/user/sys/batchUpdateAppLogin.js | 78 +
.../system/user/sys/batchUpdateInviterUid.js | 42 +
.../system/user/sys/batchUpdateStatus.js | 40 +
.../service/admin/system/user/sys/bindRole.js | 29 +
.../service/admin/system/user/sys/delete.js | 32 +
.../service/admin/system/user/sys/getList.js | 54 +
.../admin/system/user/sys/resetPassword.js | 27 +
.../service/admin/system/user/sys/update.js | 102 +
.../admin/system/user/util/formRules.js | 81 +
.../admin/system_uni/admin-log/sys/getList.js | 32 +
.../system_uni/components-dynamic/sys/add.js | 61 +
.../components-dynamic/sys/delete.js | 32 +
.../components-dynamic/sys/getList.js | 32 +
.../components-dynamic/sys/update.js | 69 +
.../admin/system_uni/global-data/sys/add.js | 59 +
.../system_uni/global-data/sys/delete.js | 33 +
.../system_uni/global-data/sys/getList.js | 32 +
.../system_uni/global-data/sys/update.js | 52 +
.../system_uni/global-data/util/formRules.js | 64 +
.../system_uni/pay-orders/sys/afreshNotice.js | 117 +
.../system_uni/pay-orders/sys/getList.js | 29 +
.../uni-id-files/categories/kh/getList.js | 33 +
.../uni-id-files/categories/sys/add.js | 51 +
.../uni-id-files/categories/sys/delete.js | 30 +
.../uni-id-files/categories/sys/update.js | 57 +
.../uni-id-files/files/kh/delete.js | 60 +
.../uni-id-files/files/kh/getList.js | 40 +
.../uni-id-files/files/kh/update.js | 64 +
.../system_uni/uni-id-log/sys/getList.js | 66 +
.../router/service/admin/后台PC管理端.md | 17 +
.../client/enquiry/attributes/pub/getList.js | 43 +
.../client/enquiry/attributes/pub/getOne.js | 44 +
.../service/client/enquiry/sheet/kh/add.js | 63 +
.../client/enquiry/template/pub/getList.js | 42 +
.../router/service/client/fadada.js | 196 +
.../router/service/client/order/kh/test.js | 23 +
.../router/service/client/order/pub/test.js | 23 +
.../router/service/client/pub.test.js | 105 +
.../client/spot/category/pub/getList.js | 27 +
.../client/spot/category/pub/getTree.js | 42 +
.../client/spot/goods/kh/addCooperate.js | 69 +
.../service/client/spot/goods/kh/addUpdate.js | 46 +
.../client/spot/goods/kh/getSelfOne.js | 28 +
.../client/spot/goods/pub/getDetail.js | 75 +
.../service/client/spot/goods/pub/getList.js | 72 +
.../service/client/user/kh/setBusinessCard.js | 23 +
.../router/service/client/user/kh/test.js | 23 +
.../router/service/client/user/pub/test.js | 23 +
.../service/client/小程序、h5、APP客户端.md | 11 +
.../cloudfunctions/router/service/muban.js | 35 +
.../router/service/muban_easy.js | 23 +
.../router/service/muban_object.js | 67 +
.../plugs/baidu/client/pub/getAccessToken.js | 21 +
.../baidu/client/pub/ocr/business_license.js | 29 +
.../plugs/baidu/client/pub/ocr/idcard.js | 29 +
.../client/pub/getComponentsDynamicData.js | 37 +
.../components_dynamic/client/pub/init.js | 138 +
.../components_dynamic/client/pub/update.js | 29 +
.../router/service/plugs/插件.md | 15 +
.../template/db_api/pub/Promise.all.js | 54 +
.../router/service/template/db_api/pub/add.js | 40 +
.../service/template/db_api/pub/adds.js | 50 +
.../router/service/template/db_api/pub/avg.js | 27 +
.../service/template/db_api/pub/count.js | 33 +
.../router/service/template/db_api/pub/del.js | 33 +
.../service/template/db_api/pub/deleteById.js | 25 +
.../service/template/db_api/pub/findById.js | 33 +
.../template/db_api/pub/findByWhereJson.js | 38 +
.../router/service/template/db_api/pub/geo.js | 33 +
.../service/template/db_api/pub/getList.js | 73 +
.../service/template/db_api/pub/groupCount.js | 38 +
.../router/service/template/db_api/pub/max.js | 27 +
.../router/service/template/db_api/pub/min.js | 27 +
.../service/template/db_api/pub/sample.js | 27 +
.../service/template/db_api/pub/select.js | 30 +
.../service/template/db_api/pub/select2.js | 50 +
.../service/template/db_api/pub/selects.js | 51 +
.../template/db_api/pub/selects_geo.js | 47 +
.../template/db_api/pub/selects_getOne.js | 48 +
.../db_api/pub/selects_inviter_uid.js | 45 +
.../template/db_api/pub/selects_mode_2.js | 43 +
.../template/db_api/pub/selects_mode_3.js | 44 +
.../router/service/template/db_api/pub/sum.js | 29 +
.../service/template/db_api/pub/tree.js | 36 +
.../service/template/db_api/pub/update.js | 30 +
.../template/db_api/pub/updateAndReturn.js | 63 +
.../service/template/db_api/pub/updateById.js | 29 +
.../router/service/template/db_api/sys/add.js | 33 +
.../service/template/db_api/sys/delete.js | 30 +
.../service/template/db_api/sys/getList.js | 30 +
.../service/template/db_api/sys/update.js | 39 +
.../openapi/alipay/pub/code2Session.js | 30 +
.../openapi/alipay/pub/getMiniCode.js | 24 +
.../openapi/douyin/pub/code2Session.js | 34 +
.../openapi/douyin/pub/getMiniCode.js | 46 +
.../openapi/douyin/pub/imgSecCheck.js | 38 +
.../openapi/douyin/pub/msgSecCheck.js | 36 +
.../template/openapi/qq/pub/code2Session.js | 32 +
.../template/openapi/qq/pub/imgSecCheck.js | 39 +
.../template/openapi/qq/pub/msgSecCheck.js | 36 +
.../openapi/weixin/pub/getTemplateList.js | 27 +
.../openapi/weixin/pub/imgSecCheck.js | 39 +
.../openapi/weixin/pub/msgSecCheck.js | 48 +
.../openapi/weixin/pub/sendMessage.js | 45 +
.../openapi/weixin/pub/sendTemplateMessage.js | 59 +
.../openapi/weixin/pub/sendUniformMessage.js | 59 +
.../service/template/test/pub/addition.js | 32 +
.../template/test/pub/findGoodsInfo.js | 202 +
.../template/test/pub/temporaryCache.js | 36 +
.../router/service/template/云函数示例模板.md | 11 +
.../router/service/user/kh/acceptInvite.js | 25 +
.../router/service/user/kh/addUploadRecord.js | 75 +
.../router/service/user/kh/bindAlipay.js | 24 +
.../router/service/user/kh/bindEmail.js | 23 +
.../router/service/user/kh/bindMobile.js | 23 +
.../router/service/user/kh/bindNewEmail.js | 72 +
.../router/service/user/kh/bindNewMobile.js | 70 +
.../router/service/user/kh/bindQQ.js | 23 +
.../router/service/user/kh/bindWeixin.js | 24 +
.../service/user/kh/getAlipayMiniCode.js | 25 +
.../router/service/user/kh/getInvitedUser.js | 34 +
.../router/service/user/kh/getMenu.js | 30 +
.../router/service/user/kh/getMyUserInfo.js | 16 +
.../router/service/user/kh/getQQMiniCode.js | 45 +
.../service/user/kh/getWeixinMPqrcode.js | 57 +
.../service/user/kh/getWeixinMPscheme.js | 41 +
.../router/service/user/kh/getWeixinMPurl.js | 38 +
.../router/service/user/kh/resetPwd.js | 24 +
.../router/service/user/kh/setAvatar.js | 37 +
.../service/user/kh/setCertification.js | 60 +
.../service/user/kh/setUserInviteCode.js | 32 +
.../router/service/user/kh/unbindAlipay.js | 24 +
.../router/service/user/kh/unbindEmail.js | 25 +
.../router/service/user/kh/unbindMobile.js | 25 +
.../router/service/user/kh/unbindQQ.js | 23 +
.../router/service/user/kh/unbindWeixin.js | 24 +
.../router/service/user/kh/updatePwd.js | 26 +
.../router/service/user/kh/updateUser.js | 32 +
.../router/service/user/pub/checkToken.js | 27 +
.../router/service/user/pub/checkVersion.js | 152 +
.../service/user/pub/code2SessionAlipay.js | 37 +
.../service/user/pub/code2SessionWeixin.js | 41 +
.../router/service/user/pub/getPhoneNumber.js | 23 +
.../user/pub/getUserInfoByInviteCode.js | 36 +
.../router/service/user/pub/login.js | 55 +
.../router/service/user/pub/loginByAlipay.js | 55 +
.../router/service/user/pub/loginByEmail.js | 56 +
.../router/service/user/pub/loginByQQ.js | 58 +
.../router/service/user/pub/loginBySms.js | 95 +
.../service/user/pub/loginByUniverify.js | 74 +
.../router/service/user/pub/loginByWeixin.js | 58 +
.../user/pub/loginByWeixinPhoneNumber.js | 99 +
.../router/service/user/pub/logout.js | 24 +
.../router/service/user/pub/register.js | 61 +
.../service/user/pub/resetPasswordByEmail.js | 52 +
.../service/user/pub/resetPasswordByMobile.js | 52 +
.../router/service/user/pub/sendEmailCode.js | 112 +
.../router/service/user/pub/sendSmsCode.js | 86 +
.../router/service/user/sys/encryptPwd.js | 28 +
.../router/service/user/sys/setVerifyCode.js | 27 +
.../router/service/user/util/login_log.js | 72 +
.../router/service/user/统一用户中心.md | 12 +
.../router/service/逻辑层目录说明.md | 47 +
.../cloudfunctions/router/util/pubFunction.js | 95 +
.../cloudfunctions/router/util/urlrewrite.js | 15 +
uniCloud-aliyun/database/JQL查询.jql | 12 +
uniCloud-aliyun/database/db_init.json | 939 +++
uni_modules/uni-config-center/changelog.md | 6 +
uni_modules/uni-config-center/package.json | 81 +
uni_modules/uni-config-center/readme.md | 93 +
.../common/uni-config-center/index.js | 1 +
.../common/uni-config-center/package.json | 9 +
.../uni-config-center/uni-id/config.json | 70 +
.../alipay/alipayCertPublicKey_RSA2.crt | 3 +
.../uni-pay/alipay/alipayRootCert.crt | 15 +
.../uni-pay/alipay/appCertPublicKey.crt | 3 +
.../alipay/【重要】这里放支付宝证书.md | 5 +
.../uni-config-center/uni-pay/config.js | 128 +
.../uni-config-center/uni-pay/wxpay/wxpay.p12 | 0
.../wxpay/【重要】这里放微信支付证书.md | 3 +
.../uni-config-center/vk-unicloud/index.js | 141 +
.../uni-config-center/【重要】请先看这里.md | 73 +
uni_modules/uni-id/changelog.md | 111 +
uni_modules/uni-id/package.json | 85 +
uni_modules/uni-id/readme.md | 33 +
.../cloudfunctions/common/uni-id/LICENSE.md | 201 +
.../cloudfunctions/common/uni-id/index.js | 1 +
.../node_modules/uni-config-center/index.js | 1 +
.../uni-config-center/package.json | 9 +
.../uni-config-center/uni-id/config.json | 70 +
.../alipay/alipayCertPublicKey_RSA2.crt | 3 +
.../uni-pay/alipay/alipayRootCert.crt | 15 +
.../uni-pay/alipay/appCertPublicKey.crt | 3 +
.../alipay/【重要】这里放支付宝证书.md | 5 +
.../uni-config-center/uni-pay/config.js | 128 +
.../uni-config-center/uni-pay/wxpay/wxpay.p12 | 0
.../wxpay/【重要】这里放微信支付证书.md | 3 +
.../uni-config-center/vk-unicloud/index.js | 141 +
.../uni-config-center/【重要】请先看这里.md | 73 +
.../cloudfunctions/common/uni-id/package.json | 16 +
uni_modules/vk-unicloud/changelog.md | 1248 +++
.../vk-data-verification-code.vue | 320 +
uni_modules/vk-unicloud/index.js | 7 +
uni_modules/vk-unicloud/package.json | 86 +
uni_modules/vk-unicloud/readme.md | 572 ++
.../common/vk-unicloud/LICENSE.md | 201 +
.../common/vk-unicloud/index.js | 1 +
.../common/vk-unicloud/package.json | 16 +
.../vk_modules/vk-unicloud-page/index.js | 190 +
.../libs/function/aliyunOSSUtil.js | 274 +
.../libs/function/debounce.js | 34 +
.../libs/function/deepClone.js | 23 +
.../libs/function/deepMerge.js | 30 +
.../vk-unicloud-page/libs/function/index.js | 2430 ++++++
.../vk-unicloud-page/libs/function/modal.js | 326 +
.../libs/function/permission.js | 33 +
.../libs/function/queryParams.js | 60 +
.../libs/function/setClipboardData.js | 51 +
.../libs/function/throttle.js | 37 +
.../libs/function/timeUtil.js | 642 ++
.../libs/function/treeUtil.js | 93 +
.../libs/function/updateManager.js | 61 +
.../libs/function/vk.filters.js | 63 +
.../vk-unicloud-page/libs/function/vk.h5.js | 60 +
.../libs/function/vk.importObject.js | 59 +
.../libs/function/vk.localStorage.js | 131 +
.../libs/function/vk.navigate.js | 462 ++
.../libs/function/vk.request.js | 434 ++
.../libs/function/vk.sessionStorage.js | 146 +
.../libs/function/weixin-js-sdk.js | 890 +++
.../libs/install/console.log.js | 18 +
.../vk-unicloud-page/libs/mixin/mixin.js | 40 +
.../libs/openapi/baidu/index.js | 170 +
.../vk-unicloud-page/libs/openapi/index.js | 14 +
.../vk-unicloud-page/libs/store/libs/error.js | 25 +
.../libs/store/mixin/mixin.js | 67 +
.../vk-unicloud-callFunctionUtil.js | 1040 +++
.../vk-unicloud/vk-unicloud-user-center.js | 1068 +++
uni_modules/vk-uview-ui/changelog.md | 150 +
.../u-action-sheet/u-action-sheet.vue | 246 +
.../components/u-alert-tips/u-alert-tips.vue | 260 +
.../u-avatar-cropper/u-avatar-cropper.vue | 290 +
.../components/u-avatar-cropper/weCropper.js | 1256 ++++
.../components/u-avatar/u-avatar.vue | 270 +
.../components/u-back-top/u-back-top.vue | 153 +
.../components/u-badge/u-badge.vue | 216 +
.../components/u-button/u-button.vue | 661 ++
.../components/u-calendar/u-calendar.vue | 666 ++
.../u-car-keyboard/u-car-keyboard.vue | 267 +
.../vk-uview-ui/components/u-card/u-card.vue | 300 +
.../components/u-cell-group/u-cell-group.vue | 70 +
.../components/u-cell-item/u-cell-item.vue | 317 +
.../u-checkbox-group/u-checkbox-group.vue | 178 +
.../components/u-checkbox/u-checkbox.vue | 336 +
.../u-circle-progress/u-circle-progress.vue | 227 +
.../vk-uview-ui/components/u-col/u-col.vue | 157 +
.../u-collapse-item/u-collapse-item.vue | 206 +
.../components/u-collapse/u-collapse.vue | 100 +
.../u-column-notice/u-column-notice.vue | 238 +
.../components/u-count-down/u-count-down.vue | 175 +
.../components/u-count-down/utils.js | 62 +
.../components/u-count-to/u-count-to.vue | 266 +
.../components/u-divider/u-divider.vue | 159 +
.../u-dropdown-item/u-dropdown-item.vue | 166 +
.../components/u-dropdown/u-dropdown.vue | 299 +
.../components/u-empty/u-empty.vue | 193 +
.../components/u-field/u-field.vue | 402 +
.../components/u-form-item/u-form-item.vue | 509 ++
.../vk-uview-ui/components/u-form/u-form.vue | 148 +
.../u-full-screen/u-full-screen.vue | 52 +
.../vk-uview-ui/components/u-gap/u-gap.vue | 54 +
.../components/u-grid-item/u-grid-item.vue | 127 +
.../vk-uview-ui/components/u-grid/u-grid.vue | 109 +
.../vk-uview-ui/components/u-icon/u-icon.vue | 369 +
.../components/u-image/u-image.vue | 283 +
.../u-index-anchor/u-index-anchor.vue | 89 +
.../components/u-index-list/u-index-list.vue | 315 +
.../components/u-input/u-input.vue | 465 ++
.../components/u-keyboard/u-keyboard.vue | 285 +
.../components/u-lazy-load/u-lazy-load.vue | 254 +
.../u-line-progress/u-line-progress.vue | 147 +
.../vk-uview-ui/components/u-line/u-line.vue | 84 +
.../vk-uview-ui/components/u-link/u-link.vue | 89 +
.../u-loading-page/u-loading-page.vue | 25 +
.../components/u-loading/u-loading.vue | 108 +
.../components/u-loadmore/u-loadmore.vue | 204 +
.../vk-uview-ui/components/u-mask/u-mask.vue | 137 +
.../u-message-input/u-message-input.vue | 327 +
.../components/u-modal/u-modal.vue | 339 +
.../components/u-navbar/u-navbar.vue | 315 +
.../components/u-no-network/u-no-network.vue | 233 +
.../components/u-notice-bar/u-notice-bar.vue | 273 +
.../components/u-number-box/u-number-box.vue | 476 ++
.../u-number-keyboard/u-number-keyboard.vue | 170 +
.../components/u-parse/u-parse.vue | 673 ++
.../components/u-picker/u-picker.vue | 932 +++
.../components/u-popup/u-popup.vue | 485 ++
.../u-radio-group/u-radio-group.vue | 177 +
.../components/u-radio/u-radio.vue | 277 +
.../vk-uview-ui/components/u-rate/u-rate.vue | 293 +
.../components/u-read-more/u-read-more.vue | 191 +
.../components/u-row-notice/u-row-notice.vue | 270 +
.../vk-uview-ui/components/u-row/u-row.vue | 85 +
.../components/u-search/u-search.vue | 357 +
.../components/u-section/u-section.vue | 155 +
.../components/u-select/u-select.vue | 458 ++
.../components/u-skeleton/u-skeleton.vue | 199 +
.../components/u-slider/u-slider.vue | 290 +
.../components/u-steps/u-steps.vue | 200 +
.../components/u-sticky/u-sticky.vue | 166 +
.../components/u-subsection/u-subsection.vue | 402 +
.../u-swipe-action/u-swipe-action.vue | 256 +
.../components/u-swiper-indicator.vue | 135 +
.../u-swiper-plus/u-swiper-plus.vue | 529 ++
.../components/u-swiper/u-swiper.vue | 341 +
.../components/u-switch/u-switch.vue | 191 +
.../components/u-tabbar/u-tabbar.vue | 375 +
.../components/u-table/u-table.vue | 85 +
.../u-tabs-swiper/u-tabs-swiper.vue | 489 ++
.../vk-uview-ui/components/u-tabs/u-tabs.vue | 399 +
.../vk-uview-ui/components/u-tag/u-tag.vue | 295 +
.../vk-uview-ui/components/u-td/u-td.vue | 66 +
.../vk-uview-ui/components/u-th/u-th.vue | 62 +
.../u-time-line-item/u-time-line-item.vue | 83 +
.../components/u-time-line/u-time-line.vue | 43 +
.../components/u-toast/u-toast.vue | 220 +
.../components/u-top-tips/u-top-tips.vue | 121 +
.../vk-uview-ui/components/u-tr/u-tr.vue | 25 +
.../components/u-trees/CssHandler.js | 100 +
.../components/u-trees/MpHtmlParser.js | 581 ++
.../vk-uview-ui/components/u-trees/config.js | 80 +
.../components/u-trees/u-trees.vue | 534 ++
.../components/u-upload/u-upload.vue | 728 ++
.../u-verification-code.vue | 175 +
.../components/u-waterfall/u-waterfall.vue | 199 +
.../components/vk-uview-ui/vk-uview-ui.vue | 15 +
uni_modules/vk-uview-ui/iconfont.css | 910 +++
uni_modules/vk-uview-ui/index.js | 149 +
uni_modules/vk-uview-ui/index.scss | 23 +
.../vk-uview-ui/libs/address/areas.json | 1 +
.../vk-uview-ui/libs/address/citys.json | 1 +
.../vk-uview-ui/libs/address/provinces.json | 1 +
uni_modules/vk-uview-ui/libs/config/config.js | 15 +
uni_modules/vk-uview-ui/libs/config/zIndex.js | 20 +
uni_modules/vk-uview-ui/libs/css/color.scss | 155 +
uni_modules/vk-uview-ui/libs/css/common.scss | 176 +
.../libs/css/style.components.scss | 7 +
.../vk-uview-ui/libs/css/style.h5.scss | 8 +
.../vk-uview-ui/libs/css/style.mp.scss | 72 +
.../vk-uview-ui/libs/css/style.nvue.scss | 3 +
.../vk-uview-ui/libs/css/style.vue.scss | 175 +
.../vk-uview-ui/libs/function/$parent.js | 18 +
.../vk-uview-ui/libs/function/addStyle.js | 42 +
.../vk-uview-ui/libs/function/addUnit.js | 8 +
uni_modules/vk-uview-ui/libs/function/bem.js | 4 +
.../vk-uview-ui/libs/function/color.js | 37 +
.../libs/function/colorGradient.js | 134 +
.../vk-uview-ui/libs/function/debounce.js | 29 +
.../vk-uview-ui/libs/function/deepClone.js | 23 +
.../vk-uview-ui/libs/function/deepMerge.js | 30 +
.../vk-uview-ui/libs/function/getParent.js | 47 +
uni_modules/vk-uview-ui/libs/function/guid.js | 41 +
uni_modules/vk-uview-ui/libs/function/md5.js | 385 +
.../vk-uview-ui/libs/function/queryParams.js | 58 +
.../vk-uview-ui/libs/function/random.js | 10 +
.../vk-uview-ui/libs/function/randomArray.js | 7 +
.../vk-uview-ui/libs/function/route.js | 122 +
uni_modules/vk-uview-ui/libs/function/sys.js | 9 +
uni_modules/vk-uview-ui/libs/function/test.js | 287 +
.../vk-uview-ui/libs/function/throttle.js | 34 +
.../vk-uview-ui/libs/function/timeFormat.js | 51 +
.../vk-uview-ui/libs/function/timeFrom.js | 47 +
.../vk-uview-ui/libs/function/toast.js | 9 +
uni_modules/vk-uview-ui/libs/function/trim.js | 15 +
.../vk-uview-ui/libs/function/type2icon.js | 35 +
uni_modules/vk-uview-ui/libs/mixin/mixin.js | 86 +
uni_modules/vk-uview-ui/libs/mixin/mpShare.js | 18 +
uni_modules/vk-uview-ui/libs/request/index.js | 169 +
uni_modules/vk-uview-ui/libs/store/index.js | 19 +
.../vk-uview-ui/libs/util/async-validator.js | 1356 ++++
uni_modules/vk-uview-ui/libs/util/emitter.js | 64 +
uni_modules/vk-uview-ui/package.json | 82 +
uni_modules/vk-uview-ui/readme.md | 125 +
uni_modules/vk-uview-ui/theme.scss | 38 +
643 files changed, 84924 insertions(+)
create mode 100644 .gitignore
create mode 100644 App.vue
create mode 100644 LICENSE.md
create mode 100644 README.md
create mode 100644 app.config.js
create mode 100644 changelog.md
create mode 100644 changelog.new.md
create mode 100644 common/css/app.scss
create mode 100644 common/css/common.css
create mode 100644 common/css/uni.scss
create mode 100644 common/function/myPubFunction.js
create mode 100644 components/category-bar/category-bar.vue
create mode 100644 components/common-footer/common-footer.vue
create mode 100644 components/common-header/common-header.vue
create mode 100644 components/custom-form-section/custom-form-section.vue
create mode 100644 components/page-nav/page-nav.vue
create mode 100644 components/right-bar/right-bar.vue
create mode 100644 components/top-bar/top-bar.vue
create mode 100644 components/vk-data-input-editor/vk-data-input-editor.vue
create mode 100644 index.html
create mode 100644 main.js
create mode 100644 manifest.json
create mode 100644 package-lock.json
create mode 100644 package.json
create mode 100644 pages.json
create mode 100644 pages/auth/login/login.vue
create mode 100644 pages/auth/register/register.vue
create mode 100644 pages/company/company.vue
create mode 100644 pages/enquiry/components/template.vue
create mode 100644 pages/enquiry/list.vue
create mode 100644 pages/enquiry/release.vue
create mode 100644 pages/error/404/404.vue
create mode 100644 pages/index/index.vue
create mode 100644 pages/spot/goods/detail.vue
create mode 100644 pages/spot/goods/goods.vue
create mode 100644 pages/spot/release/release.vue
create mode 100644 pages/user/components/business-card.vue
create mode 100644 pages/user/components/personal.vue
create mode 100644 pages/user/user.vue
create mode 100644 static/images/80705c8b12d05d0ff67a2758749ef09c.jpg
create mode 100644 static/images/cc-top.png
create mode 100644 static/images/cl1.png
create mode 100644 static/images/cl3.png
create mode 100644 static/images/cl4.png
create mode 100644 static/images/cl5.png
create mode 100644 static/images/cl6.png
create mode 100644 static/images/dowm.png
create mode 100644 static/images/dowm2.png
create mode 100644 static/images/home1.png
create mode 100644 static/images/home2.png
create mode 100644 static/images/home3.png
create mode 100644 static/images/icon1.png
create mode 100644 static/images/iconsmall.png
create mode 100644 static/images/lg1.png
create mode 100644 static/images/lg10.png
create mode 100644 static/images/lg11.png
create mode 100644 static/images/lg12.png
create mode 100644 static/images/lg13.png
create mode 100644 static/images/lg15.png
create mode 100644 static/images/lg2.png
create mode 100644 static/images/lg3.png
create mode 100644 static/images/lg4.png
create mode 100644 static/images/lg5.png
create mode 100644 static/images/lg6.png
create mode 100644 static/images/lg7.png
create mode 100644 static/images/lg8.png
create mode 100644 static/images/lg9.png
create mode 100644 static/images/login-bg.jpg
create mode 100644 static/images/logo-left.png
create mode 100644 static/images/logo-left2.png
create mode 100644 static/images/logo-small.png
create mode 100644 static/images/logo.png
create mode 100644 static/images/tt1.png
create mode 100644 static/images/wx.png
create mode 100644 static/images/后台编辑器05.jpg
create mode 100644 static/images/后台编辑器06.jpg
create mode 100644 static/images/后台编辑器061.jpg
create mode 100644 static/images/后台编辑器07.jpg
create mode 100644 static/images/后台编辑器071.jpg
create mode 100644 static/images/后台编辑器072.jpg
create mode 100644 static/images/后台编辑器073.jpg
create mode 100644 static/images/后台编辑器074.jpg
create mode 100644 static/images/后台编辑器075.jpg
create mode 100644 store/index.js
create mode 100644 store/modules/$app.js
create mode 100644 store/modules/$user.js
create mode 100644 template.h5.html
create mode 100644 uni.scss
create mode 100644 uniCloud-aliyun/cloudfunctions/fadada_verify_notify/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/fadada_verify_notify/package.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/config.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/dao/config.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/dao/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/dao/modules/userDao.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/middleware/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/middleware/modules/addAdminLog.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/middleware/modules/customFilter1.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/middleware/modules/customFilter2.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/middleware/modules/registerInitFilter.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/middleware/modules/returnUserInfoFilter.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/.package-lock.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/CONTRIBUTING.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/LICENSE
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/README.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/aes.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/blowfish.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/bower.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/cipher-core.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/core.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/crypto-js.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/docs/QuickStartGuide.wiki
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/enc-base64.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/enc-base64url.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/enc-hex.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/enc-latin1.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/enc-utf16.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/enc-utf8.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/evpkdf.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/format-hex.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/format-openssl.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/hmac-md5.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/hmac-ripemd160.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/hmac-sha1.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/hmac-sha224.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/hmac-sha256.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/hmac-sha3.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/hmac-sha384.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/hmac-sha512.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/hmac.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/lib-typedarrays.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/md5.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/mode-cfb.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/mode-ctr-gladman.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/mode-ctr.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/mode-ecb.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/mode-ofb.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/package.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/pad-ansix923.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/pad-iso10126.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/pad-iso97971.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/pad-nopadding.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/pad-pkcs7.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/pad-zeropadding.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/pbkdf2.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/rabbit-legacy.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/rabbit.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/rc4.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/ripemd160.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/sha1.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/sha224.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/sha256.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/sha3.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/sha384.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/sha512.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/tripledes.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/crypto-js/x64-core.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/package.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/uni-id/config.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/uni-pay/alipay/alipayCertPublicKey_RSA2.crt
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/uni-pay/alipay/alipayRootCert.crt
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/uni-pay/alipay/appCertPublicKey.crt
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/uni-pay/alipay/【重要】这里放支付宝证书.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/uni-pay/config.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/uni-pay/wxpay/wxpay.p12
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/uni-pay/wxpay/【重要】这里放微信支付证书.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/vk-unicloud/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-config-center/【重要】请先看这里.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/LICENSE.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/package.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/uni-id/config.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/uni-pay/alipay/alipayCertPublicKey_RSA2.crt
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/uni-pay/alipay/alipayRootCert.crt
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/uni-pay/alipay/appCertPublicKey.crt
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/uni-pay/alipay/【重要】这里放支付宝证书.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/uni-pay/config.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/uni-pay/wxpay/wxpay.p12
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/uni-pay/wxpay/【重要】这里放微信支付证书.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/vk-unicloud/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/node_modules/uni-config-center/【重要】请先看这里.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/uni-id/package.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/vk-unicloud/LICENSE.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/vk-unicloud/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/node_modules/vk-unicloud/package.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/package-lock.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/package.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/router.param.json
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/enquiry/attributes/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/enquiry/attributes/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/enquiry/attributes/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/enquiry/attributes/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/enquiry/template/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/enquiry/template/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/enquiry/template/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/enquiry/template/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/kong/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/kong/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/kong/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/kong/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/select/kh/user.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/setting_config.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/site_config/sys/detail.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/site_config/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/category/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/category/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/category/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/category/sys/getTree.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/category/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/category/util/formRules.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/goods/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/goods/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/goods/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/goods/sys/getTree.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/goods/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/spot/goods/util/formRules.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app-upgrade-center/sys/addUpdate.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app-upgrade-center/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app-upgrade-center/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app-upgrade-center/util/formRules.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/sys/createPublishHtml.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/sys/getInfo.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/util/createPublishHtml/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/util/createPublishHtml/lib/art-template.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/util/createPublishHtml/template.html
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/util/formRules.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/adds.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/bindPermission.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/getAll.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/getCascader.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/updateBase.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/util/formRules.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/getAll.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/updateBase.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/updateCategory.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/updateLevel.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/util/formRules.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/bindMenu.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/bindPermission.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/updateBase.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/util/formRules.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/batchUpdateAppLogin.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/batchUpdateInviterUid.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/batchUpdateStatus.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/bindRole.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/resetPassword.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/util/formRules.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/admin-log/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/components-dynamic/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/components-dynamic/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/components-dynamic/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/components-dynamic/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/global-data/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/global-data/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/global-data/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/global-data/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/global-data/util/formRules.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/pay-orders/sys/afreshNotice.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/pay-orders/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/categories/kh/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/categories/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/categories/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/categories/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/files/kh/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/files/kh/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/files/kh/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-log/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/admin/后台PC管理端.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/enquiry/attributes/pub/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/enquiry/attributes/pub/getOne.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/enquiry/sheet/kh/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/enquiry/template/pub/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/fadada.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/order/kh/test.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/order/pub/test.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/pub.test.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/spot/category/pub/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/spot/category/pub/getTree.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/spot/goods/kh/addCooperate.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/spot/goods/kh/addUpdate.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/spot/goods/kh/getSelfOne.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/spot/goods/pub/getDetail.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/spot/goods/pub/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/user/kh/setBusinessCard.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/user/kh/test.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/user/pub/test.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/client/小程序、h5、APP客户端.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/muban.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/muban_easy.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/muban_object.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/plugs/baidu/client/pub/getAccessToken.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/plugs/baidu/client/pub/ocr/business_license.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/plugs/baidu/client/pub/ocr/idcard.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/plugs/components_dynamic/client/pub/getComponentsDynamicData.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/plugs/components_dynamic/client/pub/init.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/plugs/components_dynamic/client/pub/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/plugs/插件.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/Promise.all.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/adds.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/avg.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/count.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/del.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/deleteById.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/findById.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/findByWhereJson.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/geo.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/groupCount.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/max.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/min.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/sample.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/select.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/select2.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects_geo.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects_getOne.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects_inviter_uid.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects_mode_2.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects_mode_3.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/sum.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/tree.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/updateAndReturn.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/updateById.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/sys/add.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/sys/delete.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/sys/getList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/db_api/sys/update.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/alipay/pub/code2Session.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/alipay/pub/getMiniCode.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/douyin/pub/code2Session.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/douyin/pub/getMiniCode.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/douyin/pub/imgSecCheck.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/douyin/pub/msgSecCheck.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/qq/pub/code2Session.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/qq/pub/imgSecCheck.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/qq/pub/msgSecCheck.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/weixin/pub/getTemplateList.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/weixin/pub/imgSecCheck.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/weixin/pub/msgSecCheck.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/weixin/pub/sendMessage.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/weixin/pub/sendTemplateMessage.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/openapi/weixin/pub/sendUniformMessage.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/test/pub/addition.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/test/pub/findGoodsInfo.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/test/pub/temporaryCache.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/template/云函数示例模板.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/acceptInvite.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/addUploadRecord.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindAlipay.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindEmail.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindMobile.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindNewEmail.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindNewMobile.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindQQ.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindWeixin.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/getAlipayMiniCode.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/getInvitedUser.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/getMenu.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/getMyUserInfo.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/getQQMiniCode.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/getWeixinMPqrcode.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/getWeixinMPscheme.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/getWeixinMPurl.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/resetPwd.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/setAvatar.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/setCertification.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/setUserInviteCode.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/unbindAlipay.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/unbindEmail.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/unbindMobile.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/unbindQQ.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/unbindWeixin.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/updatePwd.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/kh/updateUser.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/checkToken.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/checkVersion.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/code2SessionAlipay.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/code2SessionWeixin.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/getPhoneNumber.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/getUserInfoByInviteCode.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/login.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/loginByAlipay.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/loginByEmail.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/loginByQQ.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/loginBySms.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/loginByUniverify.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/loginByWeixin.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/loginByWeixinPhoneNumber.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/logout.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/register.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/resetPasswordByEmail.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/resetPasswordByMobile.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/sendEmailCode.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/pub/sendSmsCode.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/sys/encryptPwd.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/sys/setVerifyCode.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/util/login_log.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/user/统一用户中心.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/service/逻辑层目录说明.md
create mode 100644 uniCloud-aliyun/cloudfunctions/router/util/pubFunction.js
create mode 100644 uniCloud-aliyun/cloudfunctions/router/util/urlrewrite.js
create mode 100644 uniCloud-aliyun/database/JQL查询.jql
create mode 100644 uniCloud-aliyun/database/db_init.json
create mode 100644 uni_modules/uni-config-center/changelog.md
create mode 100644 uni_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-config-center/readme.md
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/package.json
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-pay/alipay/alipayCertPublicKey_RSA2.crt
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-pay/alipay/alipayRootCert.crt
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-pay/alipay/appCertPublicKey.crt
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-pay/alipay/【重要】这里放支付宝证书.md
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-pay/config.js
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-pay/wxpay/wxpay.p12
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-pay/wxpay/【重要】这里放微信支付证书.md
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/vk-unicloud/index.js
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/【重要】请先看这里.md
create mode 100644 uni_modules/uni-id/changelog.md
create mode 100644 uni_modules/uni-id/package.json
create mode 100644 uni_modules/uni-id/readme.md
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/LICENSE.md
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/index.js
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/index.js
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/uni-id/config.json
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/uni-pay/alipay/alipayCertPublicKey_RSA2.crt
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/uni-pay/alipay/alipayRootCert.crt
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/uni-pay/alipay/appCertPublicKey.crt
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/uni-pay/alipay/【重要】这里放支付宝证书.md
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/uni-pay/config.js
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/uni-pay/wxpay/wxpay.p12
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/uni-pay/wxpay/【重要】这里放微信支付证书.md
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/vk-unicloud/index.js
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/node_modules/uni-config-center/【重要】请先看这里.md
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package.json
create mode 100644 uni_modules/vk-unicloud/changelog.md
create mode 100644 uni_modules/vk-unicloud/components/vk-data-verification-code/vk-data-verification-code.vue
create mode 100644 uni_modules/vk-unicloud/index.js
create mode 100644 uni_modules/vk-unicloud/package.json
create mode 100644 uni_modules/vk-unicloud/readme.md
create mode 100644 uni_modules/vk-unicloud/uniCloud/cloudfunctions/common/vk-unicloud/LICENSE.md
create mode 100644 uni_modules/vk-unicloud/uniCloud/cloudfunctions/common/vk-unicloud/index.js
create mode 100644 uni_modules/vk-unicloud/uniCloud/cloudfunctions/common/vk-unicloud/package.json
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/index.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/aliyunOSSUtil.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/debounce.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/deepClone.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/deepMerge.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/index.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/modal.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/permission.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/queryParams.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/setClipboardData.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/throttle.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/timeUtil.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/treeUtil.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/updateManager.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/vk.filters.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/vk.h5.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/vk.importObject.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/vk.localStorage.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/vk.navigate.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/vk.request.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/vk.sessionStorage.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/weixin-js-sdk.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/install/console.log.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/mixin/mixin.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/openapi/baidu/index.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/openapi/index.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/store/libs/error.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/store/mixin/mixin.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/vk-unicloud/vk-unicloud-callFunctionUtil.js
create mode 100644 uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/vk-unicloud/vk-unicloud-user-center.js
create mode 100644 uni_modules/vk-uview-ui/changelog.md
create mode 100644 uni_modules/vk-uview-ui/components/u-action-sheet/u-action-sheet.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-alert-tips/u-alert-tips.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-avatar-cropper/weCropper.js
create mode 100644 uni_modules/vk-uview-ui/components/u-avatar/u-avatar.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-back-top/u-back-top.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-badge/u-badge.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-button/u-button.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-calendar/u-calendar.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-car-keyboard/u-car-keyboard.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-card/u-card.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-cell-group/u-cell-group.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-cell-item/u-cell-item.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-checkbox-group/u-checkbox-group.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-checkbox/u-checkbox.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-circle-progress/u-circle-progress.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-col/u-col.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-collapse-item/u-collapse-item.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-collapse/u-collapse.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-column-notice/u-column-notice.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-count-down/u-count-down.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-count-down/utils.js
create mode 100644 uni_modules/vk-uview-ui/components/u-count-to/u-count-to.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-divider/u-divider.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-dropdown-item/u-dropdown-item.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-dropdown/u-dropdown.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-empty/u-empty.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-field/u-field.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-form-item/u-form-item.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-form/u-form.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-full-screen/u-full-screen.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-gap/u-gap.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-grid-item/u-grid-item.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-grid/u-grid.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-icon/u-icon.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-image/u-image.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-index-anchor/u-index-anchor.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-index-list/u-index-list.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-input/u-input.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-keyboard/u-keyboard.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-lazy-load/u-lazy-load.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-line-progress/u-line-progress.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-line/u-line.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-link/u-link.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-loading-page/u-loading-page.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-loading/u-loading.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-loadmore/u-loadmore.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-mask/u-mask.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-message-input/u-message-input.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-modal/u-modal.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-navbar/u-navbar.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-no-network/u-no-network.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-notice-bar/u-notice-bar.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-number-box/u-number-box.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-number-keyboard/u-number-keyboard.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-parse/u-parse.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-picker/u-picker.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-popup/u-popup.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-radio-group/u-radio-group.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-radio/u-radio.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-rate/u-rate.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-read-more/u-read-more.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-row-notice/u-row-notice.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-row/u-row.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-search/u-search.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-section/u-section.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-select/u-select.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-skeleton/u-skeleton.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-slider/u-slider.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-steps/u-steps.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-sticky/u-sticky.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-subsection/u-subsection.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-swipe-action/u-swipe-action.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-swiper-plus/components/u-swiper-indicator.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-swiper-plus/u-swiper-plus.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-swiper/u-swiper.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-switch/u-switch.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-tabbar/u-tabbar.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-table/u-table.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-tabs/u-tabs.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-tag/u-tag.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-td/u-td.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-th/u-th.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-time-line-item/u-time-line-item.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-time-line/u-time-line.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-toast/u-toast.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-top-tips/u-top-tips.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-tr/u-tr.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-trees/CssHandler.js
create mode 100644 uni_modules/vk-uview-ui/components/u-trees/MpHtmlParser.js
create mode 100644 uni_modules/vk-uview-ui/components/u-trees/config.js
create mode 100644 uni_modules/vk-uview-ui/components/u-trees/u-trees.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-upload/u-upload.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-verification-code/u-verification-code.vue
create mode 100644 uni_modules/vk-uview-ui/components/u-waterfall/u-waterfall.vue
create mode 100644 uni_modules/vk-uview-ui/components/vk-uview-ui/vk-uview-ui.vue
create mode 100644 uni_modules/vk-uview-ui/iconfont.css
create mode 100644 uni_modules/vk-uview-ui/index.js
create mode 100644 uni_modules/vk-uview-ui/index.scss
create mode 100644 uni_modules/vk-uview-ui/libs/address/areas.json
create mode 100644 uni_modules/vk-uview-ui/libs/address/citys.json
create mode 100644 uni_modules/vk-uview-ui/libs/address/provinces.json
create mode 100644 uni_modules/vk-uview-ui/libs/config/config.js
create mode 100644 uni_modules/vk-uview-ui/libs/config/zIndex.js
create mode 100644 uni_modules/vk-uview-ui/libs/css/color.scss
create mode 100644 uni_modules/vk-uview-ui/libs/css/common.scss
create mode 100644 uni_modules/vk-uview-ui/libs/css/style.components.scss
create mode 100644 uni_modules/vk-uview-ui/libs/css/style.h5.scss
create mode 100644 uni_modules/vk-uview-ui/libs/css/style.mp.scss
create mode 100644 uni_modules/vk-uview-ui/libs/css/style.nvue.scss
create mode 100644 uni_modules/vk-uview-ui/libs/css/style.vue.scss
create mode 100644 uni_modules/vk-uview-ui/libs/function/$parent.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/addStyle.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/addUnit.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/bem.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/color.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/colorGradient.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/debounce.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/deepClone.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/deepMerge.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/getParent.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/guid.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/md5.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/queryParams.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/random.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/randomArray.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/route.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/sys.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/test.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/throttle.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/timeFormat.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/timeFrom.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/toast.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/trim.js
create mode 100644 uni_modules/vk-uview-ui/libs/function/type2icon.js
create mode 100644 uni_modules/vk-uview-ui/libs/mixin/mixin.js
create mode 100644 uni_modules/vk-uview-ui/libs/mixin/mpShare.js
create mode 100644 uni_modules/vk-uview-ui/libs/request/index.js
create mode 100644 uni_modules/vk-uview-ui/libs/store/index.js
create mode 100644 uni_modules/vk-uview-ui/libs/util/async-validator.js
create mode 100644 uni_modules/vk-uview-ui/libs/util/emitter.js
create mode 100644 uni_modules/vk-uview-ui/package.json
create mode 100644 uni_modules/vk-uview-ui/readme.md
create mode 100644 uni_modules/vk-uview-ui/theme.scss
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8bbff90
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/.hbuilderx
+/node_modules
+/unpackage
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..ac01cf9
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,55 @@
+
+
+
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..9461fd6
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 VK
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2e9a3ce
--- /dev/null
+++ b/README.md
@@ -0,0 +1,498 @@
+### uniCloud云函数路由框架研究Q群:22466457 如有问题或建议可以在群内讨论。
+### 插件名称:`vk-unicloud-router`
+### 作者:VK
+
+## 序
+##### 如果你热爱编程,想快速入门云开发,欢迎使用`vk-unicloud`系列开发框架
+##### 无需转变开发习惯,0成本上手云开发。
+##### 框架内置了众多API、工具包,为你的业务扫平障碍。使你的项目刚起步进度就是50%(微信登录、短信、验证码、缓存、生成小程序码等等)
+##### 从此你又get一个新技能,只需用js,轻松搞定前后台整体业务。
+##### 完整框架项目地址:
+##### `client端`框架地址: [https://ext.dcloud.net.cn/plugin?id=2204](https://ext.dcloud.net.cn/plugin?id=2204)
+##### `admin端`框架地址:[https://ext.dcloud.net.cn/plugin?id=5043](https://ext.dcloud.net.cn/plugin?name=vk-unicloud-admin)
+##### `client端`框架文档:[点击查看](https://vkdoc.fsq.pub/client/)
+##### `admin端`框架文档:[点击查看](https://vkdoc.fsq.pub/admin/)
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+## 主要功能 以及 对开发者的价值
+
+#### 1、实现云函数路由模式(同时支持对云对象的路由)
+* 1.1、路由模式不使用任何第三方包,兼容性强,运行稳定
+* 1.2、减少云函数数量,云函数有个数限制(用一个云函数即可实现多个云函数效果)
+* 1.3、部分通用的代码块可以放在公共区执行,具有公共函数的效果,增加代码复用率,便于维护。
+* 1.4、可以在开发环境和生产环境中任意切换,开发时,用开发环境,开发过程中不会影响到线上环境。(具体切换方法在文档最后)
+* 1.5、美化云函数请求过程中的日志排版,使请求日志一目了然。(再也不用为日志分散,难找而头疼)
+* 1.6、可以强制关闭云端服务(适用于需要临时关闭后端服务的情况,如腾讯云迁移数据到阿里云时需要先关闭服务,否则迁移过程中会有新数据产生)
+
+#### 2、实现 `全局过滤器`,过滤非法请求。您无需关心用户角色权限问题。
+
+#### 3、众多现成的 `JS API`,让您无需重复造轮子。(持续增加中)
+
+#### 4、众多现成的 `云函数 API`,为您的业务扫平障碍,让您可以专注于自身业务开发。(微信登录、短信、验证码、缓存、生成小程序码等等)(持续增加中)
+
+#### 5、全面支持 `url化` 的云函数请求,您无需关心url化后参数的获取问题
+
+#### 6、已集成 `uni-id` 当前版本: `3.3.28`(已支持真实发送邮箱验证码和短信验证码)
+* 6.1、由于每个应用基本都会用上用户系统,官方建议所有 `uniCloud` 应用均使用 `uni-id` 作为用户体系,
+有了统一的账户规范,并且围绕这套账户规范,有各种各样插件,那么开发者可以随意整合这些插件,让数据连同。
+
+* 6.2、同时方便其他用户使用 `unicloud` 插件发布者发布的前后端一体插件,只需要导入一个云函数即可。
+(如导入一个社区插件,可能要导入几十个云函数,而使用此云函数路由后,只需导入一个云函数,且已集成 `uni-id`,打通账号体系)。
+
+#### 7、在 `uni-id` 基础上升级为 `vk.userCenter` 用户中心API 通过this.vk.userCenter 即可调用 [传送门](https://vkdoc.fsq.pub/client/vk.userCenter.html)
+
+#### 8、封装 `uni.callFunction` 和 `uni.request` 使之合二为一 通过this.vk.callFunction 调用
+
+#### 9、`vk.baseDao` 数据库API,使小白也能轻松上手对数据库的调用。 [传送门](https://vkdoc.fsq.pub/client/uniCloud/db/api.html)
+
+#### 10、`vk.baseDao.selects` 数据库万能连表查询API [传送门](https://vkdoc.fsq.pub/client/uniCloud/db/selects.html)
+
+#### 11、`商品SKU选择器组件`(打造uni插件市场功能最全的SKU选择器组件)[传送门](https://ext.dcloud.net.cn/plugin?id=2848)
+
+#### 12、对 `Vuex` 进行了深度封装(支持持久化),现在可以很方便的使用Vuex进行读取和储存。[传送门](https://vkdoc.fsq.pub/client/pages/vuex.html)
+
+#### 13、自定义过滤器(在业务云函数执行之前(或之后),统一拦截,进行过滤后再放行,支持设置多个过滤器,并按指定顺序执行)[传送门](https://vkdoc.fsq.pub/client/uniCloud/middleware/filter.html)
+
+#### 14、支持设置需要登录的页面列表或不需要登录的页面列表(通过本地token检测,无网络请求,支持通配符写法)[传送门](https://vkdoc.fsq.pub/client/pages/config.html)
+
+#### 15、支持设置可以被分享的页面列表或禁止分享的页面列表(支持通配符写法)[传送门](https://vkdoc.fsq.pub/client/pages/config.html)
+
+#### 16、`vk.localStorage` 封装本地缓存的curd,同时具有监听缓存被更新和被删除的功能。[传送门](https://vkdoc.fsq.pub/client/pages/localStorage.html)
+
+#### 17、美化云函数请求过程中的日志排版,使请求日志一目了然。
+
+
+
+#### 18、可以 `强制关闭` 云端服务(适用于需要临时关闭后端服务的情况,如腾讯云迁移数据到阿里云时需要先关闭服务,否则迁移过程中会有新数据产生)
+
+#### 19、全局数据缓存API,现在可以很方便的在云函数中使用缓存。 [传送门](https://vkdoc.fsq.pub/client/uniCloud/cache/cache.html)
+
+#### 20【全网首家】云函数URL化之URL重写 [传送门](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/urlrewrite.html)
+
+#### 21、千人群交流开发心得,助你避坑,作者亲自在群内解答框架使用问题,让你轻松上手 `uniCloud云开发`。
+
+#### 22、其他好处…
+
+### 目前已集成的服务端API
+
+#### 1、微信小程序服务端API [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin.html)
+
+#### 2、微信公众号服务端API [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin-h5.html)
+
+#### 3、百度开放平台服务端API [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/baidu.html)
+
+#### 4、短信发送 [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/sms.html)
+
+#### 5、邮箱发送 [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/mail.html)
+
+#### 6、Redis [传送门](https://vkdoc.fsq.pub/vk-redis/)
+
+##### 插件部分API功能体验地址
+
+
+
+## 快速上手 - 安装步骤
+
+## 后端(云函数端)安装步骤
+打开 `uniCloud/cloudfunctions` 目录
+
+#### 前置工作:修改云函数全局配置文件(用到微信登录的必须要配置)[微信小程序配置详细教程](https://vkdoc.fsq.pub/client/question/q12.html)
+#### 注意:
+* 1、开发微信小程序和APP微信登录需要额外配置 manifest.json 以及 uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json 这2个配置文件,且改动配置后需要重新上传 公共模块 和 router 函数。
+* 2、若你的电脑没有安装 Node.js,则无法使用 npm 命令。
+* 3、Node.js 安装包及源码下载地址为:[https://nodejs.org/en/download/](https://nodejs.org/en/download/)
+* 4、Node.js 安装教程:[https://www.runoob.com/nodejs/nodejs-install-setup.html](https://www.runoob.com/nodejs/nodejs-install-setup.html)
+
+查看 `uni-id/config.json` 代码格式 [点击查看](https://vkdoc.fsq.pub/client/uniCloud/config/uni-id.html)
+
+
+#### 正式安装
+
+直接右键`uniCloud`目录 点击 `运行云服务空间初始化向导` 即可
+
+## 前端(页面端)安装步骤
+
+### 自 `client` 端框架 `2.6.0` 起,不再内置任何 UI 框架,你可以选择自己喜欢的 UI 组件库进行开发。
+
+### 集成 `vk-uview-ui`(vue2.0版)
+
+___若不想集成 `vk-uview-ui` 可跳过此处___
+
+适合开发:H5、App(vue版本)、微信小程序、支付宝小程序(其他小程序未验证)
+
+> 插件市场导入 `vk-uview-ui` 框架:[点击前往](https://ext.dcloud.net.cn/plugin?id=6692)
+
+* 1、main.js 引入 vk-uview-ui
+
+```js
+import uView from './uni_modules/vk-uview-ui';
+Vue.use(uView);
+```
+
+* 2、App.vue 引入基础样式(注意style标签需声明scss属性支持)
+
+```html
+
+```
+
+* 3、uni.scss 引入全局 scss 变量文件
+
+```css
+@import "@/uni_modules/vk-uview-ui/theme.scss";
+```
+
+
+### 集成 `vk-uview-ui`(vue3.0版)
+
+___若不想集成 `vk-uview-ui` 可跳过此处___
+
+适合开发:H5、App(vue版本)、微信小程序(其他小程序未验证)
+
+> 插件市场导入 `vk-uview-ui` 框架:[点击前往](https://ext.dcloud.net.cn/plugin?id=6692)
+
+不建议把老项目 升级到 Vue3.0 (升级非常麻烦,建议新项目才考虑是否使用Vue3.0)
+
+___注意:目前(2020-11-18) `uniapp` 的 `Vue3.0` 版本只兼容:H5、App、微信小程序___
+
+* 1、前置步骤:修改 `manifest.json` 内的 `vue` 版本为 `vue3`
+* 2、项目根目录新增 `index.html` 文件,文件代码为
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+* 3、main.js 引入 vk-uview-ui
+
+```js
+// 引入 uView UI
+import uView from './uni_modules/vk-uview-ui';
+
+import { createSSRApp } from 'vue'
+
+export function createApp() {
+ const app = createSSRApp(App)
+
+ // 使用 uView UI
+ app.use(uView)
+
+ return { app }
+}
+
+```
+
+* 4、App.vue 引入基础样式(注意style标签需声明scss属性支持)
+
+```html
+
+```
+
+* 5、uni.scss 引入全局 scss 变量文件
+
+```css
+@import "@/uni_modules/vk-uview-ui/theme.scss";
+```
+
+
+### 集成 `uview-ui`(nvue2.0版)
+
+___若不想集成 `uview-ui` 可跳过此处___
+
+适合开发:App(nvue版本),如果你只开发App,推荐用这个UI
+
+> 插件市场导入 `uview-ui` 框架:[点击前往](https://ext.dcloud.net.cn/plugin?id=1593)
+
+* 1、main.js 引入 uview-ui
+
+```js
+import uView from './uni_modules/uview-ui';
+Vue.use(uView);
+```
+
+* 2、App.vue 引入基础样式(注意style标签需声明scss属性支持)
+
+```html
+
+```
+
+* 3、uni.scss 引入全局 scss 变量文件
+
+```css
+@import "@/uni_modules/uview-ui/theme.scss";
+```
+
+### 集成 `uview-ui`(nvue3.0版)
+
+别想了,uniapp官方也还没支持。
+
+### 组件库并不限制只能从以上选择,理论上支持任何UI组件库进行开发。
+
+### 卸载 `uView1` 的步骤
+
+* 1、main.js 删除 uView1
+
+```js
+import uView from 'uview-ui'
+Vue.use(uView);
+```
+
+* 2、App.vue 删除基础样式
+
+```html
+
+```
+
+* 3、uni.scss 删除全局 scss 变量文件
+
+```css
+@import "uview-ui/theme.scss";
+```
+
+* 4、pages.json 删除 easycom 规则
+
+```js
+"easycom": {
+ "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue",
+},
+```
+
+* 5、package.json 删除 uview-ui 依赖
+
+```js
+"dependencies": {
+ "uview-ui": "^1.8.3"
+},
+```
+
+* 6、package-lock.json 删除 uview-ui 依赖
+
+```js
+"dependencies": {
+ "uview-ui": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.3.tgz",
+ "integrity": "sha512-DqKc+qRrOZLPcyfWv4b0HspSS9n1Cd6BbgKiYEv9rjTAnWoqJV7rXsvWqZdr5iKGP5EMNbNS741GLNw4sIHbpw=="
+ }
+}
+```
+
+### 完整安装文档:[查看完整安装文档](https://vkdoc.fsq.pub/client/quickstart.html)
+
+## 云函数框架目录结构
+
+```
+.
+├── common─────────────────# 自定义官方公共模块包
+│ └── config──────────────────# 全局配置公共模块
+│ └── uni-id──────────────────# uni-id官方公共模块
+│ └── vk-unicloud─────────────# vk-unicloud公共模块
+├── router─────────────────# 正式环境云函数主入口(函数路由器)
+│ └── dao──────────────────# dao层(数据库交互公共API)
+│ └── middleware───────────# 中间层(过滤器、拦截器)
+│ └── node_modules─────────# npm包
+│ └── service──────────────# 逻辑层(用于写业务逻辑)
+│ ── └── 逻辑层目录结构在下方单独展示
+│ └── util─────────────────# 工具包
+│ ── └── pubFunction.js───────# 公共函数包
+│ ── └── smsUtil.js───────────# 全局过滤器
+│ └── config.js────────────# 入口函数初始化配置
+│ └── index.js─────────────# 入口函数
+│ └── package.json─────────# 第三方依赖配置文件(若使用npm,自动生成)
+└─└── package-lock.json────# 第三方依赖配置文件(若使用npm,自动生成)
+.
+├── router-test───────────────# 函数路由(开发测试环境)
+│ └── ...─────────# ...
+│ └── ...─────────# ...
+└── └── ...─────────# ...
+```
+
+### 逻辑层目录结构
+#### `router/service` 目录为逻辑层
+#### 以下的目录并非强制性,只是建议,便于统一开发规范。
+
+```
+.
+├── service──────────────────────# 逻辑层(用于写业务逻辑)
+│ └── admin────────────────# 后台管理端逻辑(admin框架开发中。。。)
+│ ── └── xxxxxxxxxxxxxxx──────#
+│ ── └── xxxxxxxxxxxxxxx──────#
+│ ── └── xxxxxxxxxxxxxxx──────#
+│ ── └── xxxxxxxxxxxxxxx──────#
+│ └── client───────────────# 客户端逻辑(H5、小程序、APP)
+│ ── └── user─────────────────# 用户服务(自己系统的逻辑)
+│ ──── └── kh───────────────────# kh函数为必须登录后才能访问的函数
+│ ──── └── pub──────────────────# pub函数为所有人都可以访问,不限制
+│ ──── └── util─────────────────# 用户服务专用的工具包
+│ ── └── order────────────────# 订单服务(自己系统的逻辑)
+│ ──── └── kh───────────────────# kh函数为必须登录后才能访问的函数
+│ ──── └── pub──────────────────# pub函数为所有人都可以访问,不限制
+│ ──── └── util─────────────────# 订单服务专用的工具包
+│ ── └── xxxxxxxxxxxxxxx──────#
+│ ── └── xxxxxxxxxxxxxxx──────#
+│ └── common───────────────# 公共逻辑(公共接口)
+│ ── └── xxxxxxxxxxxxxxxx─────#
+│ ── └── xxxxxxxxxxxxxxxx─────#
+│ ── └── xxxxxxxxxxxxxxxx─────#
+│ └── user─────────────────# 统一用户中心服务(已集成uniID)(用户中心作为核心,且为了方便插件升级,故与admin和client平级)
+│ ── └── kh───────────────────# kh函数为必须登录后才能访问的函数(客户端用户)
+│ ── └── pub──────────────────# pub函数为所有人都可以访问,不限制
+│ ── └── sys──────────────────# sys函数为后端管理人员才能访问的函数(商家后台工作人员)
+│ ── └── util─────────────────# 统一用户中心服务专用的工具包
+│ └── plugs───────────────# 插件逻辑(插件专用)(会陆续新增一些实用性插件给开发者使用,如微信小程序发送订阅消息等等)
+│ ──└── plugs-A───────────────────# 插件A
+│ ────└── admin───────────────────# 插件A admin端
+│ ────└── client──────────────────# 插件A client端
+│ ──└── plugs-B───────────────────# 插件B
+│ ────└── admin───────────────────# 插件B admin端
+│ ────└── client──────────────────# 插件B client端
+│ └── template─────────────# 云函数模板(插件内的云函数写法模板)
+│ ── └── db_api───────────────# 数据库接口调用模板
+│ └── muban.js─────────────# 云函数模板(新建一个云函数应复制粘贴这个文件)
+│ └── muban_easy.js────────# 云函数模板(简易版)
+└─────────────────────────────────
+```
+
+
+## 云函数service模板文件示例
+```js
+module.exports = {
+ /**
+ * 此函数名称
+ * @url user/sys/test1 前端调用的url参数地址
+ * @description 此函数描述
+ * @params {Object} data 请求参数
+ * @params {String} uniIdToken 用户token
+ * @params {String} userInfo 当前登录用户信息(同理,是可信任的)(只有kh函数才带此参数)
+ * @params {Object} util 公共工具包
+ * @params {Object} filterResponse 过滤器返回的数据
+ * @params {Object} originalParam 原始请求参数(包含了原始event和context)
+ * data 请求参数 说明
+ * @params {String} uid 当前登录用户id,若用户已登录且token有效,则data中会带uid参数
+ * (此参数是后端过滤器通过token获取并添加到data中的,是可信任的)(只有kh函数才带此参数)
+ * res 返回参数说明
+ * @params {Number} code 错误码,0表示成功
+ * @params {String} msg 详细信息
+ */
+ main: async (event) => {
+ let { data = {}, userInfo, util, filterResponse, originalParam } = event;
+ let { customUtil, uniID, config, pubFun, vk , db, _ } = util;
+ let { uid } = data;
+ let res = { code : 0, msg : '' };
+ // 业务逻辑开始-----------------------------------------------------------
+ // 可写与数据库的交互逻辑等等
+
+
+ // 业务逻辑结束-----------------------------------------------------------
+ return res;
+ }
+}
+```
+#### 成功时返回
+```js
+// 注意:所有成功请求必须返回code:0 code为其他值,代表失败,如兑换失败,您的积分不足!
+// 如成功时返回 res.code = 0 表示执行成功;
+return {
+ code : 0,
+ msg : '兑换成功!'
+}
+```
+#### 失败时返回
+```js
+return {
+ code : -1,
+ msg : '兑换失败,您的积分不足!'
+}
+
+```
+
+## this.vk.callFunction函数的参数说明
+```js
+/**
+ * 云函数请求封装 - 统一入口
+ * @description 通过云函数路由,1个云函数实现多个云函数的效果。
+ * @params {String} url 请求路径,该路径实为router云函数的service目录下的路径
+ * @params {Object} data 请求参数
+ * @params {String} title 遮罩层提示语,为空或不传则代表不显示遮罩层。
+ * @params {Boolean} isRequest 是否使用云函数url化地址访问云函数,默认false
+ * @params {Boolean} needAlert 为true代表请求错误时,会有alert弹窗提示。默认为true
+ * @params {Function} success 请求成功时,执行的回调函数
+ * @params {Function} fail 请求失败时,执行的回调函数
+ * @params {Function} complete 无论请求成功与否,都会执行的回调函数
+ */
+```
+
+
+## 前端调用云函数示例
+
+```js
+
+this.vk.callFunction({
+ url: 'user/kh/setAvatar',
+ title:'请求中...',
+ data:{
+ avatar: "https://xxxxxxx.jpg"
+ },
+ success(data) {
+ // 修改成功
+ }
+});
+
+```
+
+## 云函数url化方式调用云函数示例
+
+[点击查看『云函数url化』方式调用云函数示例](https://vkdoc.fsq.pub/client/pages/callFunctionForUrl.html)
+
+## 前端非法token拦截器
+
+[点击查看『前端非法token拦截器』](https://vkdoc.fsq.pub/client/pages/interceptor1.html)
+
+## vk.baseDao数据库API
+
+[点击查看『vk.baseDao』数据库API](https://vkdoc.fsq.pub/client/uniCloud/db/api.html)
+
+## 设置全局请求参数
+
+[点击查看『设置全局请求参数』](https://vkdoc.fsq.pub/client/pages/updateRequestGlobalParam.html)
+
+## 列表渲染前后端一体模板
+
+[点击查看『列表渲染』前后端一体模板](https://vkdoc.fsq.pub/client/pages/list.html)
+
+## 商品SKU选择器组件
+
+[点击查看『商品SKU选择器组件』](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=2912199&doc_id=975983)
+
+## 如何切换 正式环境 和 开发环境
+
+[点击查看如何『切换正式环境和开发环境』](https://vkdoc.fsq.pub/client/question/q1.html)
+
+## 本插件更新步骤
+[点击查看本插件『更新步骤』](https://vkdoc.fsq.pub/client/changeGuide.html)
+
+## uniCloud云函数路由框架研究Q群:`22466457` 如有问题或建议可以在群内讨论。
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
\ No newline at end of file
diff --git a/app.config.js b/app.config.js
new file mode 100644
index 0000000..9ddc687
--- /dev/null
+++ b/app.config.js
@@ -0,0 +1,136 @@
+// 引入自定义公共函数
+import myPubFunction from '@/common/function/myPubFunction.js'
+export default {
+ // 开发模式启用调式模式(请求时会打印日志)
+ debug: process.env.NODE_ENV !== 'production',
+ // 主云函数名称
+ functionName: "router",
+ // 登录页面路径
+ login: {
+ url: '/pages/auth/login/login'
+ },
+ // 首页页面路径
+ index: {
+ url: '/pages/index/index'
+ },
+ // 404 Not Found 错误页面路径
+ error: {
+ url: '/pages/error/404/404'
+ },
+ // 前端默认时区(中国为8)
+ targetTimezone:8,
+ // 日志风格
+ logger: {
+ colorArr: [
+ "#0095f8",
+ "#67C23A"
+ ]
+ },
+ /**
+ * app主题颜色
+ * vk.getVuex('$app.color.main')
+ * vk.getVuex('$app.color.secondary')
+ */
+ color: {
+ main: "#ff4444",
+ secondary: "#555555"
+ },
+ // 需要检查是否登录的页面列表
+ checkTokenPages: {
+ /**
+ * 如果 mode = 0 则代表自动检测
+ * 如果 mode = 1 则代表list内的页面需要登录,不在list内的页面不需要登录
+ * 如果 mode = 2 则代表list内的页面不需要登录,不在list内的页面需要登录
+ * 注意1: list内是通配符表达式,非正则表达式
+ * 注意2: 需要使用 vk.navigateTo 代替 uni.navigateTo 进行页面跳转才会生效
+ * 注意3: 想要让 tabbar 页面必须登录才能访问,则需要手动在页面的onLoad里加 vk.pubfn.checkLogin();
+ * 在无需登录的页面上执行kh或sys函数,也会自动判断是否登录,未登录会自动跳登录页面,登录成功后会自动返回本来要跳转的页面。
+ */
+ mode: 2,
+ list: [
+ "/pages_template/*",
+ "/pages/auth/*",
+ "/pages/index/*",
+ "/pages/error/*"
+ ]
+ },
+ // 需要检查是否可以分享的页面列表(仅小程序有效)
+ checkSharePages: {
+ /**
+ * 如果 mode = 0 则不做处理
+ * 如果 mode = 1 则代表list内的页面可以被分享,不在list内的页面不可以被分享
+ * 如果 mode = 2 则代表list内的页面不可以被分享,不在list内的页面可以被分享
+ * 注意: list内是通配符表达式,非正则表达式
+ */
+ mode: 0,
+ // ['shareAppMessage', 'shareTimeline'],
+ menus: ['shareAppMessage'],
+ list: [
+ "/pages/index/*",
+ "/pages/goods/*",
+ "/pages_template/*",
+ ]
+ },
+ // 静态文件的资源URL地址
+ staticUrl: {
+ // Logo
+ logo: '/static/logo.png',
+ },
+ // 自定义公共函数,myPubFunction内的函数可通过vk.myfn.xxx() 调用
+ myfn: myPubFunction,
+ // 第三方服务配置
+ service: {
+ // 密钥和签名信息 (由于签名的获取比较麻烦,建议初学者使用上传到unicloud的方案,上传到阿里云OSS是给有特殊需求的用户使用)
+ // 相关文档 : https://help.aliyun.com/document_detail/31925.html?spm=a2c4g.11186623.6.1757.b7987d9czoFCVu
+ aliyunOSS: {
+ // 密钥和签名信息
+ uploadData: {
+ OSSAccessKeyId: "",
+ policy: "",
+ signature: "",
+ },
+ // oss上传地址
+ action: "https://xxx.oss-cn-hangzhou.aliyuncs.com",
+ // 根目录名称
+ dirname: "test",
+ // oss外网访问地址,也可以是阿里云cdn地址
+ host: "https://xxx.xxx.com",
+ // 上传时,是否按用户id进行分组储存
+ groupUserId: true,
+ // 是否默认上传到阿里云OSS
+ isDefault: false
+ }
+ },
+ // 全局异常码,可以自定义提示结果
+ globalErrorCode: {
+ // 阿里云10秒非正常超时,其实请求还在执行(且一般已经成功了,但前端接受不到成功结果)
+ "cloudfunction-unusual-timeout": "请求超时,但请求还在执行,请重新进入页面。",
+ // 请求超时(真正的请求超时)
+ "cloudfunction-timeout": "请求超时,请重试!",
+ // 不在预期内的异常(如数据库异常、云函数编译异常等)
+ "cloudfunction-system-error": "网络开小差了!"
+ },
+ // 自定义拦截器
+ interceptor: {
+
+ // login:function(obj){
+ // let { vk, params, res } = obj;
+ // //console.log("params:",params);
+ // //console.log("res:",res);
+ // if(!params.noAlert){
+ // vk.alert(res.msg);
+ // }
+ // console.log("跳自己的登录页面");
+ // // 上方代码可自己修改,写成你自己的逻辑处理。
+ // },
+
+ // fail:function(obj){
+ // let { vk, params, res } = obj;
+ // //console.log("params:",params);
+ // //console.log("res:",res);
+ // return false;// 返回false则取消框架内置fail的逻辑,返回true则会继续执行框架内置fail的逻辑
+ // // 上方代码可自己修改,写成你自己的逻辑处理。
+ // }
+
+ }
+}
diff --git a/changelog.md b/changelog.md
new file mode 100644
index 0000000..de49f53
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,1548 @@
+## 2.15.3(2023-09-25)
+* 【修复】`短信发送` 接口当uni-id配置成多端隔离(数组形式)会报错的bug
+* 【修复】`vk.importObject` 部分情况下会报错的问题
+* 【优化】如果当前运行的微信小程序是体验版,但没有点HBX的【发行】菜单发布,则提示开发者请点【发行】按钮
+* 【优化】`$hasRole`函数的功能 [传送门](https://vkdoc.fsq.pub/client/jsapi.html#hasrole)
+* 【优化】`vk.pubfn.timeFormat` 支持显示时区,完整格式为 `yyyy-MM-ddThh:mm:ssZ`
+* 【优化】其他细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+## 2.15.2(2023-08-15)
+* 【重要】新增地图相关的API [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/map.html)
+* 【修复】`vk.baseDao.sample` 在腾讯云空间最大只能取20条的bug
+* 【优化】`vk.pubfn.test` 新增参数 `allowEmpty` 控制是否允许为空 [传送门](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-test-%E6%A3%80%E6%B5%8B%E6%96%87%E6%9C%AC%E6%A0%BC%E5%BC%8F)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+## 2.15.1(2023-07-20)
+* 1、【重要】为了安全性考虑,调整前端的 `vk.request` API,需要手动指定 `uniIdToken: true` 才会在请求头中自动添加 `uni-id-token`
+* 2、【优化】前端 `vk.request` 当满足响应规范时,会自动保存 `token` 和 `userInfo` 以及token失效跳登录页面
+* 3、【优化】新增 `vk.baseDao.setById`(根据ID判断存在则修改,不存在则添加,此为原子操作,非查询再判断)
+* 4、【优化】`user/pub/sendEmailCode` 发送邮件验证码新增针对同一个邮箱每天的次数限制(默认30次,可在函数内修改默认次数)
+* 5、【优化】`user/pub/sendSmsCode` 发送短信验证码新增针对同一个手机号每天的次数限制(默认12次,可在函数内修改默认次数)
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+## 2.15.0(2023-07-04)
+* 1、【重要】注册接口统一去除前端的role参数(需替换目录 `router/service/user/pub`)
+* 2、【修复】云端表单验证不支持a.b的问题
+* 3、【新增】`vk.sessionStorage` 本地会话缓存,仅h5可用
+* 4、【优化】`vk.uploadFile` 新增参数 `cloudPathAsRealPath` 默认为true,代表支持阿里云目录
+* 5、【优化】`vk.uploadFile` 新增参数 `cloudDirectory` 可以设置上传至指定的云端目录
+* 6、【优化】`vk.request` 新增 `interceptor` 参数(该参数仅前端调用时生效)[传送门](https://vkdoc.fsq.pub/client/jsapi.html#vk-request-%E8%AF%B7%E6%B1%82http%E6%8E%A5%E5%8F%A3)
+* 7、【优化】发送邮件验证码新增参数判断
+* 8、【优化】云函数、云对象404时的错误提示
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+## 2.14.3(2023-06-09)
+* 1、【新增】支付宝小程序api [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/alipay.html)
+* 2、【修复】因 `2.14.2` 更新导致的支付宝小程序报错问题。
+* 3、【优化】注册接口前端全局防抖
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+## 2.14.2(2023-06-01)
+* 1、【优化】`user/kh/addUploadRecord` 细节
+* 2、【优化】`vk.importObject` 支持 `importObjectOptions` 参数 [传送门](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#uni-vk-importobject%E7%9A%84%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95)
+* 3、【优化】vuex模块化支持多级目录
+* 4、【优化】微信公众号登录后不能跳回登录前页面的问题。
+* 5、【调整】`vk.pubfn.test(str, 'username')` 检测的长度调整为3-32位
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+## 2.14.1(2023-05-17)
+* 1、【新增】QQ小程序API [详情](https://vkdoc.fsq.pub/client/uniCloud/plus/qq.html#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6)
+* 2、【新增】抖音小程序API [详情](https://vkdoc.fsq.pub/client/uniCloud/plus/douyin.html)
+* 3、【优化】`vk.pubfn.formValidate` [详情](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/formRules.html#rules%E8%AF%A6%E8%A7%A3)
+* 4、【优化】`vk.crypto.aes.encrypt` 和 `vk.crypto.aes.decrypt` 新增 `mode` 参数,支持切换为加密算法,方便兼容java、php等后端语言加解密 [详情](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/crypto.html#%E5%9C%A8%E4%BA%91%E5%87%BD%E6%95%B0%E5%8A%A0%E5%AF%86-java%E6%88%96php%E7%AD%89%E5%85%B6%E4%BB%96%E5%90%8E%E7%AB%AF%E8%AF%AD%E8%A8%80%E8%A7%A3%E5%AF%86)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+## 2.13.6(2023-04-23)
+* 1、【新增】支付订单admin端API `admin/system_uni/pay-orders/sys/*`
+* 2、【优化】`vk.baseDao.selects` 当getCount为false时,hasMore永远是false的bug
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+## 2.13.5(2023-03-20)
+* 1、【修复】云函数内调用 `vk.callFunction` 可能会报错的bug
+* 2、【修复】微信公众号万能API不支持上传媒体图片的问题 [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin-h5.html#%E5%A6%82%E4%BD%95%E8%B0%83%E7%94%A8%E4%B8%8A%E4%BC%A0%E4%B8%B4%E6%97%B6%E7%B4%A0%E6%9D%90%E6%8E%A5%E5%8F%A3)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+## 2.13.4(2023-02-12)
+* 1、【修复】云函数内调用 `vk.callFunction` 可能会报错的bug
+* 2、【修复】微信公众号万能API不支持上传媒体图片的问题 [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin-h5.html#%E5%A6%82%E4%BD%95%E8%B0%83%E7%94%A8%E4%B8%8A%E4%BC%A0%E4%B8%B4%E6%97%B6%E7%B4%A0%E6%9D%90%E6%8E%A5%E5%8F%A3)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+## 2.13.2(2023-01-19)
+* 1、【调整】router云函数运行内存调整为512M(实测512M即可达到最优性能)
+* 2、【新增】微信最新版头像和昵称获取示例,详见:/pages_template/uni-id/weixin/set-user-info.vue
+* 3、【优化】升级微信小程序文本检测API `vk.openapi.weixin.security.msgSecCheck` 至2.0版本 [传送门 - 微信文档](https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/sec-check/msgSecCheck.html)
+* 4、【修复】`微信公众号万能API调用接口` 在调用部分接口时可能会报错的问题
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.13.1(2022-12-29)
+* 1、【调整】url化后token的请求头从 `uni_id_token` 改为 `uni-id-token`(新版阿里云不支持 `uni_id_token` 请求头)
+* 2、【修复】`vk.openapi.weixin.h5.request` 接口无法在阿里云空间中自动使用代理的问题。
+* 3、【修复】`vk.pubfn.getOffsetTime` 接口在云端月偏移量计算在可能会出错的问题。
+* 4、【优化】其他一些兼容性问题。
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.12.4(2022-12-13)
+* 1、【优化】新版阿里云空间通过代理请求微信公众号API细节处理
+* 2、【优化】`vk.pubfn.getCommonTime()` API内部细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.12.3(2022-11-24)
+* 1、【优化】部分报错提示文本
+* 2、【优化】其他一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.12.2(2022-11-05)
+* 1、【优化】新增 cancelAddTimeStr 配置,用于单独取消 _add_time_str
+
+* 2、【优化】部分API的报错提示
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.12.1(2022-10-07)
+* 1、【重要】vk实例初始化代码调整(因HBX更新导致本地运行时,不同的云函数环境目前没有隔离(云端无此问题,只有本地运行有此问题),从而导致HBX本地运行时,A云函数和B云函数复用了同一个vk实例,而更新后,vk实例在不同云函数内会隔离)
+
+`router/index.js` 代码修改(注意:如果你只使用一个router,则不修改也没有问题)
+
+```js
+'use strict';
+// 注意:此为云函数路由入口文件,请勿修改此文件代码,你自己的云函数逻辑应写在service目录下
+const vk = require('vk-unicloud'); // vk-unicloud 工具包
+vk.init(require('./config.js'));
+exports.main = async (event, context) => {
+ return await vk.router({ event, context, vk });
+};
+```
+
+修改为
+
+```js
+'use strict';
+// 注意:此为云函数路由入口文件,请勿修改此文件代码,你自己的云函数逻辑应写在service目录下
+const vkCloud = require('vk-unicloud'); // 引入 vk-unicloud
+const vk = vkCloud.createInstance(require('./config.js')); // 通过 vkCloud.createInstance 创建 vk 实例
+exports.main = async (event, context) => {
+ return await vk.router({ event, context, vk });
+};
+```
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.12.0(2022-10-07)
+* 1、【重要】vk实例初始化代码调整(因HBX更新导致本地运行时,不同的云函数环境目前没有隔离(云端无此问题,只有本地运行有此问题),从而导致HBX本地运行时,A云函数和B云函数复用了同一个vk实例,而更新后,vk实例在不同云函数内会隔离)
+
+`router/index.js` 代码修改(注意:如果你只使用一个router,则不修改也没有问题)
+
+```js
+'use strict';
+// 注意:此为云函数路由入口文件,请勿修改此文件代码,你自己的云函数逻辑应写在service目录下
+const vk = require('vk-unicloud'); // vk-unicloud 工具包
+vk.init(require('./config.js'));
+exports.main = async (event, context) => {
+ return await vk.router({ event, context, vk });
+};
+```
+
+修改为
+
+```js
+'use strict';
+// 注意:此为云函数路由入口文件,请勿修改此文件代码,你自己的云函数逻辑应写在service目录下
+const vkCloud = require('vk-unicloud'); // 引入 vk-unicloud
+const vk = vkCloud.createInstance(require('./config.js')); // 通过 vkCloud.createInstance 创建 vk 实例
+exports.main = async (event, context) => {
+ return await vk.router({ event, context, vk });
+};
+```
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.11.13(2022-09-29)
+* 1、【修复】升级HBX后带来的部分兼容性问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.11.12(2022-09-26)
+* 1、【重要】微信公众号万能API调用接口支持在阿里云空间执行(自动使用阿里云代理模式)[传送门 - 阿里云固定IP设置](https://uniapp.dcloud.net.cn/uniCloud/cf-functions.html#aliyun-eip)
+* 2、【修复】`vk.crypto.aes.encrypt`、`vk.crypto.aes.decrypt` 在非 `router` 目录结构的云函数中运行可能会报错的问题。
+* 3、【优化】`vk.pubfn.getCurrentPage()` API 在最新版HBX上的兼容性。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.11.11(2022-09-20)
+* 1、【修复】`vk.baseDao.getTableData` 的查询条件某个字段的值指定为null时,可能会报错的问题。
+* 2、【优化】小程序在首次启动时,自动检测当前是否有最新版本,如有,则一键更新到最新版本。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.11.10(2022-09-19)
+* 1、【修复】`vk.baseDao.getTableData` 的查询条件某个字段的值指定为null时,可能会报错的问题。
+* 2、【优化】小程序在首次启动时,自动检测当前是否有最新版本,如有,则一键更新到最新版本。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.11.9(2022-09-13)
+* 1、【优化】其他细节
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.11.8(2022-09-12)
+* 1、【优化】前端使用 `vk.request` 请求时,若本地缓存中有 `uni_id_token`,则请求头会带上 `uni_id_token` 的值
+* 2、【优化】`router` 函数 `url化后`,若没有直接传 `uni_id_token` 参数,则会尝试从请求头中获取 `uni_id_token`
+* 3、【优化】其他细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.11.7(2022-09-08)
+* 1、【修复】`vk.baseDao.getTableData` 内使用 `_.geoNear` 无效的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.11.6(2022-09-05)
+* 1、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.11.5(2022-08-29)
+* 1、【重要】新增 `监听token更新` API [传送门](https://vkdoc.fsq.pub/client/vk.userCenter.html?t=20220829#vk-onrefreshtoken-%E7%9B%91%E5%90%ACtoken%E6%9B%B4%E6%96%B0%E4%BA%8B%E4%BB%B6)
+* 2、【优化】`云对象` 新增 `this.getUniCloudRequestId`(获取当前请求id)[传送门](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#this-getunicloudrequestid-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E8%AF%B7%E6%B1%82id)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.11.4(2022-08-26)
+* 1、【优化】`vk.pubfn.getCommonTime` 更新文档 [传送门](https://vkdoc.fsq.pub/client/jsapi.html?t=20220825#vk-pubfn-getcommontime-%E8%8E%B7%E5%8F%96%E6%97%B6%E9%97%B4%E8%8C%83%E5%9B%B4)
+* 2、【优化】其他细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.11.3(2022-08-22)
+* 1、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.11.2(2022-08-22)
+* 1、【重要】前端 `微信登录` 、 `微信获取openid` 等接口不再返回 `sessionKey` 取而代之的是返回 `encryptedKey`(加密后的数据,云函数解密后可获得 `sessionKey`)
+* 2、【重要】新增配置 `vk.crypto.aes` 用于返回给前端加密数据时的加密密钥
+
+
+
+* 3、【新增】`vk.crypto.aes.encrypt` 用于加密数据
+* 4、【新增】`vk.crypto.aes.decrypt` 用于解密数据
+
+```js
+// 加密数据
+let encryptedKey = vk.crypto.aes.encrypt({
+ data: {
+ sessionKey: "XXXXX"
+ }
+});
+console.log('encryptedKey: ', encryptedKey)
+
+// 解密 sessionKey 示例
+let decryptedRes = vk.crypto.aes.decrypt({
+ data: encryptedKey, // 待解密的原文
+});
+console.log('decryptedRes: ', decryptedRes)
+let sessionKey = decryptedRes.sessionKey;
+console.log('sessionKey: ', sessionKey)
+```
+
+**特别注意**
+
+* 1、本次更新需要替换 `router/service/user/pub/` 目录
+
+* 2、如果你使用了 `使用微信小程序绑定的手机号一键登录` 的API,则请看此处调整代码 [传送门](https://vkdoc.fsq.pub/client/vk.userCenter.html?t=20220822#vk-usercenter-loginbyweixinphonenumber-%E9%80%9A%E8%BF%87%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%BB%91%E5%AE%9A%E7%9A%84%E6%89%8B%E6%9C%BA%E5%8F%B7%E7%99%BB%E5%BD%95)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.11.1(2022-08-22)
+* 1、【重要】前端 `微信登录` 、 `微信获取openid` 等接口不再返回 `sessionKey` 取而代之的是返回 `encryptedKey`(加密后的数据,云函数解密后可获得 `sessionKey`)
+* 2、【重要】新增配置 `vk.crypto.aes` 用于返回给前端加密数据时的加密密钥
+
+* 3、【新增】`vk.crypto.aes.encrypt` 用于加密数据
+* 4、【新增】`vk.crypto.aes.decrypt` 用于解密数据
+```js
+// 加密数据
+let encryptedKey = vk.crypto.aes.encrypt({
+ data: {
+ sessionKey: "XXXXX"
+ }
+});
+console.log('encryptedKey: ', encryptedKey)
+
+// 解密 sessionKey 示例
+let decryptedRes = vk.crypto.aes.decrypt({
+ data: encryptedKey, // 待解密的原文
+});
+console.log('decryptedRes: ', decryptedRes)
+let sessionKey = decryptedRes.sessionKey;
+console.log('sessionKey: ', sessionKey)
+```
+**特别注意**
+
+* 1、本次更新需要替换 `router/service/user/pub/` 目录
+
+* 2、如果你使用了 `使用微信小程序绑定的手机号一键登录` 的API,则请看此处调整代码 [传送门](https://vkdoc.fsq.pub/client/vk.userCenter.html?t=20220822#vk-usercenter-loginbyweixinphonenumber-%E9%80%9A%E8%BF%87%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%BB%91%E5%AE%9A%E7%9A%84%E6%89%8B%E6%9C%BA%E5%8F%B7%E7%99%BB%E5%BD%95)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.11.0(2022-08-22)
+* 1、【重要】前端 `微信登录` 、 `微信获取openid` 等接口不再返回 `sessionKey` 取而代之的是返回 `encryptedKey`(加密后的数据,云函数解密后可获得 `sessionKey`)
+* 2、【重要】新增配置 `vk.crypto.aes` 用于返回给前端加密数据时的加密密钥
+* 3、【新增】`vk.crypto.aes.encrypt` 用于加密数据
+* 4、【新增】`vk.crypto.aes.decrypt` 用于解密数据
+```js
+// 加密数据
+let encryptedKey = vk.crypto.aes.encrypt({
+ data: {
+ sessionKey: "XXXXX"
+ }
+});
+console.log('encryptedKey: ', encryptedKey)
+
+// 解密 sessionKey 示例
+let decryptedRes = vk.crypto.aes.decrypt({
+ data: encryptedKey, // 待解密的原文
+});
+console.log('decryptedRes: ', decryptedRes)
+let sessionKey = decryptedRes.sessionKey;
+console.log('sessionKey: ', sessionKey)
+```
+**特别注意**
+
+本次更新需要替换 `router/service/user/pub/` 目录
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.10.12(2022-08-20)
+* 1、【优化】一些细节
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.10.11(2022-08-19)
+* 1、【优化】发送短信验证码接口和组件新增参数 `checkUserExist` : 是否需要检测手机号对应的账号是否存在,默认false:不检测 设置为true:会检测,如果检测到用户不存在,则不发短信。(如通过手机号找回密码的业务,如果手机号都未注册,则没有必要发短信)(需要替换文件:`router/service/user/pub/sendSmsCode.js`)
+* 2、【修复】数据库API,`_.geoNear` 部分情况下会失效的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.10.10(2022-08-15)
+* 1、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.10.9(2022-08-15)
+* 1、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.10.8(2022-08-13)
+* 1、【调整】根据手机验证码重置账号密码的短信验证 `type` 从 `reset` 改为 `reset-pwd`(与unicloud官方对齐)
+* 2、【调整】根据邮箱验证码重置账号密码的邮件验证 `type` 从 `reset` 改为 `reset-pwd`(与unicloud官方对齐)
+* 3、【修复】vk.pubfn.test("aaahttps://www.baidu.com","url") 会返回 true 的bug
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.10.7(2022-07-30)
+* 1、【优化】云对象 `this.getCloudInfo()` 内增加 `functionName`、`functionType` [传送门](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#this-getcloudinfo-%E8%8E%B7%E5%8F%96%E4%BA%91%E7%AB%AF%E4%BF%A1%E6%81%AF)
+* 2、【优化】云对象 `this.getClientInfo()` 内增加 `source` [传送门](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#this-getclientinfo-%E8%8E%B7%E5%8F%96%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BF%A1%E6%81%AF)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.10.6(2022-07-28)
+* 1、【新增】`uni-id` 配置 `removeDcloudAppid` 默认false,若设置true,则注册成功后,会自动删除 `dcloud_appid` 字段,以达到禁用隔离不同端用户的功能。(需配合中间件registerInitFilter)
+* 2、【新增】`vk.openapi.weixin.urllink.generate` 云函数生成小程序url链接API [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin.html#%E8%8E%B7%E5%8F%96%E5%B0%8F%E7%A8%8B%E5%BA%8Furl%E9%93%BE%E6%8E%A5)
+* 3、【新增】`vk.userCenter.getWeixinMPurl` 前端直接生成小程序url链接API [传送门](https://vkdoc.fsq.pub/client/vk.userCenter.html#vk-usercenter-getweixinmpurl-%E7%94%9F%E6%88%90%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8Furl%E9%93%BE%E6%8E%A5)
+* 4、【优化】`vk.openapi.weixin.wxacode.getUnlimited` 和 `vk.openapi.weixin.urlscheme.generate` 支持参数 `env_version` [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin.html#%E8%8E%B7%E5%8F%96%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%A0%81)
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.10.5(2022-07-23)
+* 1、【优化】一些细节。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.10.4(2022-07-21)
+* 1、【优化】一些细节。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.10.3(2022-07-21)
+* 1、【优化】一些细节。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.10.2(2022-07-20)
+* 1、【修复】`_.geoNear` 和 `lastWhereJson` 同时使用时报错的bug
+* 2、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.10.1(2022-07-18)
+* 1、`vk.pubfn.batchRun` 新增另外一种调用方式。[传送门](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-batchrun)
+* 2、新增 `vk.uploadFile` 代替 `vk.callFunctionUtil.uploadFile`(保留旧写法) [传送门](https://vkdoc.fsq.pub/client/pages/uploadFile.html)
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.10.0(2022-07-09)
+* 1、【优化】`vk.baseDao.update` `vk.baseDao.updateById` `vk.baseDao.updateAndReturn` API的 `dataJson` 参数若有 `_id`,则自动忽略 `_id`(因_id不可修改,原先是直接报错)
+* 2、【优化】其他细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.9.9(2022-07-04)
+* 1、【新增】微信小程序服务端万能API [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin.html#%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%87%E8%83%BDapi%E8%B0%83%E7%94%A8%E6%8E%A5%E5%8F%A3)
+* 2、【新增】微信公众号服务端万能API [传送门](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin-h5.html)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.9.8(2022-06-28)
+* 1、【重要】新增安全规则:未标记 `isCloudObject:true` 的对象定义为私有对象(如 `service/user/util/login_log.js`),前端禁止访问(只能被云函数/云对象 `require` 方式调用)。
+* 2、【重要】`client端` 默认自带 `admin端` 需要的函数和菜单权限表数据,方便 `admin` 一键绑定 `client` 项目(不再需要复制admin项目内的文件了)。
+* 3、【优化】`万能连表` 支持使用数组下标对应的值进行连表,如用户表根据inviter_uid的第一个值进行连表达到只查出第一个上级用户信息的效果 [点击查看](https://vkdoc.fsq.pub/client/uniCloud/db/selects.html#%E5%9C%BA%E6%99%AF11)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.9.7(2022-06-22)
+* 1、【新增】云函数专用api `vk.pubfn.randomAsync`(异步)产生指定位数的不重复随机数(支持任意字符,s默认纯数字)[点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-randomasync)
+* 2、【新增】数据库表内的字段重命名api [点击查看](https://vkdoc.fsq.pub/client/uniCloud/db/question.html#%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%E5%AD%97%E6%AE%B5%E5%90%8D)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.9.6(2022-06-16)
+* 1、【优化】一些细节。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.9.5(2022-06-16)
+* 1、【无更新】配合测试,开发者无需更新到此版本(与2.9.4版本一致)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.9.4(2022-06-15)
+* 1、【升级】`uni-id` 至 `3.3.23`
+* 2、【调整】`vk.getVuex` 当数据不存在时,返回值由 `undefined` 调整为 `空字符串`(undefined在部分平台会有问题)
+* 3、【优化】示例代码的细节问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.9.3(2022-06-15)
+* 1、【升级】`uni-id` 至 `3.3.23`
+* 2、【调整】`vk.getVuex` 当数据不存在时,返回值由 `undefined` 调整为 `空字符串`(undefined在部分平台会有问题)
+* 3、【优化】示例代码的细节问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.9.2(2022-06-11)
+* 1、【重要】`uni-id` 新增配置参数 `"preferedWebPlatform": "h5",`,用于解决因HBX3.4.14版本导致的 `h5` 变为 `web` 带来的一系列问题。(完美兼容,你无需改自己的逻辑代码了)
+* 2、【调整】`vk.getVuex` 当数据不存在时,返回值由 `空字符串` 调整为 `undefined`
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.9.1(2022-06-08)
+* 1、【优化】`云对象` 的内置api `this.getClientInfo` 可以获取到更多信息(uni.getSystemInfo返回的客户端信息)
+* 2、【优化】`云函数` 的 `originalParam.context` 可以获取到更多信息(uni.getSystemInfo返回的客户端信息)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.9.0(2022-06-07)
+* 1、【新增】`vk.callFunction` api [点击查看详情](https://vkdoc.fsq.pub/client/question/question.html#%E4%BA%91%E5%87%BD%E6%95%B0-%E4%BA%91%E5%AF%B9%E8%B1%A1-%E4%B8%AD%E5%A6%82%E4%BD%95%E8%B0%83%E7%94%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E4%BA%91%E5%87%BD%E6%95%B0-%E4%BA%91%E5%AF%B9%E8%B1%A1)
+> * 1.1、支持在云对象中请求其他云对象内的函数。
+> * 1.2、支持在云对象中请求云函数。
+> * 1.3、支持在云函数内请求其他云函数。
+> * 1.4、支持在云函数内请求云对象内的函数。
+* 2、【优化】`pub` 类型的函数无需 `need_user_info:true`,也能从token中解析并获取到uid(无数据库请求,不影响性能)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.8.13(2022-06-02)
+* 1、【修复】`云对象` 模式下 `sys类型函数` 在非admin目录下时,请求会提示 `need_user_info` 的问题。
+* 2、【优化】为了兼容DCloud推出的uniCloud响应体规范,请求后的返回值会自动加上errCode和errMsg,其中errCode=code,errMsg=msg
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.8.12(2022-06-02)
+* 1、【修复】`云对象` 模式下 `sys类型函数` 在非admin目录下时,请求会提示 `need_user_info` 的问题。
+* 2、【优化】为了兼容DCloud推出的uniCloud响应体规范,请求后的返回值会自动加上errCode和errMsg,其中errCode=code,errMsg=msg
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.8.11(2022-05-28)
+* 1、【修复】无法 `alt+左键` 跳转到组件源代码文件的bug。(只需删除 `pages.json` 内的空 `easycom` 规则即可,此为造成无法识别组件的原因。)
+* 2、【修复】无法自动识别组件标签的bug。(只需删除 `pages.json` 内的空 `easycom` 规则即可,此为造成无法识别组件的原因。)
+* 3、【修复】`interceptor.login` 前端自定义login拦截器,在某些情况下无法正常拦截的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.8.10(2022-05-28)
+* 1、【修复】当 `云对象` 在 `service` 层根目录时,`pub.对象名.js` pub权限失效的问题。
+* 2、【优化】其他一些细节。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.8.9(2022-05-26)
+* 1、【优化】`vk.baseDao.selects` 和 `vk.baseDao.getTableData` API新增 `lastSortArr` 参数,用于聚合后再排序。
+* 注意:`lastWhereJson` 和 `lastSortArr` 在数据量大的情况下是有性能问题的,(建议主表的where条件中先进行筛选,如只查本季度数据,只要主表过滤完后数据量不大,则没有性能问题。)
+* 2、【修复】`lastWhereJson` 后,返回的 `total` 不准确的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.8.8(2022-05-25)
+* 1、【升级】`uni-id` 3.3.21
+* 2、【优化】`javascript代码块提示` [查看详情](https://vkdoc.fsq.pub/client/codeTips.html)
+* 3、【优化】示例页面的一些细节。
+* 4、【优化】vuex自动加载模块(无需手动引入模块)(需要替换 `/store/index.js` 文件)
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.8.7(2022-05-25)
+* 1、【优化】`javascript代码块提示` [查看详情](https://vkdoc.fsq.pub/client/codeTips.html)
+* 2、【优化】示例页面的一些细节。
+* 3、【优化】vuex自动加载模块(无需手动引入模块)(需要替换 `/store/index.js` 文件)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.8.6(2022-05-14)
+* 1、【升级】`uni-id` 3.3.18
+* 2、【新增】`vk.pubfn.getFileType(url)` 根据文件url获取文件类型
+* 3、【新增】`vk.pubfn.getFileSuffix(url)` 根据文件url获取文件后缀名
+* 4、【新增】`vk.pubfn.checkFileSuffix(url,["png", "jpg", "jpeg", "gif", "bmp", "svg"])` 根据文件url判断是否满足指定后缀名中的任意1个
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.8.5(2022-05-05)
+* 1、【重要】vk实例对象已调整为页面内置对象,vk实例对象内的api在任意地方都可以直接通过vk.xxx()使用,不再需要 this.vk.xxx() 或 uni.vk.xxx() 的方式来调用。
+* 2、【重要】vk实例对象已调整为云函数内置对象,vk实例对象内的api在任意地方都可以直接通过vk.xxx()使用,不再需要 this.vk.xxx() 或 uniCloud.vk.xxx() 的方式来调用。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.8.4(2022-04-28)
+* 1、【新增】`vk.openapi.weixin.uniformMessage.send` 小程序转公众号消息模板接口 [点击查看](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin.html#%E5%B0%8F%E7%A8%8B%E5%BA%8F%E8%BD%AC%E5%85%AC%E4%BC%97%E5%8F%B7%E6%A8%A1%E6%9D%BF%E6%B6%88%E6%81%AF)
+* 2、【新增】`vk.openapi.weixin.h5.templateMessage.send` 公众号消息模板接口 [点击查看](https://vkdoc.fsq.pub/client/uniCloud/plus/weixin.html#%E5%8D%95%E7%8B%AC%E5%85%AC%E4%BC%97%E5%8F%B7%E6%A8%A1%E6%9D%BF%E6%B6%88%E6%81%AF)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.8.3(2022-04-21)
+* 1、【重要】`uni-id` 配置新增 `tokenMaxLimit` 每个账户的最大token数量,0为不限,淘汰策略:新的淘汰旧的(注意,即使设置为0,框架也会自动淘汰已过期的token)[点击查看](https://vkdoc.fsq.pub/client/uniCloud/config/uni-id.html)
+* 2、【重要】微信登录支持多小程序:如果使用多小程序登录,则同一用户(同一个微信号)在不同小程序登录时,会分别创建不同的用户(除非小程序绑定在同一个开放平台下)
+* 3、【新增】全局参数 `targetTimezone` 可设置默认时区(中国为8,8代表东8区,-8代表西8区)
+
+> [查看前端全局配置](https://vkdoc.fsq.pub/client/pages/config.html)
+
+> [查看云函数全局配置](https://vkdoc.fsq.pub/client/uniCloud/config/vk-unicloud.html)
+
+* 4、【新增】全局参数 `functionNameToUrl` 和 `isRequestDefault` [点击查看](https://vkdoc.fsq.pub/client/pages/callFunctionForUrl.html#%E6%B3%A8%E6%84%8F-%E4%BA%91%E5%87%BD%E6%95%B0url%E5%8C%96%E6%96%B9%E5%BC%8F%E8%B0%83%E7%94%A8%E9%9C%80%E8%A6%81%E9%85%8D%E7%BD%AE%E4%BD%A0%E7%9A%84%E4%BA%91%E5%87%BD%E6%95%B0url%E8%B7%AF%E5%BE%84%E5%9C%B0%E5%9D%80)
+* 5、【优化】微信注册时支持新增自定义字段,如:nickname和avatar等。
+* 6、【优化】当云函数全局配置文件出错时,优化报错提示。
+
+**本次更新除了常规升级框架外,还需要下载最新版框架示例项目,从最新版中复制 以下文件 替换 你项目中的对应文件。**
+
+* 1、`router/middleware/modules/returnUserInfoFilter.js` (此为用户登录注册全局中间件)
+* 2、`router/service/user/pub/loginByWeixin.js` (此为微信登录云函数)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.8.2(2022-04-21)
+* 1、【重要】`uni-id` 配置新增 `tokenMaxLimit` 每个账户的最大token数量,0为不限,淘汰策略:新的淘汰旧的(注意,即使设置为0,框架也会自动淘汰已过期的token)[点击查看](https://vkdoc.fsq.pub/client/uniCloud/config/uni-id.html)
+* 2、【重要】微信登录支持多小程序:如果使用多小程序登录,则同一用户(同一个微信号)在不同小程序登录时,会分别创建不同的用户(除非小程序绑定在同一个开放平台下)
+* 3、【新增】全局参数 `targetTimezone` 可设置默认时区(中国为8,8代表东8区,-8代表西8区)
+
+> [查看前端全局配置](https://vkdoc.fsq.pub/client/pages/config.html)
+
+> [查看云函数全局配置](https://vkdoc.fsq.pub/client/uniCloud/config/vk-unicloud.html)
+
+* 4、【新增】全局参数 `functionNameToUrl` 和 `isRequestDefault` [点击查看](https://vkdoc.fsq.pub/client/pages/callFunctionForUrl.html#%E6%B3%A8%E6%84%8F-%E4%BA%91%E5%87%BD%E6%95%B0url%E5%8C%96%E6%96%B9%E5%BC%8F%E8%B0%83%E7%94%A8%E9%9C%80%E8%A6%81%E9%85%8D%E7%BD%AE%E4%BD%A0%E7%9A%84%E4%BA%91%E5%87%BD%E6%95%B0url%E8%B7%AF%E5%BE%84%E5%9C%B0%E5%9D%80)
+* 5、【优化】微信注册时支持新增自定义字段,如:nickname和avatar等。
+* 6、【优化】当云函数全局配置文件出错时,优化报错提示。
+
+**本次更新除了常规升级框架外,还需要下载最新版框架示例项目,从最新版中复制 以下文件 替换 你项目中的对应文件。**
+
+* 1、`router/middleware/modules/returnUserInfoFilter.js` (此为用户登录注册全局中间件)
+* 2、`router/service/user/pub/loginByWeixin.js` (此为微信登录云函数)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.8.1(2022-04-14)
+* 1、【新增】前端请求多服务空间的极简方式(通过配置直接指定调用环境)[点击查看](https://vkdoc.fsq.pub/client/question/q9.html#%E6%96%B9%E5%BC%8F%E4%BA%8C)
+* 2、【新增】`vk.userCenter.resetPasswordByEmail`(根据邮箱证码重置账号密码) [点击查看](https://vkdoc.fsq.pub/client/vk.userCenter.html#vk-usercenter-resetpasswordbyemail-%E6%A0%B9%E6%8D%AE%E9%82%AE%E7%AE%B1%E8%AF%81%E7%A0%81%E9%87%8D%E7%BD%AE%E8%B4%A6%E5%8F%B7%E5%AF%86%E7%A0%81)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.8.0(2022-04-01)
+* 1、【重要】新增 `云对象` 路由模式 [什么是云对象?](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html)
+* 2、【重要】自此,在VK框架中,可以做到云对象和云函数同时存在。即在VK框架中,同时支持 `云对象路由模式` 和 `云函数路由模式`。
+* 3、【新增】本地运行支持云对象 [点击查看](https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#%E6%9C%AC%E5%9C%B0%E8%BF%90%E8%A1%8C)
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.7.6(2022-03-26)
+* 1、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.7.5(2022-03-22)
+* 1、【新增】`vk.userCenter.bindNewMobile` 换绑新的手机号接口 [查看详情](https://vkdoc.fsq.pub/client/vk.userCenter.html#vk-usercenter-bindnewmobile-%E6%8D%A2%E7%BB%91%E6%89%8B%E6%9C%BA%E5%8F%B7)
+* 2、【新增】`vk.userCenter.bindNewEmail` 换绑新的邮箱接口 [查看详情](https://vkdoc.fsq.pub/client/vk.userCenter.html#vk-usercenter-bindnewemail-%E6%8D%A2%E7%BB%91%E9%82%AE%E7%AE%B1)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+## 2.7.4(2022-03-21)
+* 1、【优化】H5环境下,微信登录、微信绑定、微信解绑API,使之自动识别微信公众号环境(h5-weixin)的配置。
+注意:微信公众号的 `uni-id` 配置属性是 `h5-weixin`,非 `h5`。
+* 2、【新增】新增微信公众号登录、注册、绑定、解绑、获取openid的调用示例。 演示页面地址:`/pages_template/uni-id/weixin/h5-weixin`
+* 完整框架项目地址:`https://ext.dcloud.net.cn/plugin?id=2204`[点击查看](https://ext.dcloud.net.cn/plugin?id=2204)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.7.3(2022-03-18)
+* 1、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.7.2(2022-03-14)
+* 1、【修复】`vk.navigateTo` 以 ./ 开头时 如:vk.navigateTo("./order-list") 判断是否需要登录不准确的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.7.1(2022-03-14)
+* 1、【优化】`app.config.js` 中的 `checkTokenPages` 检测页面是否需要登录支持 首页(启动页)的检测
+* 2、【优化】其他细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.7.0(2022-02-26)
+###【重要】由于uni官方限制自定义表不可以用 `opendb-` 和 `uni-` 开头,故以下数据库表名只能进行调整
+
+* 1、`opendb-components-dynamic` 改为 `vk-components-dynamic`
+* 2、`opendb-global-data` 改为 `vk-global-data`
+* 3、`uni-id-files` 改为 `vk-files`
+* 4、`uni-id-files-categories` 改为 `vk-files-categories`
+
+___更改表名势必会对老项目产生影响。___
+
+### 老项目更新注意事项:
+* 1、老项目更新后,还需要从 `unicloud控制台` 把表名改成对应的新表名
+* 2、在项目代码中全局搜索旧表名,替换成新表名
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.6.9(2022-02-24)
+* 1、【优化】`万能连表` 支持副表外键是数组类型(只要数组内任意元素与主表外键匹配即可)[点击查看](https://vkdoc.fsq.pub/client/uniCloud/db/selects.html#%E5%9C%BA%E6%99%AF6)
+* 2、【优化】其他一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.6.8(2022-01-08)
+* 1、【修复】`vk.openapi.weixin.security.imgSecCheck` 图片安全检测失效的问题
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.6.7(2021-12-24)
+* 1、【修复】`vk.pubfn.priceFilter` 、`vk.pubfn.percentageFilter` 、`vk.pubfn.discountFilter` 部分情况下,默认值不生效的问题。
+* 2、【修复】`vk.pubfn.string2Number` 会将空字符串转为0的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.6.6(2021-12-14)
+* 1、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.6.5(2021-12-14)
+* 1、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.6.4(2021-12-10)
+* 1、【修复】少数情况下,http请求可能获取不到数据的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.6.3(2021-12-07)
+* 1、【优化】上传api的url自动去除原文件名的中文部分。
+* 2、【修复】公众号登录可能会获取不到昵称和头像的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.6.2(2021-12-04)
+* 1、【新增】`vk.baseDao` 内api支持连接其他服务空间的数据库 [点击查看](https://vkdoc.fsq.pub/client/question/q9.html#%E4%BA%91%E5%87%BD%E6%95%B0%E7%AB%AF%E8%AF%B7%E6%B1%82%E5%A4%9A%E6%9C%8D%E5%8A%A1%E7%A9%BA%E9%97%B4%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.6.1(2021-11-26)
+* 1、【新增】`await vk.pubfn.batchRun` 批量循环并发执行异步函数(云函数内专用, 使用场景: 批量发送短信、邮件、消息通知等。)[点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-batchrun)
+* 2、【优化】qq 登录问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.6.0(2021-11-19)
+* 1、【重要】移除了内置的 `npm` 方式安装的 `uView` 组件库,开发者可以选择自己喜欢的组件库进行开发。[点击查看](https://vkdoc.fsq.pub/client/quickstart.html#%E8%87%AA-client%E7%AB%AF%E6%A1%86%E6%9E%B6-2-6-0-%E8%B5%B7-%E4%B8%8D%E5%86%8D%E5%86%85%E7%BD%AE%E4%BB%BB%E4%BD%95-ui-%E6%A1%86%E6%9E%B6-%E4%BD%A0%E5%8F%AF%E4%BB%A5%E9%80%89%E6%8B%A9%E8%87%AA%E5%B7%B1%E5%96%9C%E6%AC%A2%E7%9A%84-ui-%E7%BB%84%E4%BB%B6%E5%BA%93%E8%BF%9B%E8%A1%8C%E5%BC%80%E5%8F%91%E3%80%82)
+* 2、【重要】移除内置组件 `vk-u-goods-sku-popup`(推荐 `vk-data-goods-sku-popup` 代替)[点击查看](https://ext.dcloud.net.cn/plugin?id=2848)
+* 3、【重要】移除内置组件 `vk-u-number-box`(推荐 `u-number-box` 代替)
+* 4、【重要】移除内置组件 `vk-u-grid-button`
+* 5、【重要】移除内置组件 `vk-u-swiper`
+* 6、【重要】重构内置组件 `vk-u-verification-code` 并改名为 `vk-data-verification-code`
+
+如想要继续使用这些组件,可以把这些组件复制到项目根目录的 `components` 目录(没有则新建)(目录名和组件名需一致,如 `vk-u-grid-button/vk-u-grid-button`)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.5.6(2021-11-13)
+* 1、【新增】`vk.pubfn.getOffsetTime` 获得指定时间偏移 year年 month月 day天 hours时 minutes分 seconds秒前或后的时间戳 [点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-getoffsettime-%E8%8E%B7%E5%BE%97%E6%8C%87%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%8F%E7%A7%BB-year%E5%B9%B4-month%E6%9C%88-day%E5%A4%A9-hours%E6%97%B6-minutes%E5%88%86-seconds%E7%A7%92%E5%89%8D%E6%88%96%E5%90%8E%E7%9A%84%E6%97%B6%E9%97%B4%E6%88%B3)
+* 2、【优化】一些细节
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.5.5(2021-11-10)
+* 1、【升级】`uni-id` 为 `3.3.9` 去除重复的 `context.xxx` 未找到的提示语
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.5.4(2021-11-10)
+* 1、【优化】前端请求云函数的一处细节。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.5.3(2021-11-09)
+* 1、【优化】`vk.pubfn.base64ToFile` 支持 APP 环境执行
+* 2、【优化】`vk.pubfn.fileToBase64` 支持 APP 环境执行
+* 3、【修复】`vk.baseDao.adds` 无返回值的问题。
+* 4、【修复】`vk.baseDao.selects` 当 `localKey` 为 `a.b.c` 这样的形式时会报错的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.5.2(2021-11-02)
+* 1、【新增】`vk.h5` 前端API接口(H5专用的一些接口,只有H5环境时,才有该对象,不会增大小程序的包体积)
+* 2、【新增】`vk.h5.wx`(wx为公众号js_sdk接口) [微信小程序环境内js_sdk文档](https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html) [微信公众号环境内js_sdk文档](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html)
+* 3、【新增】`vk.navigateToHome` 跳转到首页 (app.config.js 的 index.url)
+* 4、【新增】`vk.navigateToLogin` 跳转到登录页 (app.config.js 的 login.url)
+* 5、【修复】`vk.callFunctionUtil.updateRequestGlobalParam` 全局公共请求参数的一处逻辑问题。
+* 6、【优化】登录注册模板细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.5.1(2021-11-02)
+* 1、【新增】`vk.h5` 前端API接口(H5专用的一些接口,只有H5环境时,才有该对象,不会增大小程序的包体积)
+* 2、【新增】`vk.h5.wx`(wx为公众号js_sdk接口) [微信小程序环境内js_sdk文档](https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html) [微信公众号环境内js_sdk文档](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html)
+* 3、【新增】`vk.navigate.navigateToHome` 跳转到首页
+* 4、【新增】`vk.navigate.navigateToLogin` 跳转到登录页
+* 5、【修复】`vk.callFunctionUtil.updateRequestGlobalParam` 全局公共请求参数的一处逻辑问题。
+* 6、【优化】登录注册模板细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.5.0(2021-11-02)
+* 1、【新增】`vk.h5` 前端API接口(H5专用的一些接口,只有H5环境时,才有该对象,不会增大小程序的包体积)
+* 2、【新增】`vk.h5.wx`(wx为公众号js_sdk接口) [微信小程序环境内js_sdk文档](https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html) [微信公众号环境内js_sdk文档](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html)
+* 3、【新增】`vk.navigate.navigateToHome` 跳转到首页
+* 4、【新增】`vk.navigate.navigateToLogin` 跳转到登录页
+* 5、【修复】`vk.callFunctionUtil.updateRequestGlobalParam` 全局公共请求参数的一处逻辑问题。
+* 6、【优化】登录注册模板细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.4.8(2021-10-30)
+* 1、【优化】`vk.pubfn.hidden(str, first, last);` 的 `first` 和 `last` 默认为0 [点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-hidden-%E5%B0%86%E6%89%8B%E6%9C%BA%E5%8F%B7%E3%80%81%E8%B4%A6%E5%8F%B7%E7%AD%89%E9%9A%90%E8%97%8F%E4%B8%AD%E9%97%B4%E5%AD%97%E6%AE%B5)
+* 2、【优化】其他一些细节
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.4.7(2021-10-26)
+* 1、【优化】在 `template` 模板中使用 `vk.pubfn`(可以用简写法 `$fn` 代替 `vk.pubfn`)
+* 2、【优化】其他细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.4.6(2021-10-25)
+* 1、【优化】`vk.userCenter` 接口细节,现在参数 `loading:true` 或 `loading:false` 均可以关闭 `loading提示框`
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.4.5(2021-10-16)
+* 1、【优化】当获取小程序码错误时,增加微信返回的错误提示。
+* 2、【优化】当配置文件编译错误时,增加对应的错误提示。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.4.4(2021-10-15)
+* 1、【优化】当 `router/util/pubFunction.js` 内的代码出现编译错误时,控制台能打印编译错误信息。
+* 2、【优化】其他一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.4.3(2021-10-08)
+* 1、【新增】vk.userCenter 用户中心API的文档 [点击查看](https://vkdoc.fsq.pub/client/vk.userCenter.html)
+* 2、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.4.2(2021-09-30)
+* 1、【优化】`vk.pubfn.string2Number` 新增第二位参数option
+```js
+/**
+ * 将能转成数字的字符串转数字(支持字符串、对象、数组)
+ * @param {Any} obj
+ * @param {Object} option 哪些格式需要排除
+ * 默认排除
+ * mobile:true 手机号,如 15200000001
+ * idCard:true 身份证,如 330154202109301214
+ * startFrom0:true 第一位是0,且长度大于1的,同时第二位不是.的字符串 如 01,057189101254
+ */
+vk.pubfn.string2Number(obj, option);
+```
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.4.1(2021-09-30)
+* 1、【新增】`vk.pubfn.string2Number` 将能转成数字的字符串值转Number类型(支持字符串、对象、数组)(深度遍历)
+* 2、【优化】`vk.callFunctionUtil.updateRequestGlobalParam` 设置全局请求参数 `regExp` 参数支持数组(满足数组内任意正则即算匹配) [点击查看](https://vkdoc.fsq.pub/client/pages/updateRequestGlobalParam.html)
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.4.0(2021-09-28)
+* 1、【重要】支持微信公众号登录(有头像和昵称)详情见示例项目:`pages_template/openapi/h5-weixin/h5-weixin`
+* 2、【优化】APP使用微信登录时,有头像和昵称 详情见示例项目:`pages_template/uni-id/weixin/weixin`
+
+公众号配置文件在 `uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json`
+
+```js
+"h5-weixin": {
+ "oauth": {
+ "weixin": {
+ "appid": "微信公众号appid",
+ "appsecret": "微信公众号appsecret"
+ }
+ }
+},
+```
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.3.5(2021-09-27)
+* 1、【新增】`vk.pubfn.snake2camelJson` 对象内的属性名 - 蛇形转驼峰 [点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-snake2cameljson-%E5%AF%B9%E8%B1%A1%E5%86%85%E7%9A%84%E5%B1%9E%E6%80%A7%E5%90%8D-%E8%9B%87%E5%BD%A2%E8%BD%AC%E9%A9%BC%E5%B3%B0)
+* 2、【新增】`vk.pubfn.camel2snakeJson` 对象内的属性名 - 驼峰转蛇形 [点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-camel2snakejson-%E5%AF%B9%E8%B1%A1%E5%86%85%E7%9A%84%E5%B1%9E%E6%80%A7%E5%90%8D-%E9%A9%BC%E5%B3%B0%E8%BD%AC%E8%9B%87%E5%BD%A2)
+* 3、【新增】`vk.pubfn.snake2camel` 字符串 - 蛇形转驼峰 [点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-snake2camel-%E5%AD%97%E7%AC%A6%E4%B8%B2-%E8%9B%87%E5%BD%A2%E8%BD%AC%E9%A9%BC%E5%B3%B0)
+* 4、【新增】`vk.pubfn.camel2snake` 字符串 - 驼峰转蛇形 [点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-camel2snake-%E5%AD%97%E7%AC%A6%E4%B8%B2-%E9%A9%BC%E5%B3%B0%E8%BD%AC%E8%9B%87%E5%BD%A2)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.3.4(2021-09-18)
+* 1、【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.3.3(2021-09-16)
+* 1、【优化】一些细节问题
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.3.2(2021-09-08)
+* 1、【升级】`uni-id` 至 3.3.6 (修复邀请码可能重复的Bug)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.3.1(2021-09-08)
+* 1、【优化】一些细节
+* 2、【修复】`user/kh/updateUser` 问题。
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.3.0(2021-09-06)
+* 1、【新增】`vk.baseDao.updateAndReturn` API [点击查看](https://vkdoc.fsq.pub/client/uniCloud/db/api.html#%E6%9B%B4%E6%96%B0%E5%B9%B6%E8%BF%94%E5%9B%9E%E6%9B%B4%E6%96%B0%E5%90%8E%E7%9A%84%E6%95%B0%E6%8D%AE-%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C)
+* 2、【新增】`vk.pubfn.getDayOffsetStartAndEnd` 获得相对当前时间的偏移 count 天的起止日期(日的开始和结束) [点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-getdayoffsetstartandend-%E8%8E%B7%E5%BE%97%E7%9B%B8%E5%AF%B9%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4%E7%9A%84%E5%81%8F%E7%A7%BB-count-%E5%A4%A9%E7%9A%84%E8%B5%B7%E6%AD%A2%E6%97%A5%E6%9C%9F)
+* 3、【新增】`vk.pubfn.getMonthOffsetStartAndEnd` 获得相对当前时间的偏移 count 月的起止日期(月的开始和结束) [点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-getmonthoffsetstartandend-%E8%8E%B7%E5%BE%97%E7%9B%B8%E5%AF%B9%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4%E7%9A%84%E5%81%8F%E7%A7%BB-count-%E6%9C%88%E7%9A%84%E8%B5%B7%E6%AD%A2%E6%97%A5%E6%9C%9F)
+* 4、【新增】`vk.pubfn.getYearOffsetStartAndEnd`获得相对当前时间的偏移 count 年的起止日期(年的开始和结束) [点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-getyearoffsetstartandend-%E8%8E%B7%E5%BE%97%E7%9B%B8%E5%AF%B9%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4%E7%9A%84%E5%81%8F%E7%A7%BB-count-%E5%B9%B4%E7%9A%84%E8%B5%B7%E6%AD%A2%E6%97%A5%E6%9C%9F)
+* 5、【新增】`vk.pubfn.sleep` 进程等待(主要用于在云函数中需要故意等待几秒的情况)[点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-sleep-%E8%BF%9B%E7%A8%8B%E5%BC%BA%E5%88%B6%E7%AD%89%E5%BE%85-%E4%BC%91%E7%9C%A0)
+* 6、【新增】`app.config.js` 新增参数 `globalErrorCode` 可以修改全局异常的提示信息 [点击查看](https://vkdoc.fsq.pub/client/pages/config.html)
+* 7、【新增】`javascript代码块提示.json` 最近新增的api的代码提示 [点击查看](https://vkdoc.fsq.pub/client/codeTips.html)
+* 8、【优化】`vk.baseDao.selects`新增参数`addFields` [点击查看](https://vkdoc.fsq.pub/client/uniCloud/db/question.html#%E5%88%86%E7%BB%84count)
+* 9、【优化】`vk.pubfn.timeFormat` 等API,当参数time为字符串时间戳时的特殊处理 [点击查看](https://vkdoc.fsq.pub/client/jsapi.html#vk-pubfn-timeformat-%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F%E5%8C%96)
+* 10、【修复】腾讯云的图片上传无法回显图片的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+##### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.2.4(2021-08-06)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 【优化】一些细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.2.3(2021-08-05)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【修复】因`uni-id`配置隔离导致的微信`vk.openapi.weixin` API 兼容性问题。
+#### 2、【新增】`vk.pubfn.isArray` 判断变量是否是数组类型
+#### 3、【新增】`vk.pubfn.isObject` 判断变量是否是对象类型
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.2.2(2021-08-04)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【升级】`uni-id` 至 `3.3.3`
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.2.1(2021-08-04)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【升级】`uni-id` 至 `3.3.2`
+#### 2、【新增】云函数内表单验证文档 [点击查看](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=4313370&doc_id=975983)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.2.0(2021-07-28)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 【新增】前端 `vk.callFunction` 支持请求其他服务空间的云函数
+```js
+const myCloud = uniCloud.init({
+ provider: 'aliyun',
+ spaceId: 'xxxx-yyy',
+ clientSecret: 'xxxx'
+});
+vk.callFunction({
+ url: 'template/db_api/pub/count',
+ title:'请求中...',
+ unicloud: myCloud,
+ success(data) {
+ console.log(data);
+ }
+});
+```
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.1.7(2021-07-28)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 【新增】前端 `vk.callFunction` 支持请求其他服务空间的云函数
+```js
+const myCloud = uniCloud.init({
+ provider: 'aliyun',
+ spaceId: 'xxxx-yyy',
+ clientSecret: 'xxxx'
+});
+vk.callFunction({
+ url: 'template/db_api/pub/count',
+ title:'请求中...',
+ unicloud: myCloud,
+ success(data) {
+ console.log(data);
+ }
+});
+```
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.1.6(2021-07-22)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【修复】常用的 vk.baseDao `javascript代码块提示`(有部分错误的问题:少,号的问题)(在编辑器输入dao.即可弹出代码提示)[点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=4019184&doc_id=975983)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.1.5(2021-07-22)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【优化】新增常用的 vk.baseDao `javascript代码块提示` (在编辑器输入dao.即可弹出代码提示)[点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=4019184&doc_id=975983)
+
+#### 2、【优化】文档 [查看文档](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=2912167&doc_id=975983)
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.1.4(2021-07-12)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 【修复】已知问题
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.1.3(2021-07-12)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【修复】首次使用框架,上传部署后访问云函数可能会出现 `createInstance is undefined` 的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.1.2(2021-07-12)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【修复】连表查询时,因`lastWhereJson`而导致`getCount`错误的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.1.1(2021-07-12)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【修复】连表查询时,因`lastWhereJson`而导致`getCount`错误的问题。
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.1.0(2021-07-09)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要调整】删除了`config`公共模块,升级为`uni-config-center`模式 [点击查看升级教程](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=4219337&doc_id=975983)
+#### 1、【重要调整】删除了`config`公共模块,升级为`uni-config-center`模式 [点击查看升级教程](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=4219337&doc_id=975983)
+#### 1、【重要调整】删除了`config`公共模块,升级为`uni-config-center`模式 [点击查看升级教程](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=4219337&doc_id=975983)
+
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.0.8(2021-07-07)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 【修复】已知bug
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+### 如果你觉得框架对你有用,可以在下方进行评论。
+
+
+
+## 2.0.7(2021-06-28)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【修复】`user/kh/getMenu`云函数获取菜单错误的bug。
+#### 2、【修复】db_init.json `opendb-global-data`表`expired_at`索引设置错误 "MgoIsUnique": true 改为 "MgoIsUnique": false(需要把索引删除后重新创建,选择非唯一索引)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+### 如果你觉得框架对你有用,可以在下方进行评论。
+
+
+
+## 2.0.6(2021-06-28)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【优化】`vk.pubfn.timeFormat` 若参数不符合规则,则原值显示。
+#### 2、【优化】`vk.pubfn.random` 新增第三个参数`arr` (产生的随机数不会和此数组的任意一项重复) [点击查看](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3268613&doc_id=975983)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论。
+
+
+
+## 2.0.5(2021-06-16)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【修复】`vk.baseDao.add` 因hbx 3.1.18版本导致的本地运行时 `_add_time_str` 错误的问题。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论。
+
+
+
+## 2.0.4(2021-06-10)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【新增】`onActionIntercepted`(被中间件拦截时执行) 和 `onActionError`(云函数执行异常时执行) 类型中间件 [点击查看](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3035637&doc_id=975983)
+#### 2、【优化】过滤器 `timeFilter`、`dateDiff` 能正确识别10位数时间戳和13位时间戳。[点击查看](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3269404&doc_id=975983)
+#### 3、【优化】`vk.baseDao.sample` 支持 `fieldJson`参数 [点击查看数据API](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3065608&doc_id=975983)
+#### 4、【修复】`返回树状结构`时最后一级子节点没有继承主表`foreignDB`属性的bug。[查询返回树状结构文档](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3906510&doc_id=975983)
+#### 5、【优化】`vk.callFunctionUtil.uploadFile` 自动识别文件类型,无需传`fileType`参数
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论。
+
+## 2.0.3(2021-05-31)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【新增】`vk.callFunctionUtil.uploadFile` 新增参数 `file`,`needSave` 若needSave=true,则文件URL会保存到数据库。(会显示在admin端的素材管理中)
+#### 2、【优化】`vk.baseDao.selects` 和 `vk.baseDao.select` 新增两个属性`getOne` 、 `getMain` [点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=4054561&doc_id=975983)
+#### 3、【修复】`vk.callFunctionUtil.uploadFile` 上传视频时后缀名可能会错误的问题。
+#### 4、【优化】`云函数URL化` 路由模式下,URL重写支持只允许部分云函数可被访问。(可以做到只暴露指定的API接口,增加URL化后的安全性)
+#### `router/util/urlrewrite.js`文件配置内容如下 [点击URL重写规则](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3916806&doc_id=975983)
+```js
+/**
+ * URL重写
+ * 如让 https://xxx.bspapp.com/http/router/aaa 指向云函数 template/db_api/pub/select
+ */
+module.exports = {
+ "rule":{
+ "^findById/(.+)": "template/db_api/pub/findById?_id=$1",
+ "^aaa$": "template/db_api/pub/select"
+ },
+ "config":{
+ // 当设置为true时,只有符合url重写规则内的云函数才可以被url化访问。
+ "accessOnlyInRule":false
+ }
+};
+```
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.0.2(2021-05-21)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【新增】`vk.callFunctionUtil.uploadFile` 新增参数 `file`,`needSave` 若needSave=true,则文件URL会保存到数据库。(会显示在admin端的素材管理中)
+#### 2、【调整】`vk.baseDao.getTableData` 默认排序规则调整为`_id`降序,之前是`_add_time`降序
+#### 3、【优化】`vk.baseDao.getTableData` 和 `vk.baseDao.selects` 连表查询逻辑。
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.0.1(2021-05-21)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+####【优化】`vk.baseDao` API的查询性能。
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 2.0.0(2021-05-15)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【优化】用户角色权限,支持admin使用 [点击查看](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=4003879&doc_id=975983)
+#### 2、`vk-unicloud-admin`开发框架已正式上线
+#### 至此,`vk-unicloud` 系列如下,可以满足开发完整系统。
+##### `client端`框架地址:`https://ext.dcloud.net.cn/plugin?id=2204` [点击查看](https://ext.dcloud.net.cn/plugin?id=2204)
+##### `admin端`框架地址:`https://ext.dcloud.net.cn/plugin?name=vk-unicloud-admin` [点击查看](https://ext.dcloud.net.cn/plugin?name=vk-unicloud-admin)
+##### `client端`框架文档:`https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=2912167&doc_id=975983` [点击查看](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=2912167&doc_id=975983)
+##### `admin端`框架文档:`https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=4003875&doc_id=975983` [点击查看](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=4003875&doc_id=975983)
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
+
+### 如果你觉得框架对你有用,可以在下方进行评论,也可以进行赞赏。
+
+## 1.9.2(2021-04-23)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3541759&doc_id=975983)
+#### 2、【重要】【新增】 `pages-dev.json` 机制,写法与`pages.json` 相同,但里面的页面只有运行(开发)环境时才会被HBX打包,发行(正式)环境下不会被HBX打包进去。[点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3928718&doc_id=975983)
+```js
+可以将一些测试页面写在 `pages-dev.json`内,这些测试页面在正式发布时是不会被HBX打包到源码里的。
+```
+#### 3、【重要】【新增】阿里云和unicloud短信聚合API (阿里云短信的实现不依赖阿里云SDK核心库,无需`npm install @alicloud/pop-core`)[点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/%E4%B8%8A%E4%BC%A0%20%E4%BA%91%E5%82%A8%E5%AD%98%E6%88%96%E9%98%BF%E9%87%8C%E4%BA%91OSS?sort_id=3673784)
+
+#### 4、【重要】【废弃】原目录`util/smsUtil.js`(使用新的`vk.system.smsUtil.sendSms`聚合短信发送接口,且比之前的写法更优雅)
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.9.1(2021-04-19)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3541759&doc_id=975983)
+#### 2、【重要】【全网首家】`云函数url化` 支持以纯链接形式访问路由后的云函数 如: `https://xxx.bspapp.com/http/router/client/user/pub/findGoodsInfo?id=1`
+#### 3、【重要】【全网首家】`云函数url化` 支持URL重写 [点击查看URL重写详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3916806&doc_id=975983)
+#### 4、【优化】`vk.selects` 支持主表外键是数组的情况下(如`uni-id-users`表的`role`字段)连表查出`roleList` [点击查看场景5](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3028633&doc_id=975983)
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.9.0(2021-04-15)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3541759&doc_id=975983)
+#### 2、【重要】`vk.selects` 支持返回树状结构 [点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3906510&doc_id=975983)
+#### 3、【新增】`vk.pubfn.deepClone` 深度克隆(与`vk.pubfn.copyObject`的区别:可以克隆函数)
+#### 4、【优化】`vk.setData` 内部逻辑
+#### 5、【优化】`使用帮助/代码快捷提示/javascript代码块提示.json` 代码块有更新 (将文件内的代码复制到 hbx 工具 - 代码块设置 - javascript代码块)
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.14(2021-04-13)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3541759&doc_id=975983)
+#### 2、【修复】`console.log`在小程序端可能会无法打印出代码所在位置的问题。
+#### 3、【优化】云函数中 `vk.request`新增参数`needOriginalRes` 默认为`false`,若为`true`,则会返回原始数据(包含请求头等数据)
+#### 4、【调整】`vk.request`默认的`header`与官方对其(之前默认是`{"content-type": "application/json; charset=UTF-8"}`)
+#### 5、【优化】`uni-id` 模式调整为:兼容单实例多并发模式
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.13(2021-04-07)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3541759&doc_id=975983)
+#### 2、【优化】`vk.baseDao.selects` 支持`_.geoNear`API(将记录按照离给定点从近到远输出。)[点击查看万能连表场景4](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3028633&doc_id=975983)
+```
+官方原生语法中,连表查询和非连表查询在使用`_.geoNear`时用较大差别;
+而 vk.baseDao.selects(万能连表)写法跟 vk.baseDao.select(单表查询) 写法保持统一,使上手更简单。
+```
+#### 3、【优化】如需要在云函数中主动抛出异常,且能让前端框架自动识别后进行alert弹窗提示,则可使用以下方式
+```js
+// 注意: 必须以msg:为前缀,否则框架无法识别(只支持字符串)
+throw new Error("msg:这里是错误的提示");
+```
+#### 4、【新增】`app.config.js` 新增 `tokenExpiredAutoDelete` 属性,默认`true` 若设为`false`,则`token`失效时,依然保留前端的`token缓存`。
+
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.12(2021-03-27)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3541759&doc_id=975983)
+#### 2、【新增】`百度开放平台API接口` (营业执照识别、身份证识别等) [点击查看](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3803034&doc_id=975983)
+#### 3、【优化】`kh`目录下的函数默认会获取 `userInfo`(当前登录用户信息),如果此云函数不需要用户信息,可以在前端多传一个参数`need_user_info:false` 可以减少一次数据库查询(加快响应速度)(快100ms左右) [点击查看](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3790840&doc_id=975983)
+#### 4、【优化】`returnUserInfoFilter` 过滤器的内部逻辑
+#### 5、【优化】`vk.callFunction` 新增参数 `needAlert`(默认为true) 来代替 `noAlert`(默认为false) 二选一即可(建议后面都使用`needAlert`参数,它更语义化)
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.11(2021-03-24)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3541759&doc_id=975983)
+#### 2、【新增】`vk.pubfn.timeUtil.isLeapYear` 判断是否是闰年
+#### 3、【新增】`vk.pubfn.timeUtil.isQingming` 判断是否是清明节
+#### 4、【新增】清明节灰色页面实现方案 [点击查看](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3782115&doc_id=975983)
+```js
+/**
+ * 判断是否是闰年
+ * @params {Number | Date} year 需要计算的年份或时间,默认使用当前时间的年份
+ */
+vk.pubfn.timeUtil.isLeapYear(2021);
+/**
+ * 判断是否是清明节
+ * @params {Object} date 时间对象
+ */
+vk.pubfn.timeUtil.isQingming(new Date());
+```
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.10(2021-03-23)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【优化】新增`app`环境中直接保存用户微信昵称和头像的使用示例。`/pages_template/uni-id/weixin/weixin`
+#### 3、【修复】`vuex`储存值为0时,会变成`空字符串`的问题。
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.9(2021-03-20)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】升级至`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【优化】`vk.userCenter.code2SessionWeixin` 的内部逻辑。使之可以正确的和`vk.userCenter.loginByWeixinPhoneNumber` 搭配使用
+#### #### 效果:使用微信手机号一键登录后,同时绑定微信openid和mobile
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.8(2021-03-19)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】升级至`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【修复】微信小程序服务端API在保存`token`时,缓存时间错误的问题。
+#### 3、【修复】`vk.callFunctionUtil.uploadFile` 上传视频返回`.png`的问题 [点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3673784&doc_id=975983)
+#### 4、【新增】APP本机号码一键登录API `vk.userCenter.loginByUniverify`
+```js
+示例页面:/pages_template/uni-id/univerify/univerify
+```
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.7(2021-03-19)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】升级至`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【优化】在安装了`vuex`后,移除了名为`uni_id_user_info`的本地缓存(重复了)(`userInfo`使用`vk.getVuex('$user.userInfo')`获取)
+#### 3、【修复】微信小程序服务端API在获取`token`时,没有正确使用缓存的问题。
+#### 4、【新增】APP本机号码一键登录API `vk.userCenter.loginByUniverify`
+```js
+示例页面:/pages_template/uni-id/univerify/univerify
+```
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.6(2021-03-12)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】升级至`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【重要】现在可以在js文件中直接通过 `uni.vk` 来使用 `vk` 对象内的API
+#### 3、【新增】`app.config.js` 新增参数 `checkSharePages` 控制页面是否可以被小程序分享
+#### 4、【优化】发行模式下,`console.log` 将不会打印任何日志。
+```js
+若发行模式下需要强制打印,可用 `vk.log` 代替 `console.log`
+```
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+## 1.8.5(2021-03-10)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】升级至`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【新增】`vk.callFunctionUtil.uploadFile` 支持前端直传至`阿里云oss` [点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3673784&doc_id=975983)
+#### 3、【新增】`app.config.js` 新增 `myfn` 参数,可用来拓展自定义公共函数 [点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3673929&doc_id=975983)
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.4(2021-03-06)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】升级至`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【新增】`vk.openapi.weixin.subscribeMessage.send` 微信小程序发送订阅消息 [点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3569379&doc_id=975983)
+```
+示例页面:/pages_template/openapi/weixin/sendMessage/sendMessage
+```
+#### 3、【优化】`vk.baseDao.add` 和 `vk.baseDao.adds` 新增参数 `cancelAddTime` 为`true`,则不会有`_add_time`和`_add_time_str`字段生成
+#### 4、【优化】`vk.baseDao.add` 和 `vk.baseDao.adds` 支持添加自定义 `_id`
+#### 5、【优化】`vk.setVuex` 和 `vk.setData` 的赋值逻辑
+```
+需替换:/store/index.js 文件
+```
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+## 1.8.3(2021-03-04)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】升级至`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【重要】`vuex` 的使用方式有较大更新。(有性能提升)[点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3654596&doc_id=975983)
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+## 1.8.2(2021-03-01)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】升级至`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【修复】`vk.baseDao.deleteById` 会报`vk is not defined`的错误。
+#### 3、【重要】公共模块`config` 的默认`passwordSecret`和`tokenSecret`调整为与`uni-id`默认`config`一致
+```js
+`tokenSecret`一致的好处:兼容clientDB
+注意:如您目前的项目已上线,请谨慎修改passwordSecret(tokenSecret已上线的项目也可以修改)。
+```
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+## 1.8.1(2021-02-23)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】升级至`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【优化】`vk.baseDao.selects` 支持副表与副表的副表进行连表 [点击查看详情](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3028633&doc_id=975983)
+```
+1.1、支持无限张副表和主表进行连接(横向无限张表)
+1.2、支持副表与副表的副表进行连接(竖向无限层连接)
+```
+#### 3、【新增】微信小程序服务端API [点击查看文档](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/pages?sort_id=3569379&doc_id=975983)
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
+
+## 1.8.0(2021-02-07)
+### uniCloud 云函数路由研究群:22466457 如有问题或建议可以在群内讨论。
+### 更新内容
+#### 1、【重要】升级至`uni_modules`版本 [点击查看升级指南](https://gitee.com/vk-uni/vk-uni-cloud-router/wikis/1.8%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC%E5%8D%87%E7%BA%A7%E8%87%B31.8%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97%20%E5%8D%87%E7%BA%A7%E6%88%90%20uni_modules%E7%89%88%E6%9C%AC?sort_id=3541759)
+#### 2、【重要】本次更新文件有重大改动,升级成功后将变成`uni_modules`版本,下次更新框架只需要在hbx编译器中一键更新。
+#### 3、【新增】【小程序API】`vk.userCenter.loginByWeixinPhoneNumber` 前端可以使用微信小程序一键进行手机号登录
+#### 4、【新增】【小程序API】`vk.userCenter.getPhoneNumber` 前端一键获取微信小程序绑定的手机号
+#### 5、【新增】【小程序API】`vk.openapi.weixin.decrypt.getPhoneNumber` 云函数解析微信小程序绑定的手机号
+#### 6、【新增】【小程序API】`vk.userCenter.getWeixinMPqrcode` 前端一键生成带参数的小程序码
+#### 7、【新增】【小程序API】`vk.userCenter.getWeixinMPscheme` 前端一键生成带参数的小程序scheme码(支持从手机短信跳转到小程序)
+#### 8、【优化】`middleware/modules/returnUserInfoFilter` 中间件的处理逻辑。
+#### 9、【优化】`javascript代码块提示.json` 输入`vk.`可以快速提示代码块 `根目录/使用帮助/代码快捷提示`
+
+#### 如有疑问,请加群:22466457 关于插件的问题包教包会!
+### 你也可以在评论区发布留言交流心得。
diff --git a/changelog.new.md b/changelog.new.md
new file mode 100644
index 0000000..9268594
--- /dev/null
+++ b/changelog.new.md
@@ -0,0 +1,8 @@
+* 【修复】`短信发送` 接口当uni-id配置成多端隔离(数组形式)会报错的bug
+* 【修复】`vk.importObject` 部分情况下会报错的问题
+* 【优化】如果当前运行的微信小程序是体验版,但没有点HBX的【发行】菜单发布,则提示开发者请点【发行】按钮
+* 【优化】`$hasRole`函数的功能 [传送门](https://vkdoc.fsq.pub/client/jsapi.html#hasrole)
+* 【优化】`vk.pubfn.timeFormat` 支持显示时区,完整格式为 `yyyy-MM-ddThh:mm:ssZ`
+* 【优化】其他细节
+
+##### 框架学习Q群:`22466457` 欢迎萌新和大佬来使用和共同改进框架
\ No newline at end of file
diff --git a/common/css/app.scss b/common/css/app.scss
new file mode 100644
index 0000000..d1128a0
--- /dev/null
+++ b/common/css/app.scss
@@ -0,0 +1,28 @@
+/* 这里是你自己写的全局css样式 */
+@import "@/common/css/common.css";
+/* #ifdef H5 */
+.uni-mask,
+.uni-modal,
+uni-toast,
+uni-modal,
+.uni-actionsheet {
+ z-index: 999999 !important;
+}
+/* #endif */
+
+
+/* 改变主题色变量 */
+$--color-primary: #A92924;
+
+/* 改变 icon 字体路径变量,必需 */
+$--font-path: '~element-ui/lib/theme-chalk/fonts';
+
+@import "~element-ui/packages/theme-chalk/src/index";
+
+.el-input.is-disabled .el-input__inner {
+ color: #333333 !important;
+}
+
+.vk-data-form .bar-title{
+ display: block;
+}
\ No newline at end of file
diff --git a/common/css/common.css b/common/css/common.css
new file mode 100644
index 0000000..bab411b
--- /dev/null
+++ b/common/css/common.css
@@ -0,0 +1,2075 @@
+/* CSS Document */
+/*去除浏览器默认样式*/
+* {
+ box-sizing: border-box;
+ border: 0;
+ padding: 0;
+ margin: 0;
+}
+
+.layui-carousel-arrow {
+ border-radius: 0 !important
+}
+
+* {
+ margin: 0;
+ padding: 0;
+ font-family: -apple-system, BlinkMacSystemFont, PingFang SC, Hiragino Sans GB, Roboto, Arial, Microsoft YaHei, sans-serif;
+ /* color: #333; */
+}
+
+* {
+ margin: 0px;
+ padding: 0px;
+ border: none;
+ outline: none;
+}
+
+address, caption, cite, code, dfn, em, th, var, i, b {
+ font-style: normal;
+ font-weight: normal;
+}
+
+*:before, *:after {
+ box-sizing: border-box;
+}
+
+*, *:before, *:after {
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+html, body, div, p, ul, li, dl, dt, dd, h1, h2, h3, h4, h5, h6, form, input, select, .button, textarea, iframe, table, th, td {
+ margin: 0;
+ padding: 0;
+}
+
+input::-webkit-outer-spin-button,
+input::-webkit-inner-spin-button{
+ -webkit-appearance: none !important;
+}
+input[type="number"]{
+ -moz-appearance:textfield;
+}
+
+img {
+ border: 0 none;
+ vertical-align: top;
+}
+.button{
+ cursor: pointer;
+ text-align: center;
+ vertical-align: middle;
+ display: table-cell;
+}
+body, input, select, .button, textarea {
+ font-size: 13px;
+}
+
+textarea:disabled {
+ cursor: not-allowed;
+}
+
+li {
+ list-style: none;
+}
+
+.arial {
+ font-family: arial;
+}
+
+.song {
+ font-family: "\5b8b\4f53";
+}
+
+input[type=button], input[type=submit], input[type=reset] {
+ cursor: pointer
+}
+
+button {
+ cursor: pointer
+}
+
+input[type=text], input[type=password], input[type=file], textarea {
+ -webkit-border-radius: 0;
+ -webkit-appearance: normal
+}
+
+textarea {
+ overflow: auto;
+ resize: none
+}
+
+body {
+ background: #f4f4f4;
+ color: #000;
+ line-height: 1.5;
+ margin: 0 auto;
+ width: 100%;
+}
+
+html {
+ -webkit-text-size-adjust: none;
+}
+
+a {
+ color: #646464;
+ text-decoration: none;
+}
+
+a * {
+ *cursor: pointer
+}
+
+a {
+ blr: expression(this.onFocus=this.blur());
+}
+
+a:hover {
+ text-decoration: none !important;
+ outline: none;
+}
+
+a:focus {
+ outline: none;
+}
+
+.fixed:after, .clearfix:after, .cf:after {
+ content: ".";
+ display: block;
+ clear: both;
+ height: 0;
+ visibility: hidden;
+ overflow: hidden
+}
+
+.fixed, .clearfix, .cf {
+ zoom: 1
+}
+
+.clear:after, .global-clearfix:after {
+ content: "";
+ display: block;
+ visibility: hidden;
+ height: 0;
+ clear: both;
+}
+
+.clearfix:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ font-size: 0;
+ line-height: 0;
+}
+
+.clearfix {
+ *zoom: 1;
+}
+
+.clear, .global-clearfix {
+ zoom: 1;
+}
+
+.fl, .fr {
+ display: inline;
+ float: left;
+}
+
+.fr {
+ float: right
+}
+
+.center {
+ text-align: center;
+}
+
+.hidden02 {
+ display: none;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0
+}
+
+caption, th {
+ text-align: left
+}
+
+th {
+ font-weight: normal
+}
+
+
+a {
+ blr: expression(this.onFocus=this.blur())
+}
+
+a * {
+ *cursor: pointer
+}
+
+:focus {
+ outline: none
+}
+
+i {
+ font-style: normal;
+}
+
+img {
+ overflow: hidden;
+}
+
+body {
+ min-width: 1200px;
+ word-wrap: break-word;
+ color: #000;
+}
+
+.group-wagbar {
+ height: 32px;
+ background: #fafafa;
+ position: relative;
+ z-index: 99;
+ border-bottom: 1px solid #f1f1f1;
+ line-height: 1.5;
+ color: #656565;
+ font-size: 12px;
+ font-family: -apple-system, BlinkMacSystemFont, Hiragino Sans GB, Microsoft YaHei, sans-serif;
+}
+
+.group-wagbar .group-inner {
+ width: 1200px;
+ margin: 0 auto;
+}
+
+.mod-welcome {
+ display: inline-block;
+ font-size: 0;
+}
+
+.mod-welcome .app-download {
+ position: relative;
+ margin: 0 16px 0 10px;
+ padding-left: 20px;
+ height: 32px;
+ line-height: 32px;
+ color: #656565;
+ display: inline-block;
+ vertical-align: middle;
+ font-size: 12px;
+}
+
+.group-wagbar .group-inner a {
+ color: #656565;
+}
+
+.mod-welcome .welcome-item {
+ display: inline-block;
+ height: 32px;
+ line-height: 32px;
+ vertical-align: middle;
+ font-size: 12px;
+}
+
+.mod-welcome .slogan {
+ margin-right: 10px;
+}
+
+.mod-welcome .welcome-item.login-register {
+
+}
+
+.mod-welcome .login {
+ margin-right: 8px;
+}
+
+.mod-welcome .login, .mod-welcome .register {
+ font-size: 12px;
+}
+
+.group-wagbar .group-inner a, .mod-tools a, a, a:hover {
+ text-decoration: none;
+}
+
+.group-wagbar .group-inner a.login, .group-wagbar .group-inner a:hover, .mod-welcome .welcome-item .menu-bd .user-info.active .name, .mod-welcome .welcome-item .menu-bd.show .user-info .name {
+ color: #a92924;
+}
+
+.group-wagbar .group-inner a {
+ color: #656565;
+}
+
+.mod-tools {
+ float: right;
+}
+
+ol, ul {
+ list-style: none;
+}
+
+.mod-tools .tool-item {
+ position: relative;
+ text-align: center;
+ height: 32px;
+}
+
+.mod-tools li {
+ float: left;
+}
+
+.mod-tools .bar-title {
+ display: block;
+ height: 32px;
+ line-height: 32px;
+ color: #959595;
+ padding: 0px 10px;
+ position: relative;
+}
+
+.group-wagbar .group-inner a, .mod-tools a, a, a:hover {
+ text-decoration: none;
+}
+
+.wag-icon, em, i {
+ font-style: normal;
+}
+
+.mod-tools .bar-title i {
+ -webkit-transition: -webkit-transform .3s;
+ -o-transition: transform .3s;
+ transition: transform .3s;
+ transition: transform .3s, -webkit-transform .3s;
+ background: url(/static/images/dowm.png) 50% no-repeat;
+ -webkit-background-size: contain;
+ background-size: contain;
+ display: inline-block;
+ width: 10px;
+ height: 4px;
+ margin-left: 7px;
+ vertical-align: 2px;
+}
+
+.mod-tools .bar-content {
+ display: none;
+ position: absolute;
+ top: 32px;
+ right: 0;
+ width: 100%;
+ padding: 12px 0;
+ background: #fff;
+ -webkit-box-shadow: 0 0 16px 0 hsla(0, 0%, 77.3%, .5);
+ box-shadow: 0 0 16px 0 hsla(0, 0%, 77.3%, .5);
+ text-align: left;
+}
+
+.mod-tools .bar-content dd {
+ height: 32px;
+ line-height: 32px;
+ text-align: center;
+}
+
+.mod-tools .bar-content dd a {
+ display: block;
+ padding: 0 8px;
+}
+
+.mod-tools .bar-content a {
+ color: #656565;
+}
+
+.mod-tools .bar-title:hover {
+ color: #a92924
+}
+
+.mod-tools .tool-item:hover {
+ z-index: 3;
+ -webkit-box-shadow: 0 0 16px 0 hsla(0, 0%, 77.3%, .5);
+ box-shadow: 0 0 16px 0 hsla(0, 0%, 77.3%, .5);
+}
+
+.mod-tools .tool-item:hover .bar-title i {
+ background-image: url(/static/images/dowm2.png);
+ -webkit-transform: rotate(-180deg);
+ -ms-transform: rotate(-180deg);
+ transform: rotate(-180deg);
+}
+
+.mod-tools .tool-item:hover .bar-title {
+ background: #fff;
+ z-index: 1;
+ color: #a92924;
+}
+
+.mod-tools .tool-item:hover .bar-content {
+ display: block;
+}
+
+.mod-tools .bar-content dd a:hover {
+ background: #f5f5f5;
+}
+
+.mod-tools .bar-content a:hover {
+ color: #a92924;
+}
+
+.tool-item2 span {
+ background: url(/static/images/icon1.png) left center no-repeat;
+ padding-left: 25px;
+ display: block;
+ background-size: 17px;
+}
+
+h1, h2, h3, h4, h5 {
+ font-weight: 400;
+}
+
+.bar-head {
+ transition: top .3s ease-out;
+}
+
+.group-head {
+ width: 100%;
+ position: relative;
+ z-index: 98;
+ background: #fff;
+ color: #656565;
+ font-family: -apple-system, BlinkMacSystemFont, Hiragino Sans GB, Microsoft YaHei, sans-serif;
+ transition: top .3s ease-out;
+}
+
+.group-head.sticky {
+ position: fixed;
+ z-index: 29899;
+ left: 0;
+ top: 0;
+ width: 100%;
+ -webkit-animation: slowDown-data-v-707b4ed9 .4s ease-in-out;
+ animation: slowDown-data-v-707b4ed9 .4s ease-in-out;
+ background-color: #fff;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, .2);
+}
+
+.group-head {
+ position: relative;
+ z-index: 98;
+ background: #fff;
+ line-height: 1.5;
+ color: #656565;
+ font-size: 12px;
+ font-family: -apple-system, BlinkMacSystemFont, Hiragino Sans GB, Microsoft YaHei, sans-serif;
+ -webkit-transition: top .3s ease-out;
+ -o-transition: top .3s ease-out;
+ transition: top .3s ease-out;
+}
+
+.group-head .group-inner {
+ width: 1200px;
+ margin: 0 auto;
+ margin-bottom: 15px;
+}
+
+.mod-logo {
+ height: 100%;
+ float: left;
+
+}
+
+.group-head .group-inner a {
+ color: #656565;
+ text-decoration: none;
+}
+
+.mod-logo .logo {
+ display: block;
+ width: 250px;
+ margin-top: 20px;
+}
+
+.mod-logo .logo img {
+ height: 82px;
+ max-width: 100%;
+}
+
+.mod-mini-search {
+ float: left;
+ margin: 18px 0 0 60px;
+ width: 505px;
+ position: relative;
+ z-index: 1;
+ box-sizing: border-box;
+ transition: top .3s ease-out;
+}
+
+.mod-menu {
+ float: left;
+ line-height: 60px;
+}
+
+.mod-menu .hrd {
+ position: relative;
+ float: left;
+ margin: 30px 0 0 16px;
+ display: inline-block;
+ border-radius: 2px;
+}
+
+.mod-mini-search .mod-hot-query {
+ white-space: nowrap;
+ overflow: hidden;
+ font-size: 0;
+}
+
+.mod-mini-search .mod-hot-query li {
+ display: inline-block;
+ padding: 5px 8px;
+ font-size: 12px;
+}
+
+.group-head .group-inner a {
+ color: #656565;
+ text-decoration: none;
+}
+
+.hrd-landing img {
+ height: 19px;
+ width: 194px;
+ display: block;
+ vertical-align: middle;
+ text-align: center;
+ margin-top: 30px;
+}
+
+.hrd-landing {
+ height: 33px;
+ display: block;
+ vertical-align: middle;
+ text-align: center;
+ line-height: 33px;
+}
+
+.group-head:not(.fixed):not(.top) .mod-download-icon {
+ float: right;
+ margin: 15px 0px 0 0;
+}
+
+.group-head .mod-download-icon .download {
+ display: block;
+}
+
+.group-head:not(.fixed):not(.top) .mod-download-icon .download {
+ padding-top: 0px;
+ margin: 0 auto;
+}
+
+.group-nav {
+ background: #fff;
+}
+
+.first-level-nav {
+ border-bottom: 2px solid #a92924;
+}
+
+.group-nav .mod-nav .first-level-nav ul {
+ margin: 0 auto;
+ padding-left: 0px;
+}
+
+.group-nav .mod-nav .navigation-bottom {
+ width: 1200px;
+ height: 40px;
+ margin: 0px auto;
+}
+
+.group-nav .mod-nav ul li {
+ position: relative;
+}
+
+.group-nav .linkNav ul li .nav, .group-nav .linkNav ul li a {
+ display: block;
+ font-size: 15px;
+ line-height: 40px;
+ color: #353535;
+ font-weight: 400;
+}
+
+.group-nav .mod-nav .first-level-nav ul li.nav.act a, .second-level-nav .sub-nav-wraper .sub-nav a:hover, .second-level-nav .sub-nav-wraper .sub-nav.act a {
+ color: #a92924;
+}
+
+.group-nav .mod-nav .entry, .login-info {
+ float: right;
+ width: 209px;
+ overflow: hidden;
+ position: relative;
+ text-align: center;
+}
+
+.group-nav .mod-nav .entry .entry-link {
+ width: 100%;
+ height: 32px;
+ vertical-align: middle;
+ line-height: 32px;
+ padding: 0;
+ font-size: 16px;
+ font-weight: 300;
+ color: #fff;
+}
+
+.group-nav .mod-nav .entry .entry-link img {
+ vertical-align: middle;
+ display: block;
+ height: 18px;
+ line-height: 32px;
+ margin-top: 10px;
+ width: 172px;
+}
+
+.group-nav .mod-nav ul li.nav a:hover {
+ color: #a92924;
+ background: #fdf1f1
+}
+
+.group-head .group-inner a:hover {
+ color: #a92924;
+ text-decoration: none
+}
+
+
+.group-nav .mod-nav ul li.nav .navigator:hover {
+ color: #a92924;
+ background: #fdf1f1
+}
+
+.group-head .group-inner .navigator:hover {
+ color: #a92924;
+ text-decoration: none
+}
+.navigation-wrap * {
+ box-sizing: border-box;
+}
+
+.navigation-top .searchBar .searchBar-tab {
+ overflow: hidden;
+
+}
+
+.navigation-top .searchBar .searchBar-tab li {
+ padding: 5px 10px;
+ float: left;
+ cursor: pointer;
+}
+
+.navigation-top .searchBar .button {
+ float: left;
+ width: 90px;
+ height: 36px;
+ line-height: 36px;
+ background: #d0111b;
+ border: 0;
+ color: #fff;
+ font-size: 14px;
+ cursor: pointer;
+ outline: none;
+}
+
+.navigation-top .searchBar .preventButton {
+ position: absolute;
+ z-index: -1000;
+ top: -1000px;
+}
+
+
+
+.navigation-top .searchBar .searchBar-input .searchBar-input-list {
+ position: absolute;
+ width: 100%;
+ max-height: 258px;
+ overflow: auto;
+ z-index: 22;
+ background: #fff;
+ border: 1px solid #dbdbdb;
+ overflow: auto;
+ box-shadow: 0 0 15px rgba(0, 0, 0, 0.1);
+}
+
+.navigation-top .searchBar .searchBar-input input {
+ width: 390px;
+ height: 36px;
+ border: 2px solid #d0111b;
+ border-right: 0;
+ padding: 0 10px;
+ font-size: 13px;
+ outline: none;
+}
+
+button, input, select, textarea {
+ font-size: 100%;
+}
+
+.navigation-top .searchBar .searchBar-tab li {
+ padding: 5px 10px;
+ float: left;
+ cursor: pointer;
+ font-size: 14px;
+}
+
+.navigation-top .searchBar .searchBar-tab li.active {
+ background: #d0111b;
+ color: #fff;
+}
+
+.navigation-top .searchBar .searchBar-input {
+
+ position: relative;
+}
+
+.searchBar-input-inner {
+ float: left;
+}
+
+.navigation-bottom .classification {
+ float: left;
+ width: 220px;
+ height: 40px;
+ cursor: pointer;
+ position: relative;
+}
+
+.navigation-bottom .linkNav {
+ float: left;
+ width: 760px;
+ overflow: hidden;
+}
+
+.navigation-bottom .classification .classification-text {
+ line-height: 42px;
+ color: #fff;
+ font-size: 15px;
+ text-align: center;
+ background: #a92924;
+}
+
+.icon-nav-menu {
+ width: 36px;
+ height: 34px;
+ vertical-align: middle;
+ margin-right: 15px;
+}
+
+.icon-nav {
+ display: inline-block;
+ background: url(/static/images/icon2.png) no-repeat center center;
+}
+
+.navigation-bottom .linkNav ul li {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ flex: 1;
+ min-width: 0;
+ text-align: center;
+}
+
+.group-nav .linkNav ul {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ align-items: center;
+ position: relative;
+ width: 100%;
+}
+
+.slideMain {
+ position: relative;
+}
+
+#bannerSwiper img {
+ width: 100%;
+ overflow: hidden;
+}
+
+.callbacks_nav {
+ left: 60px;
+}
+
+.callbacks_nav.next {
+ right: 60px;
+}
+
+#slide .pagination {
+ position: absolute;
+ left: 0;
+ text-align: center;
+ bottom: 0px;
+ width: 100%;
+ z-index: 999;
+}
+
+#slide .swiper-pagination-bullet {
+ display: inline-block;
+ width: 10px;
+ height: 7px;
+ opacity: 1;
+ border-radius: 10px;
+ background: white;
+ margin: 0 3px;
+ cursor: pointer;
+ transition: width 0.3s ease-in-out;
+}
+
+#slide .swiper-pagination-bullet-active {
+ background: #a92924;
+ width: 38px;
+}
+
+.slideBannerWrap {
+ width: 100%;
+ text-align: center;
+ position: relative;
+}
+
+#slide .pagination {
+ margin: 10px 0px;
+}
+
+#slide .arrow-left {
+ background: url(/static/images/banner_arrow.png) no-repeat left top;
+ position: absolute;
+ left: 20px;
+ top: 50%;
+ transform: translate(20px, -50%);
+ width: 70px;
+ height: 70px;
+ z-index: 999;
+ display: none;
+}
+
+#slide .arrow-right {
+ background: url(/static/images/banner_arrow.png) no-repeat left bottom;
+ position: absolute;
+ right: 20px;
+ top: 50%;
+ transform: translate(-20px, -50%);
+ width: 70px;
+ height: 70px;
+ z-index: 999;
+ display: none;
+}
+
+#slideBannerWrap:hover #slide .arrow-right {
+ display: block;
+}
+
+#slideBannerWrap:hover #slide .arrow-left {
+ display: block;
+}
+
+.navigation-bottom .classification .banner-left {
+ width: 220px;
+ background: #fff;
+ float: left;
+ position: relative;
+ z-index: 101;
+}
+
+.cate-menu {
+ height: 500px;
+ overflow: hidden;
+ width: 100%;
+}
+
+/* rslides */
+.rslides {
+ position: relative;
+ list-style: none;
+ overflow: hidden;
+ width: 100%;
+ padding: 0;
+ margin: 0;
+}
+
+.rslides li {
+ -webkit-backface-visibility: hidden;
+ position: absolute;
+ display: none;
+ width: 100%;
+ left: 0;
+ top: 0;
+}
+
+.rslides li a {
+ text-align: center;
+ margin: 0px auto;
+ height: 365px;
+ width: 760px;
+ position: relative;
+}
+
+.rslides img {
+ display: block;
+ height: auto;
+ float: left;
+ width: 100%;
+ border: 0;
+}
+
+/*pager*/
+.callbacks_tabs.callbacks1_tabs {
+ position: absolute;
+ z-index: 100;
+ margin-bottom: 0px;
+ bottom: 10px;
+ left: 0px;
+ right: 0px;
+ text-align: center;
+ margin: 0px auto;
+}
+
+.callbacks_tabs.callbacks1_tabs li {
+ display: inline-block;
+ width: 23px;
+ height: 8px;
+ margin-left: 10px;
+ border-radius: 10px;
+ background: #fff;
+ position: relative;
+}
+
+.callbacks_tabs.callbacks1_tabs li.callbacks_here {
+ width: 45px;
+ background: #a92924;
+}
+
+.callbacks_tabs.callbacks1_tabs li a {
+ display: none;
+}
+
+/* Callback example */
+.callbacks_container {
+
+ position: relative;
+ width: 100%;
+ max-width: 100%;
+ text-align: center;
+}
+
+.callbacks {
+ position: relative;
+ list-style: none;
+ overflow: hidden;
+ width: 100%;
+ padding: 0;
+ margin: 0;
+}
+
+.callbacks li {
+ position: absolute;
+ width: 100%;
+ left: 0;
+ top: 0;
+}
+
+.callbacks img {
+ display: block;
+ position: relative;
+ z-index: 1;
+ height: auto;
+ width: 100%;
+ border: 0;
+}
+
+.callbacks .caption {
+ display: block;
+ position: absolute;
+ z-index: 2;
+ font-size: 20px;
+ text-shadow: none;
+ color: #fff;
+ background: #000;
+ background: rgba(0, 0, 0, .8);
+ left: 0;
+ right: 0;
+ bottom: 0;
+ padding: 10px 20px;
+ margin: 0;
+ max-width: none;
+}
+
+.callbacks_nav {
+ position: absolute;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ top: 50%;
+ left: 0;
+ opacity: 0.6;
+ z-index: 3;
+ text-indent: -9999px;
+ overflow: hidden;
+ text-decoration: none;
+ height: 61px;
+ width: 38px;
+ background: transparent url("/static/images/themes.gif") no-repeat left top;
+ margin-top: -30px;
+ display: none;
+}
+
+.callbacks_container:hover .callbacks_nav {
+ display: block;
+}
+
+.callbacks_nav:active {
+ opacity: 1.0;
+}
+
+.callbacks_nav.next {
+ left: auto;
+ background-position: right top;
+ right: 0;
+}
+
+.zghome-nav-display {
+ display: block !important
+}
+
+.part-category-bg {
+ position: absolute;
+ height: 20px;
+ background: #fff;
+ z-index: 3;
+ top: 40px;
+ width: 125px;
+}
+
+.part-category {
+ position: relative;
+ width: 100%;
+ background: #fff;
+ box-sizing: border-box;
+}
+
+.part-category {
+ display: block;
+ box-shadow: 0 0 16px 0 hsla(0, 0%, 77%, .5);
+}
+
+.part-category .cate-menu ul li .cate-menu-icon {
+ position: absolute;
+ left: 3px;
+ top: 14px;
+ width: 34px;
+ height: 24px;
+}
+
+.cate-icon-1 {
+ background: url(/static/images/icon6.png) no-repeat center center;
+}
+.cate-icon-2 {
+ background: url(/static/images/icon3.png) no-repeat center center;
+}
+.cate-icon-3 {
+ background: url(/static/images/icon4.png) no-repeat center center;
+}
+.cate-icon-4 {
+ background: url(/static/images/icon5.png) no-repeat center center;
+}
+.cate-icon-5 {
+ background: url(/static/images/icon7.png) no-repeat center center;
+}
+.cate-icon-6 {
+ background: url(/static/images/icon19.png) no-repeat center center;
+}
+
+
+
+.part-category .cate-menu ul li h2 {
+ margin-bottom: 6px;
+ font-size: 0;
+ color: #353535;
+}
+
+.part-category .cate-menu ul li h2 a {
+ color: #353535;
+ font-weight: 500;
+}
+
+.part-category .cate-menu ul li h2 .separator, .part-category .cate-menu ul li h2 a {
+ font-size: 16px;
+}
+
+.cate-menu ul li {
+ position: relative;
+ padding: 13px 9px 2px 35px;
+}
+
+.part-category .cate-menu ul li .cate-item {
+ overflow: hidden;
+ margin-left: -16px;
+ font-size: 0;
+}
+
+.part-category .cate-menu ul li .cate-item a, .part-category .cate-menu ul li .cate-item span {
+ margin: 0 0 0 16px;
+ line-height: 25px;
+ display: inline-block;
+ font-size: 12px;
+}
+
+a:hover {
+ color: #a92924;
+}
+
+.navigator:hover {
+ color: #a92924;
+}
+
+.part-category .cate-menu ul li h2 .separator, .part-category .cate-menu ul li h2 a {
+ font-size: 16px;
+}
+
+.part-category .cate-menu ul li h2 a {
+ color: #353535;
+ line-height: 1.5;
+ font-weight: 500;
+ display: inline-block;
+}
+
+.part-category .cate-menu ul li.act {
+ position: relative;
+ z-index: 1;
+ -webkit-transition: .1s;
+ -o-transition: .1s;
+ transition: .1s;
+}
+
+.part-category .cate-cont {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 219px;
+ width: 725px;
+ height: 500px;
+}
+
+.part-category .cate-cont.current {
+ display: block;
+}
+
+.part-category .cate-cont .item-main {
+ display: none;
+}
+
+.part-category .cate-cont .item-main.current {
+ display: block;
+ -webkit-transition: .1s;
+ -o-transition: .1s;
+ transition: .1s;
+ overflow-y: scroll;
+}
+
+.part-category .cate-cont .item-main .part-hot-word {
+ width: 466px;
+ height: 432px;
+ float: left;
+ margin: 24px 32px;
+}
+
+.part-category .cate-cont .item-main .part-hot-word .item {
+ margin-bottom: 40px;
+}
+
+.part-category .cate-cont .item-main .part-hot-word .title {
+ border-bottom: 1px solid #f1f1f1;
+ padding-bottom: 8px;
+ margin-bottom: 16px;
+}
+
+.part-category .cate-cont .item-main .part-hot-word .title h2 {
+ font-size: 14px;
+ display: inline-block;
+}
+
+.part-category .cate-cont .item-main .part-hot-word .title h2 a {
+ color: #353535;
+ font-size: 16px;
+ font-weight: 700;
+}
+
+.part-category .cate-cont .item-main .part-hot-word .title .more {
+ float: right;
+ color: #959595;
+ font-size: 12px;
+}
+
+.part-category .cate-cont .item-main .part-hot-word .title .more i {
+ color: #c5c5c5;
+}
+
+.part-category .cate-cont .item-main .part-hot-word .cont {
+ margin-left: -16px;
+ overflow: hidden;
+}
+
+.part-category .cate-cont .item-main .part-hot-word .cont a {
+ display: inline-block;
+ line-height: 2;
+ margin: 0 0 3px 16px;
+ color: #656565;
+ font-size: 12px;
+}
+
+.part-category .cate-cont .item-main .part-logo-cont {
+ width: 175px;
+ height: 500px;
+ float: right;
+ background: #fafafa;
+}
+
+.part-category .cate-cont .item-main .part-logo-cont a {
+ display: block;
+ height: 240px;
+ padding: 0px 15px 0px 20px;
+ overflow: hidden;
+ position: relative
+}
+
+.part-category .cate-cont .item-main .part-logo-cont a h2 {
+ line-height: 2;
+ padding-top: 20px;
+ color: #333;
+ text-align: left;
+ font-size: 16px;
+}
+
+.part-category .cate-cont .item-main .part-logo-cont a p {
+ text-align: left;
+ color: #a92924;
+ font-size: 12px;
+ margin-bottom: 15px;
+ height: 60px;
+ overflow: hidden;
+}
+
+.part-category .cate-cont .item-main .part-logo-cont a:first-child {
+ border-bottom: 1px solid #ddd
+}
+
+.part-category .cate-cont::-webkit-scrollbar {
+ display: none;
+}
+.part-category .cate-cont {
+ overflow-y: scroll;
+ background: #fff;
+ -webkit-box-shadow: 5px 1px 16px 0 hsla(0, 0%, 77.3%, .5);
+ box-shadow: 5px 1px 16px 0 hsla(0, 0%, 77.3%, .5);
+}
+
+.part-category .cate-menu ul li.act {
+ -webkit-box-shadow: 0 0 16px 0 hsla(0, 0%, 77.3%, .5);
+ box-shadow: 0 0 16px 0 hsla(0, 0%, 77.3%, .5);
+ background: #fff;
+ z-index: 888
+}
+
+.part-category .cate-cont .item-main {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ opacity: 0.9;
+ -moz-opacity: 0.9;
+ filter: alpha(opacity=90);
+ overflow-y: scroll;
+}
+
+.part-category .cate-cont .item-main .part-hot-word .cont a:hover {
+ color: #a92924;
+}
+
+.bannerRight {
+ float: right;
+ width: 250px;
+ height: 430px;
+ margin-top: 0px;
+ background: #fff;
+ z-index: 2;
+ position: relative;
+}
+
+.section-head .section-banner .banner-me .me-login {
+ height: 111px;
+ overflow: hidden;
+}
+
+.mod-manage {
+ width: 220px;
+ background: #fff;
+ float: right;
+ position: relative;
+ z-index: 3;
+}
+
+.login-head {
+ text-align: center;
+}
+
+.me-login {
+ padding: 15px 10px 10px;
+}
+
+.login-head {
+ width: 100%;
+ text-align: center;
+ margin: 0px auto;
+ margin: 0px 0px 10px;
+}
+
+.login-head img {
+ height: 33px;
+ max-width: 100%;
+}
+
+#banner_right_login {
+ background: url(/static/images/icon8.png) no-repeat 57px center;
+ display: block;
+ color: #a92924;
+ padding-left: 30px;
+ text-align: center;
+ width: 100%;
+ font-size: 14px;
+ line-height: 30px;
+}
+
+.runlings {
+ text-align: center;
+ width: 100%;
+ font-weight: bold;
+ color: #000;
+ font-size: 18px;
+ line-height: 2;
+}
+
+.me-tab {
+ margin-bottom: 2px;
+}
+
+.me-tab-text {
+ height: 28px;
+ line-height: 28px;
+ text-align: center;
+ margin-bottom: 12px;
+
+}
+
+.me-tab-text li {
+ float: left;
+ text-align: center;
+ width: 50%;
+ background: #fff;
+
+ border-width: 0;
+}
+
+.me-tab-text li.active {
+ background: #fff;
+ border-color: transparent;
+}
+
+.me-tab-text li a {
+ display: block;
+ color: #333;
+ text-align: center;
+ font-size: 14px;
+ border-bottom: 2px solid #fff
+}
+
+.me-tab-text li.active a {
+ color: #a92924;
+ border-bottom: 2px solid #a92924
+}
+
+.me-tab .me-step {
+ margin-top: 12px;
+ text-align: center;
+ font-size: 12px;
+}
+
+.me-tab .me-step dl {
+ display: block;
+ text-align: center;
+ color: #999;
+ float: left;
+ width: 33.3%;
+}
+
+.me-tab .me-step dl dt {
+ height: 31px;
+ position: relative;
+}
+
+.iconNew {
+ display: inline-block;
+ width: 20px;
+ height: 23px;
+ vertical-align: middle;
+ overflow: hidden;
+}
+
+.iconNew-step-arrow {
+ position: absolute;
+ left: 63px;
+ top: 13px;
+}
+
+.iconNew-step-arrow {
+ width: 16px;
+ height: 20px;
+ vertical-align: baseline;
+}
+
+.me-tab-text {
+ padding: 0px 13px;
+}
+
+.me-tab .me-step dl.dowslf3 {
+ width: 100%;
+ position: relative;
+}
+
+.me-tab .me-step dl.dowslf3 i {
+ float: right;
+}
+
+.iconNew-step-arrow2 {
+ position: absolute;
+ right: 25px;
+ top: 9px;
+}
+
+.me-tab .me-step dl dt img {
+ max-width: 100%;
+}
+
+.me-tab-content {
+ height: 190px;
+ overflow: hidden;
+ width: 100%;
+ border-bottom: 1px solid #ddd;
+ margin-bottom: 16px;
+}
+
+.wartchar {
+ display: block;
+ padding: 0px 10px 14px;
+}
+
+.wartcharlist {
+ text-align: center;
+ font-size: 13px;
+ overflow: hidden;
+ float: left;
+ width: 50%;
+}
+
+.group-inner3 {
+ width: 753px;
+ overflow: hidden;
+ margin: 10px auto;
+ text-align: center;
+}
+
+.group-inner3-list {
+ width: 251px;
+ text-align: center;
+
+ float: left;
+ -webkit-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+
+.group-inner3-list a {
+ margin: 0px 4px;
+ background: #d8edff;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ align-items: center;
+ position: relative;
+ height: 125px;
+ padding: 8px;
+ -webkit-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+
+.group-inner3-listleft {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ flex: 1;
+ min-width: 0;
+ text-align: left;
+ font-size: 12px;
+}
+
+.group-inner3-listleft h2 {
+ font-weight: normal;
+ line-height: 2;
+ font-size: 18px;
+}
+
+.group-inner3-listleft p {
+ font-weight: normal;
+ font-size: 12px;
+ text-align: left;
+}
+
+.group-inner3-list:nth-child(1) a {
+ background: #d8edff
+}
+
+.group-inner3-list:nth-child(2) a {
+ background: #ffe2e1
+}
+
+.group-inner3-list:nth-child(3) a {
+ background: #ffe9ae
+}
+
+.group-inner3-list:nth-child(1) a h2 {
+ color: #387be1
+}
+
+.group-inner3-list:nth-child(2) a h2 {
+ color: #c3534f
+}
+
+.group-inner3-list:nth-child(3) a h2 {
+ color: #e7a200
+}
+
+.group-inner3-listright {
+ height: 99px;
+ width: 90px;
+ line-height: 90px;
+ text-align: center;
+ vertical-align: middle;
+ overflow: hide;
+}
+
+.group-inner3-listright img {
+ vertical-align: middle;
+ max-width: 100%;
+}
+
+.group-inner3-list:hover a {
+ -webkit-box-shadow: 0 0 16px 0 hsla(0, 0%, 77.3%, .5);
+ box-shadow: 0 0 16px 0 hsla(0, 0%, 77.3%, .5);
+}
+
+.group-inner3-list:hover .navigator {
+ -webkit-box-shadow: 0 0 16px 0 hsla(0, 0%, 77.3%, .5);
+ box-shadow: 0 0 16px 0 hsla(0, 0%, 77.3%, .5);
+}
+
+.new-w1180 {
+ width: 1200px;
+ margin: 0 auto;
+}
+
+.section-title {
+ text-align: center;
+ margin: 20px 0;
+ position: relative;
+}
+
+.section-title .title-topic {
+ line-height: 48px;
+}
+
+.section-title .line {
+ border-top: 1px solid #DFDFDF;
+ position: absolute;
+ top: 50%;
+ width: 100%;
+}
+
+.section-title .title-topic img {
+ vertical-align: middle;
+ padding: 0 13px;
+ background: #f4f4f4;
+ position: relative;
+ z-index: 1;
+ height: 29px;
+}
+
+.login-ingon {
+ background: url(/static/images/icon8.png) left center no-repeat;
+ padding-left: 24px;
+ padding-right: 8px;
+ font-size: 12px;
+}
+
+.page-wrapper {
+ text-align: center;
+ margin-top: 35px;
+ margin-bottom: 12px;
+}
+
+.fe-page {
+ display: inline-block;
+}
+
+.fe-page {
+ color: #959595;
+ font-size: 12px;
+}
+
+.fe-page .fe-page-linkBox, .fe-page .fe-page-operateBox {
+ float: left;
+ display: inline;
+}
+
+.fe-page .fe-page-linkBox .fe-page-next.disabled, .fe-page .fe-page-linkBox .fe-page-next.disabled:hover, .fe-page .fe-page-linkBox .fe-page-prev.disabled, .fe-page .fe-page-linkBox .fe-page-prev.disabled:hover {
+ border-color: #fff;
+ background: #fff;
+ color: #e5e5e5;
+ cursor: default;
+ border: 1px solid #dadada;
+}
+
+.fe-page .fe-page-linkBox .fe-page-item, .fe-page .fe-page-linkBox .fe-page-next, .fe-page .fe-page-linkBox .fe-page-omit, .fe-page .fe-page-linkBox .fe-page-prev {
+ float: left;
+ display: inline;
+ margin-left: 8px;
+ padding: 0 6px;
+ height: 30px;
+ line-height: 32px;
+ min-width: 30px;
+ border: 1px solid #dadada;
+ background: #fff;
+ text-align: center;
+ font-size: 12px;
+ color: #656565;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -o-user-select: none;
+ user-select: none;
+}
+
+.fe-page .fe-page-linkBox .fe-page-item.active, .fe-page .fe-page-linkBox .fe-page-item:hover {
+ border: 1px solid #a92924;
+ background: #a92924;
+ color: #fff;
+ cursor: pointer;
+}
+
+.fe-page .fe-page-operateBox {
+ margin-left: 40px;
+}
+
+.fe-page .fe-page-operateBox .fe-page-btn, .fe-page .fe-page-operateBox .fe-page-input, .fe-page .fe-page-operateBox .fe-page-span {
+ float: left;
+ display: inline;
+ height: 32px;
+ line-height: 32px;
+}
+
+.fe-page .fe-page-operateBox .fe-page-input {
+ margin-left: 8px;
+ margin-right: 8px;
+ border: 1px solid #dadada;
+ -webkit-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ -o-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 64px;
+
+ background: #fff;
+ text-align: center;
+ color: #656565;
+ vertical-align: middle;
+ outline: 0;
+}
+
+.fe-page .fe-page-operateBox .fe-page-btn {
+ margin-left: 24px;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ -o-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 64px;
+ border: 1px solid #dadada;
+ background: #fff;
+ color: #656565;
+ cursor: pointer;
+}
+
+.fe-page .fe-page-operateBox .fe-page-input:focus {
+ border-color: #a92924;
+ padding: 0 3px
+}
+
+.YellowPageAdvg {
+ margin-left: -17px;
+}
+
+.YellowPageAdvg a {
+ margin-left: 17px;
+ float: left;
+ width: 591px;
+}
+
+.mod-popup {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 100002 !important;
+ overflow: hidden;
+ display: none;
+}
+
+div.mod-modal {
+ background: rgba(53, 53, 53, .6);
+}
+
+.mod-modal {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: #000;
+ opacity: .5;
+ z-index: 100001;
+ display: none;
+}
+
+.mod-popup .mod-dialog {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transform: translateX(-50%) translateY(-50%);
+ transform: translateX(-50%) translateY(-50%);
+ border: 2px;
+ background: #fff;
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
+}
+
+.component-dialog {
+ width: 484px;
+ box-sizing: border-box;
+}
+
+.auth-dialog .component-dialog-title, .common-seller-dialog .component-dialog-title, .trans-period-dialog .component-dialog-title {
+ font-size: 14px;
+ color: #656565;
+}
+
+.component-dialog .title-content {
+ position: relative;
+ height: 48px;
+ line-height: 48px;
+}
+
+.component-dialog .icon {
+ display: inline-block;
+ background: url(/static/images/new2x.png) center center no-repeat;
+ background-size: 222px 72px;
+ background-position: -84px;
+}
+
+.component-dialog .icon.icon-close {
+ position: absolute;
+ right: 32px;
+ top: 17px;
+ width: 14px;
+ height: 14px;
+ background-position: 0 0;
+ cursor: pointer;
+}
+
+.component-btn {
+ width: 100%;
+ margin: 0 auto;
+ overflow: hidden;
+ padding: 0 32px;
+ box-sizing: border-box;
+ text-align: center;
+}
+
+.component-btn.confirm .HRtext {
+ color: #fff;
+ background: #a92924;
+ position: relative;
+ height: 40px;
+ line-height: 40px;
+ display: inline-block;
+ width: 165px;
+ margin-bottom: 30px;
+ text-align: center;
+ font-size: 15px;
+ font-weight: 300;
+ border: 1px solid #a92924;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.component-dialog .icon.icon-v2 {
+ width: 64px !important;
+ height: 64px !important;
+ text-align: center;
+ margin: 0px auto;
+ display: block;
+
+}
+
+.component-dialog-title {
+ position: relative;
+ height: 48px;
+ line-height: 48px;
+ width: 100%;
+ margin: 0 auto;
+ overflow: hidden;
+ padding: 0 32px;
+ box-sizing: border-box;
+}
+
+.coopart-goods {
+ width: 100%;
+ border-top: 1px solid #f1f1f1;
+ padding-top: 30px;
+ margin: 34px auto 32px;
+}
+
+.auth-dialog .tips {
+ margin-top: 16px;
+ font-size: 18px;
+ font-weight: 500;
+ text-align: center;
+}
+
+.auth-dialog .sub-tips, .auth-dialog .tips {
+ line-height: 2;
+ color: #353535;
+}
+
+/*图片弹窗*/
+.imgtc {
+ cursor: pointer;
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ text-align: center;
+ top: 0px;
+ left: 0;
+ display: none;
+ z-index: 11111;
+ background: rgba(255, 255, 255, .8);
+}
+
+.imgtc img {
+ width: auto;
+ max-width: 360px;
+ max-height: 360px;
+ height: auto;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+}
+
+input:disabled {
+ cursor: not-allowed;
+}
+
+.layui-input {
+ font-size: 12px;
+}
+
+.layui-form-select dl dd {
+ font-size: 12px;
+}
+
+.layui-carousel-ind ul {
+ display: none !important;
+}
+
+.pagination {
+ float: left;
+ display: inline;
+}
+
+.pagination li {
+ float: left;
+ display: inline;
+ margin-left: 8px;
+ padding: 0 6px;
+ height: 30px;
+ line-height: 32px;
+ min-width: 30px;
+ border: 1px solid #dadada;
+ background: #fff;
+ text-align: center;
+ font-size: 12px;
+ color: #656565;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -o-user-select: none;
+ user-select: none;
+}
+
+.pagination li a {
+ display: block;
+}
+
+.pagination li:hover {
+ border: 1px solid #a92924;
+ background: #a92924;
+ color: #fff;
+ cursor: pointer;
+}
+
+.pagination li:hover a {
+ color: #fff;
+}
+
+.pagination li.active {
+ border: 1px solid #a92924;
+ background: #a92924;
+ color: #fff;
+ cursor: pointer;
+}
+
+.pagination li.active span {
+ color: #fff;
+}
+
+.pagination li.disabled {
+ border-color: #fff;
+ background: #fff;
+ color: #e5e5e5;
+ cursor: default;
+ border: 1px solid #dadada;
+}
+
+.agreement_dialogs {
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ right: 0px;
+ bottom: 0px;
+ width: 100%;
+ height: 100%;
+ z-index: 19891017;
+ text-align: center;
+ display: none;
+ background-color: rgba(35, 35, 35, 0.4);
+ -webkit-transition: all 0.5s linear;
+ transition: all 0.5s linear;
+}
+
+.agreement_dialogs .dialog_lay_1syd {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ display: inline-block;
+ width: 750px;
+ color: #656565;
+ font-size: 12px;
+ line-height: 20px;
+ background-color: #fff;
+ text-align: left;
+ vertical-align: middle;
+ -webkit-transition: all 0.2s linear;
+ transition: all 0.2s linear;
+}
+
+.agreement_dialogs .dialog_foot_1hHfr {
+ height: 80px;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ border-top: 1px solid #d5d5d5;
+ margin: 0;
+ text-align: center;
+}
+
+.agreement_dialogs .dialog_minorBtn_1u8nf {
+ display: inline-block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ border: 1px #316ccb solid;
+ padding: 0 30px;
+ height: 40px;
+ background: #a92924;
+ background: linear-gradient(90deg, #f0242e, #d0111a);
+ line-height: 40px;
+ cursor: pointer;
+ font-size: 16px;
+ vertical-align: top;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ color: #fff;
+ border-color: #fff;
+}
+
+.agreement_titley {
+ height: 55px;
+ line-height: 55px;
+ font-size: 16px;
+ color: #666;
+ text-align: center;
+ border-bottom: 1px solid #d5d5d5;
+ font-weight: 400;
+}
+
+.agreement_content {
+ padding: 23px 32px;
+}
+
+.con-subhead {
+ font-size: 14px;
+
+ font-weight: 500;
+ color: #333;
+ margin-bottom: 16px;
+}
+
+.con-content {
+ height: 240px;
+ overflow-y: scroll;
+ line-height: 2;
+ font-size: 13px;
+}
+
+
+.page-nav{
+ width: 1200px;
+ margin: 0px auto;
+ padding: 20px 0;
+}
\ No newline at end of file
diff --git a/common/css/uni.scss b/common/css/uni.scss
new file mode 100644
index 0000000..a7c31fe
--- /dev/null
+++ b/common/css/uni.scss
@@ -0,0 +1,73 @@
+// 这里是uni-app内置的常用样式变量
+
+// uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+// 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+
+
+// 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+
+// 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+
+
+// 颜色变量
+
+// 行为相关颜色
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+// 文字基本颜色
+$uni-text-color:#333; // 基本色
+$uni-text-color-inverse:#fff; // 反色
+$uni-text-color-grey:#999; // 辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+// 背景颜色
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1; //点 击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4); // 遮罩颜色
+
+// 边框颜色
+$uni-border-color:#e4e7ed;
+
+// 尺寸变量
+
+// 文字尺寸
+$uni-font-size-sm:24rpx;
+$uni-font-size-base:28rpx;
+$uni-font-size-lg:32rpx;
+
+// 图片尺寸
+$uni-img-size-sm:40rpx;
+$uni-img-size-base:52rpx;
+$uni-img-size-lg:80rpx;
+
+// Border Radius
+$uni-border-radius-sm: 4rpx;
+$uni-border-radius-base: 6rpx;
+$uni-border-radius-lg: 12rpx;
+$uni-border-radius-circle: 50%;
+
+// 水平间距
+$uni-spacing-row-sm: 10px;
+$uni-spacing-row-base: 20rpx;
+$uni-spacing-row-lg: 30rpx;
+
+// 垂直间距
+$uni-spacing-col-sm: 8rpx;
+$uni-spacing-col-base: 16rpx;
+$uni-spacing-col-lg: 24rpx;
+
+// 透明度
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+// 文章场景相关
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:40rpx;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:36rpx;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:30rpx;
diff --git a/common/function/myPubFunction.js b/common/function/myPubFunction.js
new file mode 100644
index 0000000..87a7a33
--- /dev/null
+++ b/common/function/myPubFunction.js
@@ -0,0 +1,15 @@
+/**
+ * 自定义公共函数
+ */
+var myfn = {};
+/**
+ * 测试函数test1
+ * vk.myfn.test1();
+ */
+myfn.test1 = function(obj = {}) {
+ let vk = uni.vk;
+ console.log("执行了自定义公共函数test1");
+ return obj;
+};
+
+export default myfn;
diff --git a/components/category-bar/category-bar.vue b/components/category-bar/category-bar.vue
new file mode 100644
index 0000000..7cb5d05
--- /dev/null
+++ b/components/category-bar/category-bar.vue
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+

+
+
+
免费入驻通道
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ - 免费注册
+
+
+ -
+
+
+
+ - 发布需求
+
+
+ -
+
+
+ - 管理采购
+
+
+ -
+
+
+
+
+ -
+
+
+
+ - 达成交易
+
+
+ -
+
+
+
+ - 验收
+
+
+ -
+
+
+ - 我的订单
+
+
+
+ 进入买家中心
+ >
+
+
+
+
+
+ -
+
+
+
+ - 企业注册
+
+
+ -
+
+
+
+ - 商品管理
+
+
+ -
+
+
+ - 匹配需求
+
+
+ -
+
+
+
+
+ -
+
+
+
+ - 完成订单
+
+
+ -
+
+
+
+ - 卖出货品
+
+
+ -
+
+
+ - 报价
+
+
+
+
+ 进入卖家中心
+ >
+
+
+
+
+
+
+

+
金久信
+
微信公众号
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/common-footer/common-footer.vue b/components/common-footer/common-footer.vue
new file mode 100644
index 0000000..efb44ff
--- /dev/null
+++ b/components/common-footer/common-footer.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/common-header/common-header.vue b/components/common-header/common-header.vue
new file mode 100644
index 0000000..91a804a
--- /dev/null
+++ b/components/common-header/common-header.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/custom-form-section/custom-form-section.vue b/components/custom-form-section/custom-form-section.vue
new file mode 100644
index 0000000..b80e789
--- /dev/null
+++ b/components/custom-form-section/custom-form-section.vue
@@ -0,0 +1,68 @@
+
+
+
+ {{column.title}}
+
+
+
+
+ {{ value }}
+
+
+
+ {{ value }}
+
+
+
+
+
+
diff --git a/components/page-nav/page-nav.vue b/components/page-nav/page-nav.vue
new file mode 100644
index 0000000..b93dc5c
--- /dev/null
+++ b/components/page-nav/page-nav.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/right-bar/right-bar.vue b/components/right-bar/right-bar.vue
new file mode 100644
index 0000000..3a104e7
--- /dev/null
+++ b/components/right-bar/right-bar.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/top-bar/top-bar.vue b/components/top-bar/top-bar.vue
new file mode 100644
index 0000000..642dc70
--- /dev/null
+++ b/components/top-bar/top-bar.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
欢迎来到金久信钢城首页!
+
+
+
+ 请登录
+ 免费注册
+
+
+
+ {{vk.getVuex('$user.userInfo.nickname')}}
+
+
+
+ 个人中心
+
+ 买家中心
+ 卖家中心
+ 我的加工
+ 金久信学堂
+ 合同管理
+ 订单管理
+ 退出登录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/vk-data-input-editor/vk-data-input-editor.vue b/components/vk-data-input-editor/vk-data-input-editor.vue
new file mode 100644
index 0000000..f5fcb3e
--- /dev/null
+++ b/components/vk-data-input-editor/vk-data-input-editor.vue
@@ -0,0 +1,1005 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item2.type}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..1e33b82
--- /dev/null
+++ b/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..f379376
--- /dev/null
+++ b/main.js
@@ -0,0 +1,60 @@
+
+
+
+
+import Vue from 'vue'
+import App from './App'
+import store from './store'
+import config from '@/app.config.js'
+
+// 引入 elementUI
+import elementUI from "element-ui";
+// import 'element-ui/lib/theme-chalk/index.css';
+Vue.use(elementUI);
+
+// 引入 高性能表格UI 组件
+import UmyUi from 'umy-ui'
+import 'umy-ui/lib/theme-chalk/index.css';
+Vue.use(UmyUi);
+
+// 引入 vk 实例
+import vk from 'uni_modules/vk-unicloud';
+Vue.use(vk);
+
+// 初始化 vk框架
+Vue.prototype.vk.init({
+ Vue, // Vue实例
+ config, // 配置
+});
+
+// 引入 vkAdminUI 组件
+import vkAdminUI from 'vk-unicloud-admin-ui';
+import 'vk-unicloud-admin-ui/theme/index.css';
+Vue.use(vkAdminUI);
+
+// 自动注册全局组件(必须加在Vue.use(vkAdminUI);的后面)
+const modulesFiles = require.context('./components', true, /\.vue$/);
+modulesFiles.keys().map((modulePath, index) => {
+ const moduleNames = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1');
+ const moduleSplit = moduleNames.split("/");
+ const moduleName = moduleSplit[0];
+ if (moduleSplit.length === 2 && moduleName === moduleSplit[1]) {
+ const value = modulesFiles(modulePath);
+ let moduleItem = value.default;
+ Vue.component(moduleName, moduleItem);
+ }
+});
+
+// 引入 自定义全局css 样式
+import '@/common/css/app.scss';
+
+Vue.config.productionTip = false
+
+App.mpType = 'app'
+
+
+const app = new Vue({
+ store,
+ ...App
+})
+app.$mount()
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..d38bff6
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,105 @@
+{
+ "name" : "jinjiuxin-mobile",
+ "appid" : "__UNI__8BFD66E",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ "modules" : {},
+ "distribute" : {
+ "android" : {
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ "ios" : {},
+ "sdkConfigs" : {}
+ }
+ },
+ "quickapp" : {},
+ "mp-weixin" : {
+ "appid" : "",
+ "setting" : {
+ "urlCheck" : false,
+ "es6" : false,
+ "postcss" : true,
+ "minified" : true,
+ "checkSiteMap" : false
+ },
+ "usingComponents" : true,
+ "lazyCodeLoading" : "requiredComponents",
+ "permission" : {
+ "scope.userLocation" : {
+ "desc" : "方便自动填写地址"
+ }
+ }
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true,
+ "setting" : {
+ "urlCheck" : false
+ }
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true,
+ "setting" : {
+ "urlCheck" : false,
+ "minified" : true,
+ "postcss" : true,
+ "es6" : false
+ }
+ },
+ "uniStatistics" : {
+ "enable" : false
+ },
+ "h5" : {
+ "title" : "",
+ "template" : "template.h5.html",
+ "devServer" : {
+ "disableHostCheck" : true
+ }
+ },
+ "vueVersion" : "2",
+ "mp-qq" : {
+ "setting" : {
+ "urlCheck" : false,
+ "minified" : true,
+ "postcss" : true,
+ "es6" : false
+ }
+ }
+}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..2fabd4b
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,464 @@
+{
+ "name": "vk-unicloud-router",
+ "version": "2.15.3",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "vk-unicloud-router",
+ "version": "2.15.3",
+ "license": "MIT",
+ "dependencies": {
+ "element-ui": "2.15.13",
+ "lodash": "^4.17.21",
+ "umy-ui": "1.1.6",
+ "vk-unicloud-admin-ui": "^1.17.45"
+ },
+ "engines": {
+ "HBuilderX": "^3.1.2"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+ "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+ "peer": true,
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "2.7.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz",
+ "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.18.4",
+ "postcss": "^8.4.14",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/async-validator": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
+ "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
+ "dependencies": {
+ "babel-runtime": "6.x"
+ }
+ },
+ "node_modules/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=="
+ },
+ "node_modules/babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
+ "dependencies": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
+ "hasInstallScript": true
+ },
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
+ "peer": true
+ },
+ "node_modules/deepmerge": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
+ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/element-ui": {
+ "version": "2.15.13",
+ "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.13.tgz",
+ "integrity": "sha512-LJoatEYX6WV74FqXBss8Xfho9fh9rjDSzrDrTyREdGb1h1R3uRvmLh5jqp2JU137aj4/BgqA3K06RQpQBX33Bg==",
+ "dependencies": {
+ "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"
+ },
+ "peerDependencies": {
+ "vue": "^2.5.17"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "peer": true,
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/normalize-wheel": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+ "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "peer": true
+ },
+ "node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ },
+ "node_modules/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=="
+ },
+ "node_modules/sortablejs": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz",
+ "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/umy-table": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/umy-table/-/umy-table-1.1.8.tgz",
+ "integrity": "sha512-yqPMFwZ6MUNqI73KamsNKBTbHRA7VuVZDEWobaySghtf4n/s7INuTNQoADB/ROVK57WOXr99Xpnol0aMqGlASA==",
+ "dependencies": {
+ "async-validator": "~1.8.1",
+ "deepmerge": "^1.2.0",
+ "normalize-wheel": "^1.0.1",
+ "resize-observer-polyfill": "^1.5.0",
+ "throttle-debounce": "^1.0.1",
+ "vuedraggable": "^2.23.2",
+ "xe-utils": "^3.0.0-beta.12"
+ },
+ "peerDependencies": {
+ "vue": ">= 2.6.0 < 3",
+ "xe-utils": ">= 3"
+ }
+ },
+ "node_modules/umy-ui": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/umy-ui/-/umy-ui-1.1.6.tgz",
+ "integrity": "sha512-wX0S29B5sFn8q0MvU9PEl8DGZeQmZXOJlLrwaCJ2UHiIQZCANWgXMBjjQgpaequ1gRZ8BekEu7Sn7hJccm9YMQ==",
+ "dependencies": {
+ "async-validator": "~1.8.1",
+ "deepmerge": "^1.2.0",
+ "normalize-wheel": "^1.0.1",
+ "resize-observer-polyfill": "^1.5.0",
+ "throttle-debounce": "^1.0.1",
+ "umy-table": "1.1.8",
+ "vuedraggable": "^2.23.2",
+ "xe-utils": "^3.0.0-beta.12"
+ },
+ "peerDependencies": {
+ "vue": ">= 2.6.0 < 3",
+ "xe-utils": ">= 3"
+ }
+ },
+ "node_modules/vk-unicloud-admin-ui": {
+ "version": "1.17.46",
+ "resolved": "https://registry.npmjs.org/vk-unicloud-admin-ui/-/vk-unicloud-admin-ui-1.17.46.tgz",
+ "integrity": "sha512-VJvi8Gm3mfZOFEilIrZ1bSoi192ov9hPzSFzkR6l62pqJ3UEwgjTr5L2gQqxw4twb+y5qDmWZPS4dQMwya+iiQ=="
+ },
+ "node_modules/vue": {
+ "version": "2.7.15",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.15.tgz",
+ "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-sfc": "2.7.15",
+ "csstype": "^3.1.0"
+ }
+ },
+ "node_modules/vuedraggable": {
+ "version": "2.24.3",
+ "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz",
+ "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==",
+ "dependencies": {
+ "sortablejs": "1.10.2"
+ }
+ },
+ "node_modules/xe-utils": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.13.tgz",
+ "integrity": "sha512-ORT6ghCRk0mUVavMBxetcPzUPskS6NGfntzpWazJ86e+XU0uK4HwHfDhN/jKATiyInrOH5RwQo9SO/+DB8XeBw=="
+ }
+ },
+ "dependencies": {
+ "@babel/parser": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+ "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+ "peer": true
+ },
+ "@vue/compiler-sfc": {
+ "version": "2.7.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz",
+ "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==",
+ "peer": true,
+ "requires": {
+ "@babel/parser": "^7.18.4",
+ "postcss": "^8.4.14",
+ "source-map": "^0.6.1"
+ }
+ },
+ "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"
+ }
+ },
+ "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-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ }
+ },
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
+ },
+ "csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
+ "peer": true
+ },
+ "deepmerge": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
+ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
+ },
+ "element-ui": {
+ "version": "2.15.13",
+ "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.13.tgz",
+ "integrity": "sha512-LJoatEYX6WV74FqXBss8Xfho9fh9rjDSzrDrTyREdGb1h1R3uRvmLh5jqp2JU137aj4/BgqA3K06RQpQBX33Bg==",
+ "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"
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "peer": true
+ },
+ "normalize-wheel": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+ "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "peer": true
+ },
+ "postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "peer": true,
+ "requires": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ },
+ "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=="
+ },
+ "sortablejs": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz",
+ "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "peer": true
+ },
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "peer": 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=="
+ },
+ "umy-table": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/umy-table/-/umy-table-1.1.8.tgz",
+ "integrity": "sha512-yqPMFwZ6MUNqI73KamsNKBTbHRA7VuVZDEWobaySghtf4n/s7INuTNQoADB/ROVK57WOXr99Xpnol0aMqGlASA==",
+ "requires": {
+ "async-validator": "~1.8.1",
+ "deepmerge": "^1.2.0",
+ "normalize-wheel": "^1.0.1",
+ "resize-observer-polyfill": "^1.5.0",
+ "throttle-debounce": "^1.0.1",
+ "vuedraggable": "^2.23.2",
+ "xe-utils": "^3.0.0-beta.12"
+ }
+ },
+ "umy-ui": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/umy-ui/-/umy-ui-1.1.6.tgz",
+ "integrity": "sha512-wX0S29B5sFn8q0MvU9PEl8DGZeQmZXOJlLrwaCJ2UHiIQZCANWgXMBjjQgpaequ1gRZ8BekEu7Sn7hJccm9YMQ==",
+ "requires": {
+ "async-validator": "~1.8.1",
+ "deepmerge": "^1.2.0",
+ "normalize-wheel": "^1.0.1",
+ "resize-observer-polyfill": "^1.5.0",
+ "throttle-debounce": "^1.0.1",
+ "umy-table": "1.1.8",
+ "vuedraggable": "^2.23.2",
+ "xe-utils": "^3.0.0-beta.12"
+ }
+ },
+ "vk-unicloud-admin-ui": {
+ "version": "1.17.46",
+ "resolved": "https://registry.npmjs.org/vk-unicloud-admin-ui/-/vk-unicloud-admin-ui-1.17.46.tgz",
+ "integrity": "sha512-VJvi8Gm3mfZOFEilIrZ1bSoi192ov9hPzSFzkR6l62pqJ3UEwgjTr5L2gQqxw4twb+y5qDmWZPS4dQMwya+iiQ=="
+ },
+ "vue": {
+ "version": "2.7.15",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.15.tgz",
+ "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-sfc": "2.7.15",
+ "csstype": "^3.1.0"
+ }
+ },
+ "vuedraggable": {
+ "version": "2.24.3",
+ "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz",
+ "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==",
+ "requires": {
+ "sortablejs": "1.10.2"
+ }
+ },
+ "xe-utils": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.13.tgz",
+ "integrity": "sha512-ORT6ghCRk0mUVavMBxetcPzUPskS6NGfntzpWazJ86e+XU0uK4HwHfDhN/jKATiyInrOH5RwQo9SO/+DB8XeBw=="
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..f7eaa79
--- /dev/null
+++ b/package.json
@@ -0,0 +1,96 @@
+{
+ "id": "vk-cloud-router",
+ "displayName": "【开箱即用】vk-unicloud-router - 云函数路由模式开发框架 - 已集成uni-id 框架内置了众多API、工具包,为你的业务扫平障碍。",
+ "version": "2.15.3",
+ "description": "这是一个unicloud快速开发框架+项目模板(已包含核心库)支持URL化,众多现成API供你使用(登录、注册、短信、微信百度服务端API等等)为你的业务扫平障碍。内置小白也能轻松上手的数据库API。",
+ "keywords": [
+ "vk-unicloud-router",
+ "云函数路由、云对象路由",
+ "vk云开发",
+ "内置uni-id、uview、数据库baseDao",
+ "内置众多API、工具包、支持微信公众号登录、微信小程序、app登录等"
+ ],
+ "main": "main.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "VK",
+ "license": "MIT",
+ "repository": "https://gitee.com/vk-uni/vk-uni-cloud-router",
+ "name": "vk-unicloud-router",
+ "dependencies": {
+ "element-ui": "2.15.13",
+ "lodash": "^4.17.21",
+ "umy-ui": "1.1.6",
+ "vk-unicloud-admin-ui": "^1.17.45"
+ },
+ "engines": {
+ "HBuilderX": "^3.1.2"
+ },
+ "dcloudext": {
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": "370725567"
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "插件不采集任何数据",
+ "permissions": "无"
+ },
+ "npmurl": "https://vkdoc.fsq.pub/client/",
+ "type": "unicloud-template-project"
+ },
+ "uni_modules": {
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "u",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y",
+ "钉钉": "y",
+ "快手": "y",
+ "飞书": "y",
+ "京东": "y"
+ },
+ "快应用": {
+ "华为": "y",
+ "联盟": "y"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/pages.json b/pages.json
new file mode 100644
index 0000000..6d60585
--- /dev/null
+++ b/pages.json
@@ -0,0 +1,102 @@
+{
+ "pages": [
+ {
+ "path": "pages/index/index",
+ "style": {
+ "navigationBarTitleText": "金久信钢城"
+ }
+ },
+ {
+ "path": "pages/error/404/404",
+ "style": {
+ "navigationBarTitleText": "404"
+ }
+ }
+ ,{
+ "path" : "pages/auth/register/register",
+ "style" :
+ {
+ "navigationBarTitleText": "注册",
+ "enablePullDownRefresh": false
+ }
+
+ }
+ ,{
+ "path" : "pages/auth/login/login",
+ "style" :
+ {
+ "navigationBarTitleText": "登录",
+ "enablePullDownRefresh": false
+ }
+
+ }
+ ,{
+ "path" : "pages/spot/release/release",
+ "style" :
+ {
+ "navigationBarTitleText": "发布现货",
+ "enablePullDownRefresh": false
+ }
+
+ }
+ ,{
+ "path" : "pages/spot/goods/goods",
+ "style" :
+ {
+ "navigationBarTitleText": "现货市场",
+ "enablePullDownRefresh": false
+ }
+
+ }
+ ,{
+ "path" : "pages/user/user",
+ "style" :
+ {
+ "navigationBarTitleText": "个人中心",
+ "enablePullDownRefresh": false
+ }
+
+ },
+ {
+ "path" : "pages/spot/goods/detail",
+ "style" :
+ {
+ "navigationBarTitleText" : "",
+ "enablePullDownRefresh" : false
+ }
+ },
+ {
+ "path" : "pages/company/company",
+ "style" :
+ {
+ "navigationBarTitleText" : "黄页",
+ "enablePullDownRefresh" : false
+ }
+ },
+ {
+ "path" : "pages/enquiry/release",
+ "style" :
+ {
+ "navigationBarTitleText" : "发布询价",
+ "enablePullDownRefresh" : false
+ }
+ },
+ {
+ "path" : "pages/enquiry/list",
+ "style" :
+ {
+ "navigationBarTitleText" : "询价",
+ "enablePullDownRefresh" : false
+ }
+ }
+ ],
+ "globalStyle": {
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "金久信钢城",
+ "navigationStyle": "custom",
+ // #ifndef MP-ALIPAY
+ "navigationBarBackgroundColor": "#F8F8F8",
+ // #endif
+ "backgroundColor": "#F8F8F8"
+ }
+}
diff --git a/pages/auth/login/login.vue b/pages/auth/login/login.vue
new file mode 100644
index 0000000..a9ab763
--- /dev/null
+++ b/pages/auth/login/login.vue
@@ -0,0 +1,612 @@
+
+
+
+
+
+
+
+
+
会员登录
+
+
+ 个人用户
+ 企业用户
+
+
+
+ 账号密码登录
+ 验证码登录
+
+
+
+
+
+
+
+
+
第三方登录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/auth/register/register.vue b/pages/auth/register/register.vue
new file mode 100644
index 0000000..d906166
--- /dev/null
+++ b/pages/auth/register/register.vue
@@ -0,0 +1,629 @@
+
+
+
+
+
+
+
+
+
+
+
免费注册会员
+
+
+ 个人用户
+ 企业用户
+
+
+
+
+
+
+
+
+ 已有账号?去登录
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/company/company.vue b/pages/company/company.vue
new file mode 100644
index 0000000..c4b48f5
--- /dev/null
+++ b/pages/company/company.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+ 首页
+
+ 现货市场
+
+ {{product.name}}
+
+
+
+
+
+
+
+
diff --git a/pages/enquiry/components/template.vue b/pages/enquiry/components/template.vue
new file mode 100644
index 0000000..4e4c576
--- /dev/null
+++ b/pages/enquiry/components/template.vue
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/enquiry/list.vue b/pages/enquiry/list.vue
new file mode 100644
index 0000000..caff475
--- /dev/null
+++ b/pages/enquiry/list.vue
@@ -0,0 +1,254 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 发布询价单
+ 我发布的询价单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{citem.name}}
+
+
+
+
+
+
+
+
+ {{citem.name}}
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/enquiry/release.vue b/pages/enquiry/release.vue
new file mode 100644
index 0000000..9c62d68
--- /dev/null
+++ b/pages/enquiry/release.vue
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+ 首页
+
+ 询价单
+
+ 发布询价单
+
+
+
+
+
+
+ 请填写询价单
+ 询价信息越完整,供应商报价越精准
+
+
+
+
+
+ 添加商品
+ 删除商品
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/error/404/404.vue b/pages/error/404/404.vue
new file mode 100644
index 0000000..cdd49ce
--- /dev/null
+++ b/pages/error/404/404.vue
@@ -0,0 +1,49 @@
+
+
+
+
+ 这里是404页面
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/index/index.vue b/pages/index/index.vue
new file mode 100644
index 0000000..efccd04
--- /dev/null
+++ b/pages/index/index.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+ 这是首页
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/spot/goods/detail.vue b/pages/spot/goods/detail.vue
new file mode 100644
index 0000000..44556dc
--- /dev/null
+++ b/pages/spot/goods/detail.vue
@@ -0,0 +1,497 @@
+
+
+
+
+
+
+
+
+ 首页
+
+ 现货市场
+
+ {{product.name}}
+
+
+
+
+
+
+
+
+
现货详情
+
+ {{product.user.person.personName}}
+
+ {{product.user.company.companyName}}
+
+ 库存:{{product.stock}}吨
+
+ 供货地:{{product.address.province.name + "-" + product.address.city.name + "-" + product.address.area.name}}
+
+
+
+
+
+
+
附件
+
+
+
+
+
+
+
已收到的合作申请
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/spot/goods/goods.vue b/pages/spot/goods/goods.vue
new file mode 100644
index 0000000..1f789dc
--- /dev/null
+++ b/pages/spot/goods/goods.vue
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 发布/编辑我的现货
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{citem.name}}
+
+
+
+
+
+
+
+
+ {{citem.name}}
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+ 库存:{{item.stock}}吨
+ 供货地:{{item.addressStr}}
+
+
+
+ {{item.user.person.personName}}
+ {{item.user.company.companyName}}
+ 立即查看
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/spot/release/release.vue b/pages/spot/release/release.vue
new file mode 100644
index 0000000..43865e0
--- /dev/null
+++ b/pages/spot/release/release.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+ 首页
+ 现货市场
+ 发布现货
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/user/components/business-card.vue b/pages/user/components/business-card.vue
new file mode 100644
index 0000000..3924895
--- /dev/null
+++ b/pages/user/components/business-card.vue
@@ -0,0 +1,211 @@
+
+
+
+ 我的名片
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/user/components/personal.vue b/pages/user/components/personal.vue
new file mode 100644
index 0000000..3b85330
--- /dev/null
+++ b/pages/user/components/personal.vue
@@ -0,0 +1,309 @@
+
+
+
+
+ 个人认证
+ 企业认证
+
+
+
+
+ 已认证
+ 未认证
+
+ 去认证
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/user/user.vue b/pages/user/user.vue
new file mode 100644
index 0000000..58d81a0
--- /dev/null
+++ b/pages/user/user.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/static/images/80705c8b12d05d0ff67a2758749ef09c.jpg b/static/images/80705c8b12d05d0ff67a2758749ef09c.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..644ac201e28c99e4bfd2c48652323b62a5778885
GIT binary patch
literal 77644
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