From 8eae987862c85bd8a6254ba059b6fb0e7d0091d6 Mon Sep 17 00:00:00 2001 From: yangtao Date: Thu, 21 Mar 2024 17:52:58 +0800 Subject: [PATCH] init --- .gitignore | 25 + App.vue | 324 + androidPrivacy.json | 28 + api/activity.js | 256 + api/admin.js | 225 + api/api.js | 340 + api/community.js | 130 + api/order.js | 335 + api/points_mall.js | 70 + api/product.js | 206 + api/public.js | 116 + api/store.js | 579 ++ api/user.js | 763 +++ components/BaseMoney.vue | 111 + components/Loading/index.vue | 66 + components/PriceChange/index.vue | 152 + components/WaterfallsFlow/WaterfallsFlow.vue | 204 + .../WaterfallsFlowItem/WaterfallsFlowItem.vue | 358 ++ components/adc/index.vue | 181 + components/addInvoicing/index.vue | 604 ++ components/addcartWindow/index.vue | 346 + components/addressWindow/index.vue | 190 + components/alert/index.vue | 85 + components/areaWindow/index.vue | 266 + components/bindmobile.vue | 319 + components/cash/index.vue | 140 + components/checkCoupon/index.vue | 388 ++ components/checkDelivery/index.vue | 178 + components/combinNav/index.vue | 318 + components/comment.vue | 479 ++ components/copyPassword/index.vue | 147 + components/countDown/index.vue | 174 + components/couponListWindow/index.vue | 238 + components/cusPreviewImg/index.vue | 159 + components/customTab.vue | 124 + components/discountDetails/index.vue | 153 + components/easy-loadimage/easy-loadimage.vue | 177 + components/eidtUserModal/index.vue | 290 + components/emptyPage.vue | 45 + components/freightGuarantee/index.vue | 216 + components/goodList/index.vue | 179 + components/guide/index.vue | 187 + components/home/index.vue | 116 + components/index.vue | 176 + components/invoiceGoods/index.vue | 262 + components/jyf-parser/jyf-parser.vue | 825 +++ components/jyf-parser/libs/CssHandler.js | 103 + components/jyf-parser/libs/MpHtmlParser.js | 578 ++ components/jyf-parser/libs/config.js | 81 + components/jyf-parser/libs/handler.sjs | 36 + components/jyf-parser/libs/handler.wxs | 45 + components/jyf-parser/libs/trees.vue | 488 ++ components/kefuIcon/index.vue | 98 + components/mentioned.vue | 214 + components/mpvue-calendar/browser-style.css | 406 ++ components/mpvue-calendar/calendarinit.js | 533 ++ components/mpvue-calendar/icon.css | 15 + components/mpvue-calendar/mpvue-calendar.vue | 1162 ++++ components/mpvue-calendar/style.css | 394 ++ components/orderCoupon/index.vue | 290 + components/orderGoods/index.vue | 361 ++ components/passwordPopup/index.vue | 258 + components/payment/index.vue | 466 ++ components/plantConSwiper/index.vue | 152 + .../plantWaterfallsFlow/WaterfallsFlow.vue | 238 + .../WaterfallsFlowItem.vue | 241 + components/privacyAgreementPopup/index.vue | 203 + components/productConSwiper/index.vue | 199 + components/productWindow/index.vue | 463 ++ components/recommend/index.vue | 114 + components/rightSlider.vue | 449 ++ components/rightSlider/index.vue | 283 + components/rightSlidera.vue | 328 + components/shareInfo/index.vue | 50 + components/shareRedPackets/index.vue | 159 + components/shopList/index.vue | 298 + components/skeleton/index.vue | 199 + components/specs/index.vue | 114 + components/swipers/index.vue | 60 + components/timeSlot/index.vue | 207 + components/timeranges/index.vue | 168 + components/tui-skeleton.vue | 248 + components/ucharts/component.vue | 171 + components/ucharts/ucharts.js | 5658 +++++++++++++++++ components/ucharts/ucharts.min.js | 1 + components/uni-calendar/calendar.js | 546 ++ components/uni-calendar/uni-calendar-item.vue | 161 + components/uni-calendar/uni-calendar.vue | 444 ++ components/uni-calendar/util.js | 329 + components/userEvaluation/index.vue | 168 + components/userNameSwiper/userNameSwiper.vue | 117 + components/vconsole.min.js | 10 + components/verify/utils/ase.js | 12 + components/verify/verify.vue | 524 ++ components/verify/verifyPoint/verifyPoint.vue | 553 ++ .../verify/verifySlider/verifySlider.vue | 657 ++ components/yq-avatar/yq-avatar.vue | 1376 ++++ components/zb-code/qrcode.js | 1202 ++++ components/zb-code/zb-code.vue | 211 + config/app.js | 47 + config/cache.js | 34 + config/socket.js | 9 + libs/chat.js | 92 + libs/login.js | 96 + libs/order.js | 29 + libs/routine.js | 190 + libs/spread.js | 13 + libs/uniApi.js | 428 ++ libs/wechat.js | 288 + main.js | 87 + manifest.json | 205 + mixins/SendVerifyCode.js | 28 + mixins/history.js | 17 + package-lock.json | 440 ++ pages.json | 1331 ++++ pages/activity/assist/index.vue | 297 + pages/activity/assist_detail/index.vue | 1152 ++++ pages/activity/assist_record/index.vue | 297 + pages/activity/collect_coupons/index.vue | 381 ++ pages/activity/combination/index.vue | 487 ++ pages/activity/combination_details/index.vue | 2051 ++++++ pages/activity/combination_poster/index.vue | 362 ++ pages/activity/combination_status/index.vue | 941 +++ pages/activity/goods_seckill/index.vue | 433 ++ .../activity/goods_seckill_details/index.vue | 1988 ++++++ pages/activity/lifeService/index.vue | 667 ++ pages/activity/liveBroadcast/index.vue | 297 + pages/activity/my_registrate/index.vue | 156 + pages/activity/presell/index.vue | 429 ++ pages/activity/presell_details/index.vue | 2440 +++++++ pages/activity/rank/index.vue | 423 ++ pages/activity/registrate_activity/index.vue | 1315 ++++ pages/activity/registrate_list/index.vue | 203 + pages/activity/static/images/no_product.png | Bin 0 -> 3334 bytes pages/activity/static/images/poster-bag.png | Bin 0 -> 7683 bytes pages/activity/static/images/presell_text.png | Bin 0 -> 395 bytes pages/activity/static/images/rank.png | Bin 0 -> 257 bytes pages/activity/static/images/rank_cate.png | Bin 0 -> 523 bytes pages/activity/static/images/rank_num.png | Bin 0 -> 257 bytes pages/activity/static/images/vacancy.png | Bin 0 -> 1587 bytes pages/activity/topic/index.vue | 154 + pages/activity/topic_detail/index.vue | 445 ++ pages/admin/business/index.vue | 200 + pages/admin/cancellate_result/index.vue | 462 ++ pages/admin/delivery/index.vue | 849 +++ pages/admin/goods_details/index.vue | 1417 +++++ pages/admin/order/index.vue | 337 + pages/admin/orderDetail/index.vue | 923 +++ pages/admin/orderList/index.vue | 778 +++ pages/admin/orderRefund/index.vue | 265 + pages/admin/order_cancellation/index.vue | 392 ++ pages/admin/refundDetail/index.vue | 729 +++ pages/admin/refundList/index.vue | 419 ++ pages/admin/scan/index.vue | 351 + pages/admin/statistics/index.vue | 683 ++ pages/admin/storeDiy/index.vue | 1153 ++++ pages/admin/system_form/index.vue | 444 ++ pages/annex/static/big-bg.png | Bin 0 -> 16355 bytes pages/annex/static/grade-bg.png | Bin 0 -> 36462 bytes pages/annex/static/left.png | Bin 0 -> 253 bytes pages/annex/static/renew_bg.png | Bin 0 -> 8920 bytes pages/annex/static/vipBg.png | Bin 0 -> 3689 bytes pages/annex/vip_center/index.vue | 1034 +++ pages/annex/vip_clause/index.vue | 67 + pages/annex/vip_grade/index.vue | 341 + pages/annex/vip_paid/index.vue | 797 +++ pages/annex/web_view/index.vue | 39 + pages/auth/index.vue | 78 + pages/chat/customer_info/index.vue | 180 + pages/chat/customer_list/chat.vue | 1889 ++++++ pages/chat/customer_list/index.vue | 286 + pages/chat/customer_login/index.vue | 283 + pages/chat/static/images/noPermission.png | Bin 0 -> 26797 bytes pages/columnGoods/HotNewGoods/index.vue | 311 + pages/columnGoods/goods_coupon_list/index.vue | 911 +++ pages/columnGoods/goods_list/index.vue | 968 +++ pages/columnGoods/goods_search/index.vue | 517 ++ pages/columnGoods/goods_search_con/index.vue | 1423 +++++ pages/columnGoods/images/star.png | Bin 0 -> 348 bytes pages/columnGoods/images/star_active.png | Bin 0 -> 373 bytes .../columnGoods/images/star_active_purple.png | Bin 0 -> 371 bytes pages/error/index.vue | 30 + pages/goods_cate/goods_cate.vue | 495 ++ .../goods_details/components/specs/index.vue | 113 + pages/goods_details/discountsGoods.vue | 636 ++ pages/goods_details/index.vue | 2437 +++++++ pages/goods_details/productWindow.vue | 322 + pages/guide/index.vue | 87 + pages/index/component/activeParty.vue | 161 + pages/index/component/bargain.vue | 312 + pages/index/component/blankPage.vue | 42 + pages/index/component/combination.vue | 231 + .../component/component - 快捷方式.lnk | Bin 0 -> 1285 bytes pages/index/component/coupon.vue | 280 + pages/index/component/customerService.vue | 71 + pages/index/component/follow.vue | 135 + pages/index/component/goodList.vue | 463 ++ pages/index/component/guide.vue | 52 + pages/index/component/headerSerch.vue | 209 + pages/index/component/homeComb.vue | 666 ++ pages/index/component/hotRanking.vue | 312 + pages/index/component/index.js | 17 + pages/index/component/liveBroadcast.vue | 572 ++ pages/index/component/menus.vue | 104 + pages/index/component/news.vue | 125 + pages/index/component/pictureCube.vue | 296 + pages/index/component/plantList.vue | 276 + pages/index/component/presellList.vue | 239 + pages/index/component/promotionList.vue | 195 + pages/index/component/richText.vue | 60 + pages/index/component/seckill.vue | 253 + pages/index/component/shopList.vue | 314 + pages/index/component/swiperBg.vue | 188 + pages/index/component/tabNav.vue | 297 + pages/index/component/titles.vue | 75 + pages/index/component/topic.vue | 164 + pages/index/index.vue | 1564 +++++ pages/index/style/main.scss | 401 ++ pages/news_details/index.vue | 247 + pages/news_list/index.vue | 312 + pages/order_addcart/order_addcart.vue | 1255 ++++ pages/order_details/delivery.vue | 254 + pages/order_details/index.vue | 1395 ++++ pages/order_details/stay.vue | 947 +++ pages/order_pay_back/index.vue | 237 + pages/order_pay_status/index.vue | 381 ++ pages/plantGrass/components/associated.vue | 476 ++ .../components/participateTopic.vue | 204 + pages/plantGrass/plant_detail/index.vue | 955 +++ pages/plantGrass/plant_featured/index.vue | 361 ++ pages/plantGrass/plant_release/index.vue | 786 +++ pages/plantGrass/plant_search/index.vue | 241 + pages/plantGrass/plant_search_list/index.vue | 314 + pages/plantGrass/plant_show/index.vue | 195 + pages/plantGrass/plant_topic/index.vue | 179 + pages/plantGrass/plant_user/index.vue | 369 ++ .../plantGrass/plant_user_attention/index.vue | 137 + pages/plantGrass/plant_user_fans/index.vue | 132 + pages/plantGrass/static/images/no-topic.png | Bin 0 -> 7978 bytes .../plantGrass/static/images/no_attention.png | Bin 0 -> 28372 bytes pages/plantGrass/static/images/no_content.png | Bin 0 -> 20859 bytes pages/plantGrass/static/images/no_fans.png | Bin 0 -> 21940 bytes pages/plantGrass/static/images/plant_bg.jpg | Bin 0 -> 28185 bytes pages/plantGrass/static/images/video_bg.png | Bin 0 -> 1881 bytes pages/plantGrass/style/main.scss | 94 + pages/plant_grass/index.vue | 1179 ++++ pages/points_mall/exchange_record.vue | 378 ++ pages/points_mall/goods_selection.vue | 322 + pages/points_mall/index.vue | 449 ++ pages/points_mall/integral_goods_details.vue | 907 +++ pages/points_mall/integral_goods_list.vue | 424 ++ pages/points_mall/integral_order.vue | 1025 +++ pages/points_mall/integral_order_details.vue | 783 +++ pages/points_mall/integral_order_status.vue | 304 + pages/points_mall/logistics_details.vue | 259 + pages/product/addGoods/addFreightTemplate.vue | 326 + pages/product/addGoods/addGoodDetils.vue | 75 + pages/product/addGoods/freightTemplate.vue | 270 + pages/product/addGoods/index.vue | 766 +++ pages/product/addGoods/modifyPrice.vue | 677 ++ pages/product/addGoods/mulSpecification.vue | 268 + .../addGoods/scss/freightTemplate.scss | 178 + pages/product/addGoods/scss/index.scss | 270 + pages/product/addGoods/secound.vue | 487 ++ .../product/addGoods/singleSpecification.vue | 198 + .../addGoods/specificationProperties.vue | 283 + pages/product/components/areas.vue | 297 + pages/product/components/attr.vue | 129 + pages/product/components/distributionArea.vue | 380 ++ pages/product/components/inputGoodsDetils.vue | 286 + pages/product/components/linkageAssembly.vue | 387 ++ pages/product/components/parcelArea.vue | 308 + pages/product/components/platform.vue | 173 + pages/product/components/popupContainer.vue | 205 + pages/product/components/search.vue | 61 + pages/product/components/selectForm.vue | 243 + pages/product/components/shopItem.vue | 145 + .../product/components/specificationAttr.vue | 213 + .../components/store_classification.vue | 302 + pages/product/components/tip.vue | 44 + pages/product/goodsOnSale/index.vue | 440 ++ pages/product/goodsOnSale/scss/index.scss | 22 + pages/product/list/index.vue | 490 ++ pages/product/recycleBin/index.vue | 110 + pages/product/soldOutGoods/index.vue | 105 + pages/product/static/images/close.png | Bin 0 -> 397 bytes pages/product/static/images/creamer.png | Bin 0 -> 1748 bytes pages/product/static/images/product_add.png | Bin 0 -> 2757 bytes pages/product/static/images/product_cate.png | Bin 0 -> 2610 bytes .../product/static/images/product_freight.png | Bin 0 -> 2720 bytes pages/product/static/images/product_out.png | Bin 0 -> 2633 bytes .../product/static/images/product_recycle.png | Bin 0 -> 2517 bytes pages/product/static/images/product_sales.png | Bin 0 -> 3007 bytes .../static/images/product_specification.png | Bin 0 -> 2250 bytes .../storeClassification/addStoreClass.vue | 200 + pages/product/storeClassification/index.vue | 113 + .../scss/addStoreClass.scss | 166 + .../storeClassification/scss/index.scss | 90 + pages/short_video/appSwiper/index.nvue | 1348 ++++ .../douyin-scrollview/douyin-scrollview.nvue | 496 ++ .../short_video/components/index/aixining.png | Bin 0 -> 133601 bytes pages/short_video/components/index/close.png | Bin 0 -> 673 bytes .../components/index/collection.png | Bin 0 -> 1169 bytes .../short_video/components/index/evaluate.png | Bin 0 -> 551 bytes pages/short_video/components/index/logins.gif | Bin 0 -> 44394 bytes pages/short_video/components/index/pause.png | Bin 0 -> 2508 bytes pages/short_video/components/index/play.png | Bin 0 -> 2961 bytes .../components/index/share-fill.png | Bin 0 -> 471 bytes .../components/index/video-delete.png | Bin 0 -> 642 bytes .../components/index/video-edit.png | Bin 0 -> 691 bytes .../components/index/video-failed.png | Bin 0 -> 591 bytes .../components/index/video-review.png | Bin 0 -> 654 bytes .../short_video/components/index/we-chat.png | Bin 0 -> 2457 bytes pages/short_video/components/index/xin-2.png | Bin 0 -> 542 bytes pages/short_video/components/index/xin.png | Bin 0 -> 521 bytes pages/short_video/components/index/zan01.png | Bin 0 -> 944 bytes pages/short_video/components/index/zan02.png | Bin 0 -> 747 bytes .../components/mentioned/mentioned.vue | 193 + pages/short_video/nvueSwiper/index.nvue | 1569 +++++ pages/short_video/static/img/index/close.png | Bin 0 -> 673 bytes .../static/img/index/collection.png | Bin 0 -> 1169 bytes .../short_video/static/img/index/evaluate.png | Bin 0 -> 551 bytes .../static/img/index/icon-back.png | Bin 0 -> 421 bytes pages/short_video/static/img/index/logins.gif | Bin 0 -> 44394 bytes pages/short_video/static/img/index/pause.png | Bin 0 -> 2508 bytes pages/short_video/static/img/index/play.png | Bin 0 -> 2961 bytes .../static/img/index/posterbackgd.png | Bin 0 -> 10224 bytes .../static/img/index/share-fill.png | Bin 0 -> 471 bytes .../static/img/index/video-delete.png | Bin 0 -> 642 bytes .../static/img/index/video-edit.png | Bin 0 -> 691 bytes .../static/img/index/video-failed.png | Bin 0 -> 591 bytes .../static/img/index/video-review.png | Bin 0 -> 654 bytes .../short_video/static/img/index/we-chat.png | Bin 0 -> 2457 bytes pages/short_video/static/img/index/xin-2.png | Bin 0 -> 542 bytes pages/short_video/static/img/index/xin.png | Bin 0 -> 521 bytes pages/small_page/index.vue | 1345 ++++ pages/store/applicationRecord/index.vue | 202 + pages/store/component/index.js | 18 + pages/store/detail/index.vue | 524 ++ pages/store/home/index.vue | 1859 ++++++ pages/store/index.vue | 893 +++ pages/store/list/index.vue | 934 +++ pages/store/merchantDetails/index.vue | 206 + pages/store/qualifications/index.vue | 194 + pages/store/settled/index.vue | 985 +++ pages/store/shopStreet/index.vue | 970 +++ pages/store/static/images/coupon2.png | Bin 0 -> 5785 bytes pages/store/static/images/no-topic.png | Bin 0 -> 7978 bytes pages/store/static/images/not-pass.png | Bin 0 -> 534 bytes pages/store/static/images/passed.png | Bin 0 -> 518 bytes pages/store/static/images/pending.png | Bin 0 -> 535 bytes .../store/static/images/settledSuccessful.svg | 65 + pages/store/static/images/successTop.png | Bin 0 -> 9359 bytes pages/user/index.vue | 1122 ++++ pages/users/agreement_rules/index.vue | 65 + pages/users/browsingHistory/index.vue | 459 ++ pages/users/commission_rank/index.vue | 135 + pages/users/distributor/index.vue | 775 +++ pages/users/feedback/detail.vue | 157 + pages/users/feedback/index.vue | 482 ++ pages/users/feedback/list.vue | 109 + pages/users/goods_comment_con/index.vue | 270 + pages/users/goods_comment_list/index.vue | 189 + pages/users/goods_logistics/index.vue | 289 + pages/users/goods_return/index.vue | 182 + pages/users/login/index.vue | 979 +++ pages/users/order_confirm/index.vue | 2459 +++++++ pages/users/order_list/index.vue | 910 +++ pages/users/order_list/search.vue | 820 +++ pages/users/presell_order_list/index.vue | 498 ++ pages/users/privacy/index.vue | 48 + pages/users/promoter-list/index.vue | 316 + pages/users/promoter-order/index.vue | 254 + pages/users/promoter_rank/index.vue | 271 + pages/users/refund/confirm.vue | 430 ++ pages/users/refund/detail.vue | 496 ++ pages/users/refund/goods/index.vue | 323 + pages/users/refund/index.vue | 170 + pages/users/refund/list.vue | 328 + pages/users/refund/logistics.vue | 226 + pages/users/refund/select.vue | 113 + pages/users/retrievePassword/index.vue | 191 + pages/users/static/images/grade_bg.png | Bin 0 -> 139243 bytes pages/users/static/images/level_avatar.png | Bin 0 -> 8150 bytes pages/users/static/images/upgrade_icon.png | Bin 0 -> 2436 bytes pages/users/user_about/index.vue | 283 + pages/users/user_address/index.vue | 438 ++ pages/users/user_address_list/index.vue | 436 ++ pages/users/user_bill/index.vue | 148 + pages/users/user_brokerage/index.vue | 833 +++ pages/users/user_cash/index.vue | 606 ++ pages/users/user_coupon/index.vue | 275 + pages/users/user_get_coupon/index.vue | 138 + pages/users/user_goods_collection/index.vue | 684 ++ pages/users/user_grade/images/suozi.png | Bin 0 -> 648 bytes pages/users/user_grade/images/title.png | Bin 0 -> 651 bytes pages/users/user_grade/index.vue | 828 +++ pages/users/user_grade_list/index.vue | 90 + pages/users/user_info/index.vue | 546 ++ pages/users/user_info_form/index.vue | 465 ++ pages/users/user_integral/index.vue | 436 ++ pages/users/user_invoice_form/index.vue | 530 ++ pages/users/user_invoice_list/index.vue | 429 ++ pages/users/user_invoice_order/index.vue | 616 ++ pages/users/user_invoicing/index.vue | 500 ++ pages/users/user_modify_phone/index.vue | 243 + pages/users/user_modify_pwd/index.vue | 229 + pages/users/user_money/index.vue | 312 + pages/users/user_nickname/index.vue | 148 + pages/users/user_payment/index.vue | 680 ++ pages/users/user_phone/index.vue | 273 + pages/users/user_pwd_edit/index.vue | 191 + pages/users/user_return_list/index.vue | 156 + pages/users/user_setting/index.vue | 100 + pages/users/user_sgin/index.vue | 263 + pages/users/user_sgin_list/index.vue | 89 + pages/users/user_spread_code/index.vue | 417 ++ pages/users/user_spread_money/index.vue | 242 + pages/users/user_spread_user/index.vue | 350 + pages/users/wechat_login/index.vue | 579 ++ pages/webview/webview.vue | 69 + plugin/animate/animate.min.css | 2836 +++++++++ plugin/clipboard/clipboard.js | 973 +++ plugin/dayjs/dayjs.min.js | 1 + plugin/emoji-awesome/css/apple.min.css | 1 + plugin/emoji-awesome/css/emojione.min.css | 1 + plugin/emoji-awesome/css/facebook.min.css | 1 + plugin/emoji-awesome/css/google.min.css | 1 + plugin/emoji-awesome/css/messenger.min.css | 1 + plugin/emoji-awesome/css/tuoluojiang.css | 300 + plugin/emoji-awesome/css/twitter.min.css | 1 + .../img/sheet_apple_64_indexed_256colors.png | Bin 0 -> 1665354 bytes .../img/sheet_emojione_64_indexed_128.png | Bin 0 -> 920068 bytes .../img/sheet_facebook_64_indexed_128.png | Bin 0 -> 1129873 bytes .../img/sheet_google_64_indexed_128.png | Bin 0 -> 965345 bytes .../img/sheet_messenger_64_indexed_128.png | Bin 0 -> 1167266 bytes .../img/sheet_twitter_64_indexed_128.png | Bin 0 -> 882455 bytes plugin/image-tools/index.js | 156 + plugin/jweixin-module/index.js | 1 + plugin/pako/pako.es5.min.js | 2 + project.config.json | 58 + project.private.config.json | 4 + sitemap.json | 6 + static/css/base.css | 212 + static/css/style.scss | 933 +++ static/iconfont/iconfont.css | 2690 ++++++++ static/images/1-001.png | Bin 0 -> 2329 bytes static/images/1-002.png | Bin 0 -> 3289 bytes static/images/2-001.png | Bin 0 -> 1598 bytes static/images/2-002.png | Bin 0 -> 3597 bytes static/images/3-001.png | Bin 0 -> 1690 bytes static/images/3-002.png | Bin 0 -> 3588 bytes static/images/4-001.png | Bin 0 -> 2057 bytes static/images/4-002.png | Bin 0 -> 3068 bytes static/images/5-001.png | Bin 0 -> 4279 bytes static/images/5-002.png | Bin 0 -> 3376 bytes static/images/arrow-close.png | Bin 0 -> 881 bytes static/images/arrow-good.png | Bin 0 -> 1194 bytes static/images/arrow-right.png | Bin 0 -> 1144 bytes static/images/del.png | Bin 0 -> 1314 bytes static/images/edit.png | Bin 0 -> 437 bytes static/images/empty-box.png | Bin 0 -> 8591 bytes static/images/f.png | Bin 0 -> 2251 bytes static/images/images.lnk | Bin 0 -> 1161 bytes static/images/poster-close.png | Bin 0 -> 2130 bytes static/images/posterbackgd.png | Bin 0 -> 35565 bytes static/images/posterbackgd1.png | Bin 0 -> 9645 bytes static/images/refresh.png | Bin 0 -> 2046 bytes static/images/stop.png | Bin 0 -> 7434 bytes static/images/yh.png | Bin 0 -> 284 bytes store/getters.js | 20 + store/index.js | 14 + store/modules/app.js | 110 + store/modules/index.js | 5 + template.h5.html | 31 + uni.scss | 76 + uni_modules/bt-cropper/changelog.md | 19 + .../components/bt-cropper/bt-cropper.vue | 881 +++ .../components/bt-cropper/iconfont.css | 22 + .../bt-cropper/utils/calcCropper.js | 50 + .../bt-cropper/utils/calcImagePosition.js | 32 + .../bt-cropper/utils/calcImageSize.js | 36 + .../bt-cropper/utils/calcPointDistance.js | 21 + .../bt-cropper/utils/calcRightAndBottom.js | 16 + .../components/bt-cropper/utils/ratio.js | 12 + .../components/bt-cropper/utils/tools.js | 40 + uni_modules/bt-cropper/package.json | 84 + uni_modules/bt-cropper/readme.md | 114 + uni_modules/uni-datetime-picker/changelog.md | 130 + .../uni-datetime-picker/calendar-item.vue | 186 + .../uni-datetime-picker/calendar.vue | 944 +++ .../uni-datetime-picker/i18n/en.json | 22 + .../uni-datetime-picker/i18n/index.js | 8 + .../uni-datetime-picker/i18n/zh-Hans.json | 22 + .../uni-datetime-picker/i18n/zh-Hant.json | 22 + .../uni-datetime-picker/time-picker.vue | 933 +++ .../uni-datetime-picker.vue | 1026 +++ .../components/uni-datetime-picker/util.js | 464 ++ uni_modules/uni-datetime-picker/package.json | 87 + uni_modules/uni-datetime-picker/readme.md | 21 + uni_modules/uni-popup/changelog.md | 37 + .../components/uni-popup-dialog/keypress.js | 45 + .../uni-popup-dialog/uni-popup-dialog.vue | 263 + .../uni-popup-message/uni-popup-message.vue | 143 + .../uni-popup-share/uni-popup-share.vue | 185 + .../components/uni-popup/i18n/en.json | 7 + .../components/uni-popup/i18n/index.js | 8 + .../components/uni-popup/i18n/zh-Hans.json | 7 + .../components/uni-popup/i18n/zh-Hant.json | 7 + .../components/uni-popup/keypress.js | 45 + .../uni-popup/components/uni-popup/popup.js | 26 + .../components/uni-popup/uni-popup.vue | 403 ++ uni_modules/uni-popup/package.json | 89 + uni_modules/uni-popup/readme.md | 296 + uni_modules/uni-transition/changelog.md | 13 + .../uni-transition/createAnimation.js | 128 + .../uni-transition/uni-transition.vue | 277 + uni_modules/uni-transition/package.json | 83 + uni_modules/uni-transition/readme.md | 397 ++ utils/SubscribeMessage.js | 104 + utils/base64.js | 113 + utils/cache.js | 153 + utils/cartCache.js | 26 + utils/emoji.js | 99 + utils/index.js | 133 + utils/permission.js | 245 + utils/request.js | 113 + utils/util.js | 1013 +++ utils/validate.js | 37 + vue.config.js | 11 + 530 files changed, 161892 insertions(+) create mode 100644 .gitignore create mode 100644 App.vue create mode 100644 androidPrivacy.json create mode 100644 api/activity.js create mode 100644 api/admin.js create mode 100644 api/api.js create mode 100644 api/community.js create mode 100644 api/order.js create mode 100644 api/points_mall.js create mode 100644 api/product.js create mode 100644 api/public.js create mode 100644 api/store.js create mode 100644 api/user.js create mode 100644 components/BaseMoney.vue create mode 100644 components/Loading/index.vue create mode 100644 components/PriceChange/index.vue create mode 100644 components/WaterfallsFlow/WaterfallsFlow.vue create mode 100644 components/WaterfallsFlowItem/WaterfallsFlowItem.vue create mode 100644 components/adc/index.vue create mode 100644 components/addInvoicing/index.vue create mode 100644 components/addcartWindow/index.vue create mode 100644 components/addressWindow/index.vue create mode 100644 components/alert/index.vue create mode 100644 components/areaWindow/index.vue create mode 100644 components/bindmobile.vue create mode 100644 components/cash/index.vue create mode 100644 components/checkCoupon/index.vue create mode 100644 components/checkDelivery/index.vue create mode 100644 components/combinNav/index.vue create mode 100644 components/comment.vue create mode 100644 components/copyPassword/index.vue create mode 100644 components/countDown/index.vue create mode 100644 components/couponListWindow/index.vue create mode 100644 components/cusPreviewImg/index.vue create mode 100644 components/customTab.vue create mode 100644 components/discountDetails/index.vue create mode 100644 components/easy-loadimage/easy-loadimage.vue create mode 100644 components/eidtUserModal/index.vue create mode 100644 components/emptyPage.vue create mode 100644 components/freightGuarantee/index.vue create mode 100644 components/goodList/index.vue create mode 100644 components/guide/index.vue create mode 100644 components/home/index.vue create mode 100644 components/index.vue create mode 100644 components/invoiceGoods/index.vue create mode 100644 components/jyf-parser/jyf-parser.vue create mode 100644 components/jyf-parser/libs/CssHandler.js create mode 100644 components/jyf-parser/libs/MpHtmlParser.js create mode 100644 components/jyf-parser/libs/config.js create mode 100644 components/jyf-parser/libs/handler.sjs create mode 100644 components/jyf-parser/libs/handler.wxs create mode 100644 components/jyf-parser/libs/trees.vue create mode 100644 components/kefuIcon/index.vue create mode 100644 components/mentioned.vue create mode 100644 components/mpvue-calendar/browser-style.css create mode 100644 components/mpvue-calendar/calendarinit.js create mode 100644 components/mpvue-calendar/icon.css create mode 100644 components/mpvue-calendar/mpvue-calendar.vue create mode 100644 components/mpvue-calendar/style.css create mode 100644 components/orderCoupon/index.vue create mode 100644 components/orderGoods/index.vue create mode 100644 components/passwordPopup/index.vue create mode 100644 components/payment/index.vue create mode 100644 components/plantConSwiper/index.vue create mode 100644 components/plantWaterfallsFlow/WaterfallsFlow.vue create mode 100644 components/plantWaterfallsFlowItem/WaterfallsFlowItem.vue create mode 100644 components/privacyAgreementPopup/index.vue create mode 100644 components/productConSwiper/index.vue create mode 100644 components/productWindow/index.vue create mode 100644 components/recommend/index.vue create mode 100644 components/rightSlider.vue create mode 100644 components/rightSlider/index.vue create mode 100644 components/rightSlidera.vue create mode 100644 components/shareInfo/index.vue create mode 100644 components/shareRedPackets/index.vue create mode 100644 components/shopList/index.vue create mode 100644 components/skeleton/index.vue create mode 100644 components/specs/index.vue create mode 100644 components/swipers/index.vue create mode 100644 components/timeSlot/index.vue create mode 100644 components/timeranges/index.vue create mode 100644 components/tui-skeleton.vue create mode 100644 components/ucharts/component.vue create mode 100644 components/ucharts/ucharts.js create mode 100644 components/ucharts/ucharts.min.js create mode 100644 components/uni-calendar/calendar.js create mode 100644 components/uni-calendar/uni-calendar-item.vue create mode 100644 components/uni-calendar/uni-calendar.vue create mode 100644 components/uni-calendar/util.js create mode 100644 components/userEvaluation/index.vue create mode 100644 components/userNameSwiper/userNameSwiper.vue create mode 100644 components/vconsole.min.js create mode 100644 components/verify/utils/ase.js create mode 100644 components/verify/verify.vue create mode 100644 components/verify/verifyPoint/verifyPoint.vue create mode 100644 components/verify/verifySlider/verifySlider.vue create mode 100644 components/yq-avatar/yq-avatar.vue create mode 100644 components/zb-code/qrcode.js create mode 100644 components/zb-code/zb-code.vue create mode 100644 config/app.js create mode 100644 config/cache.js create mode 100644 config/socket.js create mode 100644 libs/chat.js create mode 100644 libs/login.js create mode 100644 libs/order.js create mode 100644 libs/routine.js create mode 100644 libs/spread.js create mode 100644 libs/uniApi.js create mode 100644 libs/wechat.js create mode 100644 main.js create mode 100644 manifest.json create mode 100644 mixins/SendVerifyCode.js create mode 100644 mixins/history.js create mode 100644 package-lock.json create mode 100644 pages.json create mode 100644 pages/activity/assist/index.vue create mode 100644 pages/activity/assist_detail/index.vue create mode 100644 pages/activity/assist_record/index.vue create mode 100644 pages/activity/collect_coupons/index.vue create mode 100644 pages/activity/combination/index.vue create mode 100644 pages/activity/combination_details/index.vue create mode 100644 pages/activity/combination_poster/index.vue create mode 100644 pages/activity/combination_status/index.vue create mode 100644 pages/activity/goods_seckill/index.vue create mode 100644 pages/activity/goods_seckill_details/index.vue create mode 100644 pages/activity/lifeService/index.vue create mode 100644 pages/activity/liveBroadcast/index.vue create mode 100644 pages/activity/my_registrate/index.vue create mode 100644 pages/activity/presell/index.vue create mode 100644 pages/activity/presell_details/index.vue create mode 100644 pages/activity/rank/index.vue create mode 100644 pages/activity/registrate_activity/index.vue create mode 100644 pages/activity/registrate_list/index.vue create mode 100644 pages/activity/static/images/no_product.png create mode 100644 pages/activity/static/images/poster-bag.png create mode 100644 pages/activity/static/images/presell_text.png create mode 100644 pages/activity/static/images/rank.png create mode 100644 pages/activity/static/images/rank_cate.png create mode 100644 pages/activity/static/images/rank_num.png create mode 100644 pages/activity/static/images/vacancy.png create mode 100644 pages/activity/topic/index.vue create mode 100644 pages/activity/topic_detail/index.vue create mode 100644 pages/admin/business/index.vue create mode 100644 pages/admin/cancellate_result/index.vue create mode 100644 pages/admin/delivery/index.vue create mode 100644 pages/admin/goods_details/index.vue create mode 100644 pages/admin/order/index.vue create mode 100644 pages/admin/orderDetail/index.vue create mode 100644 pages/admin/orderList/index.vue create mode 100644 pages/admin/orderRefund/index.vue create mode 100644 pages/admin/order_cancellation/index.vue create mode 100644 pages/admin/refundDetail/index.vue create mode 100644 pages/admin/refundList/index.vue create mode 100644 pages/admin/scan/index.vue create mode 100644 pages/admin/statistics/index.vue create mode 100644 pages/admin/storeDiy/index.vue create mode 100644 pages/admin/system_form/index.vue create mode 100644 pages/annex/static/big-bg.png create mode 100644 pages/annex/static/grade-bg.png create mode 100644 pages/annex/static/left.png create mode 100644 pages/annex/static/renew_bg.png create mode 100644 pages/annex/static/vipBg.png create mode 100644 pages/annex/vip_center/index.vue create mode 100644 pages/annex/vip_clause/index.vue create mode 100644 pages/annex/vip_grade/index.vue create mode 100644 pages/annex/vip_paid/index.vue create mode 100644 pages/annex/web_view/index.vue create mode 100644 pages/auth/index.vue create mode 100644 pages/chat/customer_info/index.vue create mode 100644 pages/chat/customer_list/chat.vue create mode 100644 pages/chat/customer_list/index.vue create mode 100644 pages/chat/customer_login/index.vue create mode 100644 pages/chat/static/images/noPermission.png create mode 100644 pages/columnGoods/HotNewGoods/index.vue create mode 100644 pages/columnGoods/goods_coupon_list/index.vue create mode 100644 pages/columnGoods/goods_list/index.vue create mode 100644 pages/columnGoods/goods_search/index.vue create mode 100644 pages/columnGoods/goods_search_con/index.vue create mode 100644 pages/columnGoods/images/star.png create mode 100644 pages/columnGoods/images/star_active.png create mode 100644 pages/columnGoods/images/star_active_purple.png create mode 100644 pages/error/index.vue create mode 100644 pages/goods_cate/goods_cate.vue create mode 100644 pages/goods_details/components/specs/index.vue create mode 100644 pages/goods_details/discountsGoods.vue create mode 100644 pages/goods_details/index.vue create mode 100644 pages/goods_details/productWindow.vue create mode 100644 pages/guide/index.vue create mode 100644 pages/index/component/activeParty.vue create mode 100644 pages/index/component/bargain.vue create mode 100644 pages/index/component/blankPage.vue create mode 100644 pages/index/component/combination.vue create mode 100644 pages/index/component/component - 快捷方式.lnk create mode 100644 pages/index/component/coupon.vue create mode 100644 pages/index/component/customerService.vue create mode 100644 pages/index/component/follow.vue create mode 100644 pages/index/component/goodList.vue create mode 100644 pages/index/component/guide.vue create mode 100644 pages/index/component/headerSerch.vue create mode 100644 pages/index/component/homeComb.vue create mode 100644 pages/index/component/hotRanking.vue create mode 100644 pages/index/component/index.js create mode 100644 pages/index/component/liveBroadcast.vue create mode 100644 pages/index/component/menus.vue create mode 100644 pages/index/component/news.vue create mode 100644 pages/index/component/pictureCube.vue create mode 100644 pages/index/component/plantList.vue create mode 100644 pages/index/component/presellList.vue create mode 100644 pages/index/component/promotionList.vue create mode 100644 pages/index/component/richText.vue create mode 100644 pages/index/component/seckill.vue create mode 100644 pages/index/component/shopList.vue create mode 100644 pages/index/component/swiperBg.vue create mode 100644 pages/index/component/tabNav.vue create mode 100644 pages/index/component/titles.vue create mode 100644 pages/index/component/topic.vue create mode 100644 pages/index/index.vue create mode 100644 pages/index/style/main.scss create mode 100644 pages/news_details/index.vue create mode 100644 pages/news_list/index.vue create mode 100644 pages/order_addcart/order_addcart.vue create mode 100644 pages/order_details/delivery.vue create mode 100644 pages/order_details/index.vue create mode 100644 pages/order_details/stay.vue create mode 100644 pages/order_pay_back/index.vue create mode 100644 pages/order_pay_status/index.vue create mode 100644 pages/plantGrass/components/associated.vue create mode 100644 pages/plantGrass/components/participateTopic.vue create mode 100644 pages/plantGrass/plant_detail/index.vue create mode 100644 pages/plantGrass/plant_featured/index.vue create mode 100644 pages/plantGrass/plant_release/index.vue create mode 100644 pages/plantGrass/plant_search/index.vue create mode 100644 pages/plantGrass/plant_search_list/index.vue create mode 100644 pages/plantGrass/plant_show/index.vue create mode 100644 pages/plantGrass/plant_topic/index.vue create mode 100644 pages/plantGrass/plant_user/index.vue create mode 100644 pages/plantGrass/plant_user_attention/index.vue create mode 100644 pages/plantGrass/plant_user_fans/index.vue create mode 100644 pages/plantGrass/static/images/no-topic.png create mode 100644 pages/plantGrass/static/images/no_attention.png create mode 100644 pages/plantGrass/static/images/no_content.png create mode 100644 pages/plantGrass/static/images/no_fans.png create mode 100644 pages/plantGrass/static/images/plant_bg.jpg create mode 100644 pages/plantGrass/static/images/video_bg.png create mode 100644 pages/plantGrass/style/main.scss create mode 100644 pages/plant_grass/index.vue create mode 100644 pages/points_mall/exchange_record.vue create mode 100644 pages/points_mall/goods_selection.vue create mode 100644 pages/points_mall/index.vue create mode 100644 pages/points_mall/integral_goods_details.vue create mode 100644 pages/points_mall/integral_goods_list.vue create mode 100644 pages/points_mall/integral_order.vue create mode 100644 pages/points_mall/integral_order_details.vue create mode 100644 pages/points_mall/integral_order_status.vue create mode 100644 pages/points_mall/logistics_details.vue create mode 100644 pages/product/addGoods/addFreightTemplate.vue create mode 100644 pages/product/addGoods/addGoodDetils.vue create mode 100644 pages/product/addGoods/freightTemplate.vue create mode 100644 pages/product/addGoods/index.vue create mode 100644 pages/product/addGoods/modifyPrice.vue create mode 100644 pages/product/addGoods/mulSpecification.vue create mode 100644 pages/product/addGoods/scss/freightTemplate.scss create mode 100644 pages/product/addGoods/scss/index.scss create mode 100644 pages/product/addGoods/secound.vue create mode 100644 pages/product/addGoods/singleSpecification.vue create mode 100644 pages/product/addGoods/specificationProperties.vue create mode 100644 pages/product/components/areas.vue create mode 100644 pages/product/components/attr.vue create mode 100644 pages/product/components/distributionArea.vue create mode 100644 pages/product/components/inputGoodsDetils.vue create mode 100644 pages/product/components/linkageAssembly.vue create mode 100644 pages/product/components/parcelArea.vue create mode 100644 pages/product/components/platform.vue create mode 100644 pages/product/components/popupContainer.vue create mode 100644 pages/product/components/search.vue create mode 100644 pages/product/components/selectForm.vue create mode 100644 pages/product/components/shopItem.vue create mode 100644 pages/product/components/specificationAttr.vue create mode 100644 pages/product/components/store_classification.vue create mode 100644 pages/product/components/tip.vue create mode 100644 pages/product/goodsOnSale/index.vue create mode 100644 pages/product/goodsOnSale/scss/index.scss create mode 100644 pages/product/list/index.vue create mode 100644 pages/product/recycleBin/index.vue create mode 100644 pages/product/soldOutGoods/index.vue create mode 100644 pages/product/static/images/close.png create mode 100644 pages/product/static/images/creamer.png create mode 100644 pages/product/static/images/product_add.png create mode 100644 pages/product/static/images/product_cate.png create mode 100644 pages/product/static/images/product_freight.png create mode 100644 pages/product/static/images/product_out.png create mode 100644 pages/product/static/images/product_recycle.png create mode 100644 pages/product/static/images/product_sales.png create mode 100644 pages/product/static/images/product_specification.png create mode 100644 pages/product/storeClassification/addStoreClass.vue create mode 100644 pages/product/storeClassification/index.vue create mode 100644 pages/product/storeClassification/scss/addStoreClass.scss create mode 100644 pages/product/storeClassification/scss/index.scss create mode 100644 pages/short_video/appSwiper/index.nvue create mode 100644 pages/short_video/components/douyin-scrollview/douyin-scrollview.nvue create mode 100644 pages/short_video/components/index/aixining.png create mode 100644 pages/short_video/components/index/close.png create mode 100644 pages/short_video/components/index/collection.png create mode 100644 pages/short_video/components/index/evaluate.png create mode 100644 pages/short_video/components/index/logins.gif create mode 100644 pages/short_video/components/index/pause.png create mode 100644 pages/short_video/components/index/play.png create mode 100644 pages/short_video/components/index/share-fill.png create mode 100644 pages/short_video/components/index/video-delete.png create mode 100644 pages/short_video/components/index/video-edit.png create mode 100644 pages/short_video/components/index/video-failed.png create mode 100644 pages/short_video/components/index/video-review.png create mode 100644 pages/short_video/components/index/we-chat.png create mode 100644 pages/short_video/components/index/xin-2.png create mode 100644 pages/short_video/components/index/xin.png create mode 100644 pages/short_video/components/index/zan01.png create mode 100644 pages/short_video/components/index/zan02.png create mode 100644 pages/short_video/components/mentioned/mentioned.vue create mode 100644 pages/short_video/nvueSwiper/index.nvue create mode 100644 pages/short_video/static/img/index/close.png create mode 100644 pages/short_video/static/img/index/collection.png create mode 100644 pages/short_video/static/img/index/evaluate.png create mode 100644 pages/short_video/static/img/index/icon-back.png create mode 100644 pages/short_video/static/img/index/logins.gif create mode 100644 pages/short_video/static/img/index/pause.png create mode 100644 pages/short_video/static/img/index/play.png create mode 100644 pages/short_video/static/img/index/posterbackgd.png create mode 100644 pages/short_video/static/img/index/share-fill.png create mode 100644 pages/short_video/static/img/index/video-delete.png create mode 100644 pages/short_video/static/img/index/video-edit.png create mode 100644 pages/short_video/static/img/index/video-failed.png create mode 100644 pages/short_video/static/img/index/video-review.png create mode 100644 pages/short_video/static/img/index/we-chat.png create mode 100644 pages/short_video/static/img/index/xin-2.png create mode 100644 pages/short_video/static/img/index/xin.png create mode 100644 pages/small_page/index.vue create mode 100644 pages/store/applicationRecord/index.vue create mode 100644 pages/store/component/index.js create mode 100644 pages/store/detail/index.vue create mode 100644 pages/store/home/index.vue create mode 100644 pages/store/index.vue create mode 100644 pages/store/list/index.vue create mode 100644 pages/store/merchantDetails/index.vue create mode 100644 pages/store/qualifications/index.vue create mode 100644 pages/store/settled/index.vue create mode 100644 pages/store/shopStreet/index.vue create mode 100644 pages/store/static/images/coupon2.png create mode 100644 pages/store/static/images/no-topic.png create mode 100644 pages/store/static/images/not-pass.png create mode 100644 pages/store/static/images/passed.png create mode 100644 pages/store/static/images/pending.png create mode 100644 pages/store/static/images/settledSuccessful.svg create mode 100644 pages/store/static/images/successTop.png create mode 100644 pages/user/index.vue create mode 100644 pages/users/agreement_rules/index.vue create mode 100644 pages/users/browsingHistory/index.vue create mode 100644 pages/users/commission_rank/index.vue create mode 100644 pages/users/distributor/index.vue create mode 100644 pages/users/feedback/detail.vue create mode 100644 pages/users/feedback/index.vue create mode 100644 pages/users/feedback/list.vue create mode 100644 pages/users/goods_comment_con/index.vue create mode 100644 pages/users/goods_comment_list/index.vue create mode 100644 pages/users/goods_logistics/index.vue create mode 100644 pages/users/goods_return/index.vue create mode 100644 pages/users/login/index.vue create mode 100644 pages/users/order_confirm/index.vue create mode 100644 pages/users/order_list/index.vue create mode 100644 pages/users/order_list/search.vue create mode 100644 pages/users/presell_order_list/index.vue create mode 100644 pages/users/privacy/index.vue create mode 100644 pages/users/promoter-list/index.vue create mode 100644 pages/users/promoter-order/index.vue create mode 100644 pages/users/promoter_rank/index.vue create mode 100644 pages/users/refund/confirm.vue create mode 100644 pages/users/refund/detail.vue create mode 100644 pages/users/refund/goods/index.vue create mode 100644 pages/users/refund/index.vue create mode 100644 pages/users/refund/list.vue create mode 100644 pages/users/refund/logistics.vue create mode 100644 pages/users/refund/select.vue create mode 100644 pages/users/retrievePassword/index.vue create mode 100644 pages/users/static/images/grade_bg.png create mode 100644 pages/users/static/images/level_avatar.png create mode 100644 pages/users/static/images/upgrade_icon.png create mode 100644 pages/users/user_about/index.vue create mode 100644 pages/users/user_address/index.vue create mode 100644 pages/users/user_address_list/index.vue create mode 100644 pages/users/user_bill/index.vue create mode 100644 pages/users/user_brokerage/index.vue create mode 100644 pages/users/user_cash/index.vue create mode 100644 pages/users/user_coupon/index.vue create mode 100644 pages/users/user_get_coupon/index.vue create mode 100644 pages/users/user_goods_collection/index.vue create mode 100644 pages/users/user_grade/images/suozi.png create mode 100644 pages/users/user_grade/images/title.png create mode 100644 pages/users/user_grade/index.vue create mode 100644 pages/users/user_grade_list/index.vue create mode 100644 pages/users/user_info/index.vue create mode 100644 pages/users/user_info_form/index.vue create mode 100644 pages/users/user_integral/index.vue create mode 100644 pages/users/user_invoice_form/index.vue create mode 100644 pages/users/user_invoice_list/index.vue create mode 100644 pages/users/user_invoice_order/index.vue create mode 100644 pages/users/user_invoicing/index.vue create mode 100644 pages/users/user_modify_phone/index.vue create mode 100644 pages/users/user_modify_pwd/index.vue create mode 100644 pages/users/user_money/index.vue create mode 100644 pages/users/user_nickname/index.vue create mode 100644 pages/users/user_payment/index.vue create mode 100644 pages/users/user_phone/index.vue create mode 100644 pages/users/user_pwd_edit/index.vue create mode 100644 pages/users/user_return_list/index.vue create mode 100644 pages/users/user_setting/index.vue create mode 100644 pages/users/user_sgin/index.vue create mode 100644 pages/users/user_sgin_list/index.vue create mode 100644 pages/users/user_spread_code/index.vue create mode 100644 pages/users/user_spread_money/index.vue create mode 100644 pages/users/user_spread_user/index.vue create mode 100644 pages/users/wechat_login/index.vue create mode 100644 pages/webview/webview.vue create mode 100644 plugin/animate/animate.min.css create mode 100644 plugin/clipboard/clipboard.js create mode 100644 plugin/dayjs/dayjs.min.js create mode 100644 plugin/emoji-awesome/css/apple.min.css create mode 100644 plugin/emoji-awesome/css/emojione.min.css create mode 100644 plugin/emoji-awesome/css/facebook.min.css create mode 100644 plugin/emoji-awesome/css/google.min.css create mode 100644 plugin/emoji-awesome/css/messenger.min.css create mode 100644 plugin/emoji-awesome/css/tuoluojiang.css create mode 100644 plugin/emoji-awesome/css/twitter.min.css create mode 100644 plugin/emoji-awesome/img/sheet_apple_64_indexed_256colors.png create mode 100644 plugin/emoji-awesome/img/sheet_emojione_64_indexed_128.png create mode 100644 plugin/emoji-awesome/img/sheet_facebook_64_indexed_128.png create mode 100644 plugin/emoji-awesome/img/sheet_google_64_indexed_128.png create mode 100644 plugin/emoji-awesome/img/sheet_messenger_64_indexed_128.png create mode 100644 plugin/emoji-awesome/img/sheet_twitter_64_indexed_128.png create mode 100644 plugin/image-tools/index.js create mode 100644 plugin/jweixin-module/index.js create mode 100644 plugin/pako/pako.es5.min.js create mode 100644 project.config.json create mode 100644 project.private.config.json create mode 100644 sitemap.json create mode 100644 static/css/base.css create mode 100644 static/css/style.scss create mode 100644 static/iconfont/iconfont.css create mode 100644 static/images/1-001.png create mode 100644 static/images/1-002.png create mode 100644 static/images/2-001.png create mode 100644 static/images/2-002.png create mode 100644 static/images/3-001.png create mode 100644 static/images/3-002.png create mode 100644 static/images/4-001.png create mode 100644 static/images/4-002.png create mode 100644 static/images/5-001.png create mode 100644 static/images/5-002.png create mode 100644 static/images/arrow-close.png create mode 100644 static/images/arrow-good.png create mode 100644 static/images/arrow-right.png create mode 100644 static/images/del.png create mode 100644 static/images/edit.png create mode 100644 static/images/empty-box.png create mode 100644 static/images/f.png create mode 100644 static/images/images.lnk create mode 100644 static/images/poster-close.png create mode 100644 static/images/posterbackgd.png create mode 100644 static/images/posterbackgd1.png create mode 100644 static/images/refresh.png create mode 100644 static/images/stop.png create mode 100644 static/images/yh.png create mode 100644 store/getters.js create mode 100644 store/index.js create mode 100644 store/modules/app.js create mode 100644 store/modules/index.js create mode 100644 template.h5.html create mode 100644 uni.scss create mode 100644 uni_modules/bt-cropper/changelog.md create mode 100644 uni_modules/bt-cropper/components/bt-cropper/bt-cropper.vue create mode 100644 uni_modules/bt-cropper/components/bt-cropper/iconfont.css create mode 100644 uni_modules/bt-cropper/components/bt-cropper/utils/calcCropper.js create mode 100644 uni_modules/bt-cropper/components/bt-cropper/utils/calcImagePosition.js create mode 100644 uni_modules/bt-cropper/components/bt-cropper/utils/calcImageSize.js create mode 100644 uni_modules/bt-cropper/components/bt-cropper/utils/calcPointDistance.js create mode 100644 uni_modules/bt-cropper/components/bt-cropper/utils/calcRightAndBottom.js create mode 100644 uni_modules/bt-cropper/components/bt-cropper/utils/ratio.js create mode 100644 uni_modules/bt-cropper/components/bt-cropper/utils/tools.js create mode 100644 uni_modules/bt-cropper/package.json create mode 100644 uni_modules/bt-cropper/readme.md create mode 100644 uni_modules/uni-datetime-picker/changelog.md create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js create mode 100644 uni_modules/uni-datetime-picker/package.json create mode 100644 uni_modules/uni-datetime-picker/readme.md create mode 100644 uni_modules/uni-popup/changelog.md create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/keypress.js create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue create mode 100644 uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue create mode 100644 uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/en.json create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/index.js create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json create mode 100644 uni_modules/uni-popup/components/uni-popup/keypress.js create mode 100644 uni_modules/uni-popup/components/uni-popup/popup.js create mode 100644 uni_modules/uni-popup/components/uni-popup/uni-popup.vue create mode 100644 uni_modules/uni-popup/package.json create mode 100644 uni_modules/uni-popup/readme.md create mode 100644 uni_modules/uni-transition/changelog.md create mode 100644 uni_modules/uni-transition/components/uni-transition/createAnimation.js create mode 100644 uni_modules/uni-transition/components/uni-transition/uni-transition.vue create mode 100644 uni_modules/uni-transition/package.json create mode 100644 uni_modules/uni-transition/readme.md create mode 100644 utils/SubscribeMessage.js create mode 100644 utils/base64.js create mode 100644 utils/cache.js create mode 100644 utils/cartCache.js create mode 100644 utils/emoji.js create mode 100644 utils/index.js create mode 100644 utils/permission.js create mode 100644 utils/request.js create mode 100644 utils/util.js create mode 100644 utils/validate.js create mode 100644 vue.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0c44574 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +.DS_Store +node_modules +/dist +.hbuilderx + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +build.sh +.idea +unpackage \ No newline at end of file diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..4fc5a03 --- /dev/null +++ b/App.vue @@ -0,0 +1,324 @@ + + diff --git a/androidPrivacy.json b/androidPrivacy.json new file mode 100644 index 0000000..8b67533 --- /dev/null +++ b/androidPrivacy.json @@ -0,0 +1,28 @@ +{ + "version" : "1", + "prompt" : "template", + "title" : "服务协议与隐私政策", + "message" : "\t请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。
\r\r +\t你可以阅读 《用户协议》《隐私政策》了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。", + "buttonAccept" : "同意并接受", + "buttonRefuse" : "暂不同意", + "second" : { + "title" : "确认提示", + "message" : "进入应用前,你需先同意《用户协议》《隐私政策》,否则将退出应用。", + "buttonAccept" : "同意并继续", + "buttonRefuse" : "退出应用" + }, + "styles" : { + "backgroundColor" : "#fff", + "borderRadius" : "5px", + "title" : { + "color" : "#000" + }, + "buttonAccept" : { + "color" : "#fff" + }, + "buttonRefuse" : { + "color" : "#ccc" + } + } +} diff --git a/api/activity.js b/api/activity.js new file mode 100644 index 0000000..ca9ca16 --- /dev/null +++ b/api/activity.js @@ -0,0 +1,256 @@ + +import request from "@/utils/request.js"; + +/** + * 拼团列表 + * + */ +export function getCombinationList(data) { + return request.get('store/product/group/lst', data, { + noAuth: true + }); +} +/** + * 拼团参与人 + * + */ +export function getCombinationUser(data) { + return request.get('store/product/group/count', data, { + noAuth: true + }); +} +/** + * 活动分类 + * + */ +export function getActivitycategory(type) { + return request.get('product/spu/active/category/' + type, {}, { + noAuth: true + }); +} + +/** + * 拼团详情 + * + */ +export function getCombinationDetail(id) { + return request.get('store/product/group/detail/' + id, {}, { + noAuth: true + }); +} + +/** + * 拼团 开团 + */ +export function getCombinationPink(id) { + return request.get("store/product/group/get/" + id); +} + + +/** + * 拼团 取消开团 + */ +export function postCombinationRemove(data) { + return request.post("store/product/group/cancel", data); +} + +/** + * 秒杀产品详情 + * @param int id + */ +export function getSeckillDetail(id) { + return request.get('store/product/seckill/detail/' + id, {}, { + noAuth: true + }); +} + + +/** + * 拼团海报 + * @param object data + * + */ +export function getCombinationPoster(data) { + return request.post('combination/poster', data) +} + + + +/** + * 获取秒杀小程序二维码 + */ +export function seckillCode(id, data) { + return request.get("seckill/code/" + id, data); +} + +/** + * 获取拼团小程序二维码 + */ +export function scombinationCode(id) { + return request.get("combination/code/" + id); +} +/** + * 秒杀产品时间区间 + * + */ +export function getSeckillIndexTime() { + return request.get('store/product/seckill/select', {}, { + noAuth: true + }); +} +/** + * 秒杀产品列表 + * @param int time + * @param object data + */ +export function getSeckillList(data) { + return request.get('store/product/seckill/lst', data, { + noAuth: true + }); + +} +/** + * 预售列表 + */ +export function getPresellList(data) { + return request.get('store/product/presell/lst', data, { + noAuth: true + }); +} +/** + * 助力列表 + */ +export function getAssistList(data) { + return request.get('store/product/assist/lst', data, { + noAuth: true + }); +} + +/** + * 助力列表 -- 发起助力 + */ +export function initiateAssistApi(id) { + return request.post('store/product/assist/create/' + id); +} +/** + * 助力详情 + */ +export function getAssistDetail(id,data) { + return request.get('store/product/assist/detail/' + id,data); +} +/** + * 助力好友 + */ +export function assistHelpList(id, data) { + return request.get('store/product/assist/user/' + id, data); +} +/** + * 预售协议 + */ +export function presellAgreement() { + return request.get('store/product/presell/agree'); +} +/** + * 已助力成功数据 + */ +export function assistUserData(data) { + return request.get('store/product/assist/count', data, { + noAuth: true + }); +} +/** + * 为好友助力 + */ +export function postAssistHelp(id) { + return request.post('store/product/assist/set/' + id); +} +/** + * 获取助力查看分享次数 + */ +export function getAssistUser(id) { + return request.get('store/product/assist/share/' + id); +} +/** + * 助力记录列表 + */ +export function getBargainUserList(data) { + return request.get('store/product/assist/set/lst', data); +} +/** + * 助力记录列表 -- 取消 + */ +export function getBargainUserCancel(id) { + return request.post('store/product/assist/set/delete/' + id); +} +/** + * 活动专题列表 + */ +export function getTopicList(id, data) { + return request.get(`activity/lst/${id}`, data, { + noAuth: true + }); +} +/** + * 活动专题详情 + */ +export function getTopicDetail(id) { + return request.get(`activity/info/${id}`,{}, { + noAuth: true + }); +} +/** + * 活动专题商品 + */ +export function getTopicProLst(data) { + return request.get(`product/spu/labels`,data, { + noAuth: true + }); +} +/** + * 获取本地服务商户列表 + */ +export function getMerchantServiceLst(data) { + return request.get(`store/merchant/local`,data, { + noAuth: true + }); +} +/** + * 获取优惠券列表 + */ +export function getCouponLst(data) { + return request.get(`coupon/getlst`,data, { + noAuth: true + }); +} +/** + * 获取优惠券列表 + */ +export function getNewPeopleCouponLst(data) { + return request.get(`coupon/new_people`,data, { + noAuth: true + }); +} +/** + * 获取热卖排行列表 + */ +export function hotRankingApi(data) { + return request.get(`product/spu/get_hot_ranking`,data, { + noAuth: true + }); +} +/** + * 热卖排行列表分类 + */ +export function spuTop(data) { + return request.get(`store/product/category/hotranking`, {}, { + noAuth: true + }); +} +/** + * 热卖排行列表 + */ +export function spuTopList(data) { + return request.get(`product/spu/get_hot_ranking`, data, { + noAuth: true + }); +} \ No newline at end of file diff --git a/api/admin.js b/api/admin.js new file mode 100644 index 0000000..9566dee --- /dev/null +++ b/api/admin.js @@ -0,0 +1,225 @@ + +import request from "@/utils/request.js"; + +/** + * 统计数据 + */ +export function getStatisticsInfo() { + return request.get("admin/order/statistics", {}, { login: true }); +} +/** + * 订单月统计 + */ +export function getStatisticsMonth(where) { + return request.get("admin/order/data", where, { login: true }); +} +/** + * 订单月统计 + */ +export function getAdminOrderList(where) { + return request.get("admin/order/list", where, { login: true }); +} +/** + * 订单改价 + */ +export function setAdminOrderPrice(merId,id,data) { + return request.post("admin/"+merId+"/price/"+id, data, { login: true }); +} +/** + * 订单备注 + */ +export function setAdminOrderRemark(merId,id,data) { + return request.post("admin/"+merId+"/mark/" +id, data, { login: true }); +} +/** + * 订单详情 + */ +export function getAdminOrderDetail(merId, orderId) { + return request.get("admin/"+merId+"/order/" + orderId, {}, { login: true }); +} +/** + * 订单发货信息获取 + */ +export function getAdminOrderDelivery(orderId) { + return request.get( "admin/order/delivery/gain/" + orderId,{},{ login: true }); +} +/** + * 订单发货保存 + */ +export function setAdminOrderDelivery(merId,id,data) { + return request.post("admin/"+merId+"/delivery/"+ id, data, { login: true }); +} +/** + * 订单统计图 + */ +export function getStatisticsTime(data) { + return request.get("admin/order/time", data, { login: true }); +} +/** + * 线下付款订单确认付款 + */ +export function setOfflinePay(merId, data) { + return request.post("admin/"+merId+"/order/offline", data, { login: true }); +} +/** + * 订单确认退款 + */ +export function setOrderRefund(merId,data) { + return request.post("admin/"+merId+"/order/refund", data, { login: true }); +} + +/** + * 获取快递公司 + * @returns {*} + */ +export function getLogistics() { + return request.get("logistics", {}, { login: false }); +} +/** + * 订单核销 + * @returns {*} + */ +export function orderVerific(merId, id, data) { + return request.post(`verifier/${merId}/${id}`,data); +} +/** + * 核销订单详情 + * @returns {*} + */ +export function verifierOrder(mer_id,code) { + return request.get("verifier/"+mer_id+"/order/"+code); +} +/** + * 订单统计数 + * @returns {*} + */ +export function orderStatistics(mer_id) { + return request.get("admin/"+mer_id+"/statistics"); +} +/** + * 每日成交额 + * @returns {*} + */ +export function orderPrice(where, mer_id) { + return request.get("admin/"+mer_id+"/order_price", where, { login: true }); +} +/** + * 订单列表 + * @returns {*} + */ +export function getOrderList(where, merId) { + return request.get(`admin/${merId}/order_list`, where, { login: true }); +} +/** + * 退款订单列表 + * @returns {*} + */ +export function getRefundOrderList(where, merId) { + return request.get(`server/${merId}/refund/lst`, where, { login: true }); +} +/** + * 营业额统计 + * @returns {*} + */ +export function turnoverStatistics(where, merId) { + return request.get(`admin/${merId}/pay_price`, where, { login: true }); +} +/** + * 订单统计 + * @returns {*} + */ +export function orderNumberStatistics(where, merId) { + return request.get(`admin/${merId}/pay_number`, where, { login: true }); +} +/** + * 获取订单打印默认配置 + * @returns {*} + */ +export function orderDeliveryInfo(merId) { + return request.get(`admin/${merId}/mer_form`); +} +/** + * 获取电子面单列表 + * @returns {*} + */ +export function orderExportTemp(data) { + return request.get("store/expr/temps", data); +} +/** + * 是否开始电子面单和同城配送 + * @returns {*} + */ +export function getTempAndDelivery(merId) { + return request.get(`admin/${merId}/delivery_config`); +} +/** + * 获取同城配送门店列表 + * @returns {*} + */ +export function getDeliveryStoreLst(merId) { + return request.get(`admin/${merId}/delivery_options`); +} +/** + * 退款订单信息 + * @returns {*} + */ +export function getRefundOrderInfo(merId,id) { + return request.get(`server/${merId}/refund/get/${id}`); +} +/** + * 提交退款订单信息 + * @returns {*} + */ +export function refundOrderSubmit(merId,id,data) { + return request.post(`server/${merId}/refund/status/${id}`,data, { login: true }); +} +/** + * 退款单确认收货 + * @returns {*} + */ +export function refundOrderReceive(merId,id) { + return request.post(`server/${merId}/refund/confirm/${id}`,{}, { login: true }); +} +/** + * 退款单详情 + */ +export function getRefundOrderDetail(merId, orderId) { + return request.get(`server/${merId}/refund/detail/${orderId}`,{}, { login: true }); +} +/** + * 添加退款单备注信息 + */ +export function setRefundMark(merId, orderId, data) { + return request.post(`server/${merId}/refund/mark/${orderId}`,data, { login: true }); +} +/** + * 去核销 + * @param object data +*/ +export function orderCancellation(merId,id){ + return request.post(`admin/${merId}/verify/${id}`); +} +/** + * 手动退款 -- 订单详情 + */ +export function getRefundOrderApi(merId, orderId) { + return request.get(`server/${merId}/refund/check/${orderId}`,{}, { login: true }); +} +/** + * 手动退款 -- 确认退款 + */ +export function confirmRefundApi(merId, data) { + return request.post(`server/${merId}/refund/create`,data, { login: true }); +} +/** + * 手动退款 -- 计算退款金额 + */ +export function computeRefundPrice(merId,data) { + return request.post(`server/${merId}/refund/compute`,data, { login: true }); +} +/** + * 扫码上传 -- 上传图片 + */ +export function scanUpload(field,token,data) { + return request.post(`scan_upload/image/${field}/${token}`,data, { login: true }); +} \ No newline at end of file diff --git a/api/api.js b/api/api.js new file mode 100644 index 0000000..9207bb4 --- /dev/null +++ b/api/api.js @@ -0,0 +1,340 @@ + +import request from "@/utils/request.js"; +/** + * 公共接口 ,优惠券接口 , 行业此讯 , 手机号码注册 + * +*/ +/** + * 获取主页数据 无需授权 + * +*/ +export function getIndexData() +{ + return request.get("common/home",{},{ noAuth : true}); +} +/** + * 获取app版本 + */ +export function getAppVersion() { + return request.get('appVersion',{},{noAuth:true}); +} +/** + * 获取登录授权login + * +*/ +export function getLogo() +{ + return request.get('wechat/get_logo', {}, { noAuth : true}); +} +/** + * 保存form_id + * @param string formId + */ +export function setFormId(formId) { + return request.post("wechat/set_form_id", { formId: formId}); +} +/** + * 领取优惠卷 + * @param int couponId + * +*/ +export function setCouponReceive(couponId){ + return request.post('coupon/receive/'+couponId); +} +/** + * 商铺优惠券列表 + * @param object data +*/ +export function getShopCoupons(id){ + return request.get('coupon/store/'+id,{},{ noAuth: true}) +} +/** + * 商品优惠券列表 + * @param object data +*/ +export function getCoupons(data){ + return request.get('coupon/product',data,{ noAuth: true}) +} +/** + * 我的优惠券 + * @param int types 0全部 1未使用 2已使用 +*/ +export function getUserCoupons(data){ + return request.get('coupon/list',data) +} +/** + * 文章分类列表 + * +*/ +export function getArticleCategoryList(){ + return request.get('article/category/lst',{},{noAuth:true}) +} +/** + * 文章列表 + * @param int cid + * +*/ +export function getArticleList(cid,data){ + return request.get('article/lst/' + cid, data,{noAuth:true}) +} +/** + * 文章 热门列表 + * +*/ +export function getArticleHotList(){ + return request.get('article/hot/list',{},{noAuth:true}); +} +/** + * 文章 轮播列表 + * +*/ +export function getArticleBannerList(){ + return request.get('article/banner/list',{},{noAuth:true}) +} +/** + * 文章详情 + * @param int id + * +*/ +export function getArticleDetails(id){ + return request.get('article/detail/'+id,{},{noAuth:true}); +} +/** + * 手机号+验证码登录接口 + * @param object data +*/ +export function loginMobile(data){ + return request.post('login/mobile',data,{noAuth:true}) +} +/** + * 获取短信KEY + * @param object phone +*/ +export function verifyCode(){ + return request.get('verify_code', {},{noAuth:true}) +} +/** + * 验证码发送 + * @param object phone +*/ +export function registerVerify(phone, reset, key, code){ + return request.post('register/verify', { phone: phone, type: reset === undefined ? 'reset' : reset, key: key, code: code },{noAuth:true}) +} +/** + * 手机号注册 + * @param object data + * +*/ +export function phoneRegister(data){ + return request.post('register',data,{noAuth:true}); +} +/** + * 手机号修改密码 + * @param object data + * +*/ +export function phoneRegisterReset(data){ + return request.post('register/reset',data,{noAuth:true}) +} +/** + * 手机号+密码登录 + * @param object data + * +*/ +export function phoneLogin(data){ + return request.post('login',data,{noAuth:true}) +} +/* h5切换公众号登陆 */ +export function switchH5Login(data) { + return request.post("user/switch", data); +} +/** 绑定手机号 */ +export function bindingPhone(data){ + return request.post('user/binding',data); +} +/** 修改手机号 */ +export function modifyPhone(data){ + return request.post('user/change/phone',data); +} +/** 修改密码 */ +export function modifyPassword(data){ + return request.post('user/change/password',data); +} +/** 退出登錄 */ +export function logout(){ + return request.get('logout'); +} +/** 获取订阅消息id */ +export function getTemlIds(){ + return request.get('wechat/teml_ids', {}, { noAuth:true}); +} +/** 首页拼团数据 */ +export function pink(){ + return request.get('pink', {}, { noAuth:true}); +} +/** 获取城市信息 */ +export function getCity() { + return request.get('system/city/lst', { }, { noAuth: true }); +} +export function getCityV2(pid) { + return request.get('v2/system/city/lst/'+pid, {}, {noAuth: true}); +} +export function getCityList(address){ + return request.get('v2/system/city', {address}, {noAuth: true}); +} +/** 获取小程序直播列表 */ +export function getLiveList(page,limit) { + return request.get('wechat/live', { page, limit}, { noAuth: true }); +} +/* APP登录 */ +export function wechatAppAuth(data) { + return request.post("auth/app", data, { noAuth: true }); +} +/* APPLE登录 */ +export function appleAppAuth(data) { + return request.post("auth/apple", data, { noAuth: true }); +} +/* 小程序获取手机号解密 */ +export function appletsDecrypt(data) { + return request.post("user/mp/binding", data); +} +/** + * 获取首页DIY; + */ +export function getDiy(data) { + return request.get('diy',data,{ noAuth: true }); +} +/** + * 获取首页微页面; + */ +export function getPageDiy(data) { + return request.get(`micro`, data, { + noAuth: true + }); +} +/** + * 滑块信息 + * @param {Object} data + */ +export function getAjcaptcha(data) { + return request.get("ajcaptcha", data, { + noAuth: true + }); +} +/** + * 滑块验证 + * @param {Object} data + */ +export function ajcaptchaCheck(data) { + return request.post("ajcheck", data, { + noAuth: true + }); +} +/** + * 滑块信息 + * @param {Object} data + */ +export function getOpenAdv() { + return request.get("open_screen", {}, { + noAuth: true + }); +} +/** + * diy-秒杀 + * @param {Object} data + */ +export function getSeckillData(data) { + return request.get("diy/seckill", data, { + noAuth: true + }); +} +/** + * diy-预售 + * @param {Object} data + */ +export function getPresellData(data) { + return request.get("diy/presell", data, { + noAuth: true + }); +} +/** + * diy-助力 + * @param {Object} data + */ +export function getAssistData(data) { + return request.get("diy/assist",data, { + noAuth: true + }); +} +/** + * diy-拼团 + * @param {Object} data + */ +export function getCombinationData(data) { + return request.get("diy/group", data, { + noAuth: true + }); +} +/** + * diy-商品列表 + * @param {Object} data + */ +export function getProductData(data) { + return request.get("diy/spu", data, { + noAuth: true + }); +} +/** + * diy-社区列表 + * @param {Object} data + */ +export function graphicLstData(data) { + return request.get("diy/community",data, { + noAuth: true + }); +} +/** + * diy-商户列表 + * @param {Object} data + */ +export function storeList(data) { + return request.get("diy/store",data, { + noAuth: true + }); +} +/** + * diy-优惠券列表 + * @param {Object} data + */ +export function getCouponData(data) { + return request.get("diy/coupon", data, { + noAuth: true + }); +} +/** + * diy-小程序直播 + * @param {Object} data + */ +export function getLiveData(data) { + return request.get("diy/broadcast", data, { + noAuth: true + }); +} +/** + * diy-热卖排行 + * @param {Object} data + */ +export function hotRankingList(data) { + return request.get("diy/hot_top", data, { + noAuth: true + }); +} +/** + * diy-首页二级分类 + * @param {Object} data + */ +export function getCateData(data) { + return request.get("diy/category", data, { + noAuth: true + }); +} \ No newline at end of file diff --git a/api/community.js b/api/community.js new file mode 100644 index 0000000..e23586a --- /dev/null +++ b/api/community.js @@ -0,0 +1,130 @@ + +import request from "@/utils/request.js"; + +/** 获取话题分类*/ +export function getTopicList() { + return request.get('community/category/lst', {}, { + noAuth: true + }); +} +/**已购商品列表*/ +export function boughtLstApi(data) { + return request.get('community/pay_product/lst', data); +} +/** 收藏图文列表*/ +export function collectLstApi(data) { + return request.get('community/rela_product/lst', data); +} +/** 浏览图文列表*/ +export function browseLstApi(data) { + return request.get('community/hist_product/lst', data); +} +/** 发布图文*/ +export function createPlantApi(data) { + return request.post('community/create', data); +} +/*图文编辑*/ +export function updatePlantApi(id, data) { + return request.post(`community/update/${id}`, data); +} +/*删除图文*/ +export function deletePlantApi(id) { + return request.post(`community/delete/${id}`); +} +/** 图文详情*/ +export function plantDetailApi(id) { + return request.get(`community/show/${id}`, {}, { + noAuth: true + }); +} +/** 订单关联图文商品*/ +export function orderAssociatePlantApi(orderId) { + return request.get(`community/order/${orderId}`, {}, { + noAuth: true + }); +} +/**评论列表*/ +export function replyLstApi(id, data) { + return request.get(`community/${id}/reply`, data, { + noAuth: true + }); +} +/**发布评论*/ +export function replyCreateApi(id, data) { + return request.post(`community/reply/create/${id}`, data); +} +/**点赞评论*/ +export function starCommentApi(id, data) { + return request.post(`community/reply/start/${id}`, data); +} +/**关注用户*/ +export function followAuthorApi(id, data) { + return request.post(`community/fans/${id}`, data); +} +/**全部图文列表*/ +export function graphicLstApi(data) { + return request.get(`community/lst`, data, { + noAuth: true + }); +} +/**视频列表*/ +export function videoList(data) { + return request.get(`community/video_lst`, data, { + noAuth: true + }); +} +/**自己的视频列表*/ +export function myVideoList(id,data) { + return request.get(`community/user/community_video/${id}`, data, { + noAuth: true + }); +} +/**文章点赞*/ +export function graphicStartApi(id, status) { + return request.post(`community/start/${id}`, status); +} +/**用户详情*/ +export function userInfoApi(id) { + return request.get(`community/user/info/${id}`); +} +/**关注人的文章列表*/ +export function focusArticleLst(data) { + return request.get(`community/focuslst`, data, { + noAuth: true + }); +} +/**用户的文章列表*/ +export function userArticleLst(id, data) { + return request.get(`community/user/community/${id}`, data); +} +/**赞过的图文*/ +export function starArticleLst(data) { + return request.get(`community/start/lst`, data); +} +/**我的关注*/ +export function myFocusLst(data) { + return request.get(`community/focus/lst`, data); +} +/**我的粉丝*/ +export function myFansLst(data) { + return request.get(`community/fans/lst`, data); +} +/**热门搜索*/ +export function hotSearchLst() { + return request.get(`common/commuunity/hot_keyword`,{}, { + noAuth: true + }); +} +/**热门搜索*/ +export function graphicProApi(id) { + return request.get(`product/spu/get/${id}`, {}, { + noAuth: true + }); +} +/*视频分享二维码*/ + +export function getVideoCode(id, data) { + return request.get(`community/qrcode/${id}`, data, { + noAuth: true + }); +} \ No newline at end of file diff --git a/api/order.js b/api/order.js new file mode 100644 index 0000000..456d6ec --- /dev/null +++ b/api/order.js @@ -0,0 +1,335 @@ + +import request from "@/utils/request.js"; + +/** + * 获取购物车列表 + * @param numType boolean true 购物车数量,false=购物车产品数量 + */ +export function getCartCounts() { + return request.get("user/cart/count"); +} +/** + * 获取购物车列表 + * + */ +export function getCartList() { + return request.get("user/cart/lst"); +} + +/** + * 修改购物车数量 + * @param int cartId 购物车id + * @param int number 修改数量 + */ +export function changeCartNum(cartId, data) { + return request.post("user/cart/change/"+cartId,data); +} +/** + * 清除购物车 + * @param object ids +*/ +export function cartDel(data){ + return request.post('user/cart/delete', data); +} +/** + * 购物车商品属性 + * @param object ids +*/ +export function cartProductAttr(id){ + return request.get(`store/product/get_attr_value/${id}`); +} +/** + * 订单列表 + * @param object data +*/ +export function getOrderList(data){ + return request.get('order/list',data); +} + +/** + * 订单产品信息 + * @param string unique +*/ +export function orderProduct(orderId){ + return request.get('reply/product/'+orderId); +} + +/** + * 订单评价 + * @param object data + * +*/ +export function orderComment(id,data){ + return request.post('reply/'+id,data); +} + +/** + * 订单支付 + * @param object data +*/ +export function orderPay(id,data){ + return request.post('order/pay/'+id,data); +} + +/** + * 积分商品订单支付 + * @param object data +*/ +export function integralOrderPay(id,data){ + return request.post('order/points/pay/'+id,data); +} +/** + * 订单统计数据 +*/ +export function orderData(){ + return request.get('order/number') +} + +/** + * 订单取消 + * @param string id + * +*/ +// export function orderCancel(id){ +// return request.post('order/cancel',{id:id}); +// } + +/** + * 未支付订单取消 + * @param string id + * +*/ +export function unOrderCancel(id){ + return request.post('order/cancel/'+id); +} + +/** + * 删除已完成订单 + * @param string uni + * +*/ +export function orderDel(id){ + return request.post('order/del/'+id); +} + +/** + * 订单详情 + * @param string uni +*/ +export function getOrderDetail(uni){ + return request.get('order/detail/'+uni); +} + +/** + * 订单详情 + * @param string uni +*/ +export function groupOrderDetail(uni){ + return request.get('order/group_order_detail/'+uni); +} + +// 支付状态订单 +export function getPayOrder(uni){ + return request.get('order/status/'+uni); +} + +/** + * 再次下单 + * @param string uni + * +*/ +export function orderAgain(data){ + return request.post('user/cart/again',data); +} + +/** + * 订单收货 + * @param string uni + * +*/ +export function orderTake(uni){ + return request.post('order/take/'+uni); +} + +/** + * 订单查询物流信息 + * @returns {*} + */ +export function express(id) { + return request.post("order/express/" + id); +} +/** + * 退款单查询物流信息 + * @returns {*} + */ +export function refundOrderExpress(merId,id) { + return request.get(`server/${merId}/refund/express/${id}`); +} +/** + * 获取退款理由 + * +*/ +export function ordeRefundReason(){ + return request.get('order/refund/reason'); +} + +/** + * 订单退款审核 + * @param object data +*/ +export function orderRefundVerify(data){ + return request.post('order/refund/verify',data); +} + +/** + * 订单确认获取订单详细信息 + * @param string cartId +*/ +export function orderConfirm(data){ + return request.post('order/check', data); +} +/** + * 订单确认获取订单详细信息 + * @param string cartId +*/ +export function getOrderConfirm(data){ + return request.post('v2/order/check', data); +} +/** + * 获取当前金额能使用的优惠卷 + * @param string price + * +*/ +export function getCouponsOrderPrice(price, data){ + return request.get('coupons/order/' + price, data) +} + + + +/** + * 计算订单金额 + * @param key + * @param data + * @returns {*} + */ +export function postOrderComputed(key, data) { + return request.post("/order/computed/" + key, data); +} + +// 生成订单 +export function orderCreate(data) { + return request.post("order/create",data,{ noAuth : true }); +} +// 新的生成订单 +export function createOrder(data) { + return request.post("v2/order/create",data,{ noAuth : true }); +} +// 未支付订单 +export function groupOrderList(data) { + return request.get("order/group_order_list",data,{ noAuth : true }); +} + +// 批量退款列表 +export function refundBatch(id) { + return request.get("refund/batch_product/"+id,{ noAuth : true }); +} + +// 退款商品 +export function refundProduct(id,data) { + return request.get("refund/product/"+id,data,{ noAuth : true }); +} + +// 申请退款 +export function refundApply(id,data) { + return request.post("refund/apply/"+id,data,{ noAuth : true }); +} + +// 退款理由 +export function refundMessage() { + return request.get("common/refund_message",{ noAuth : true }); +} + +// 退款列表 +export function refundList(data) { + return request.get("refund/list",data,{ noAuth : true }); +} + +// 退款详情 +export function refundDetail(id) { + return request.get("refund/detail/"+id,{ noAuth : true }); +} + +// 物流列表 +export function expressList() { + return request.get("common/express"); +} + +// 退回商品提交 +export function refundBackGoods(id,data) { + return request.post("refund/back_goods/"+id,data,{ noAuth : true }); +} + +// 退款记录删除 +export function refundDel(id) { + return request.post("refund/del/"+id,{ noAuth : true }); +} + +// 退款记录删除 +export function refundExpress(id) { + return request.get("refund/express/"+id,{ noAuth : true }); +} + +// 核销二维码 +export function verifyCode(id) { + return request.get("order/verify_code/"+id); +} +/** + * 预售尾款支付 + * @param object data +*/ +export function presellOrderPay(id,data){ + return request.post('presell/pay/'+id,data); +} + +/** + * 发票订单 + * @param object data +*/ +export function receiptOrder(data){ + return request.get('user/receipt/order',data); +} +/** + * 发票订单 + * @param object data +*/ +export function getReceiptOrder(id){ + return request.get('user/receipt/order/'+id); +} +/** + * 发票订单 + * @param object data +*/ +export function getCallBackUrlApi(key){ + return request.get('common/pay_key/'+key, {},{ noAuth : true}); +} +/** + * 发票订单 + * @param object data +*/ +export function develiveryDetail(id){ + return request.get(`order/delivery/${id}`); +} +/** + * 订单申请开票 + * @param object data +*/ +export function applyInvoiceApi(id, data){ + return request.post(`order/receipt/${id}`, data); +} +/** + * 退款单取消申请 + * @param object data +*/ +export function refundCancelApi(id){ + return request.post(`refund/cancel/${id}`); +} \ No newline at end of file diff --git a/api/points_mall.js b/api/points_mall.js new file mode 100644 index 0000000..6de26fc --- /dev/null +++ b/api/points_mall.js @@ -0,0 +1,70 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +import request from "@/utils/request.js"; +/** + * 积分商城--banner和金刚区 + */ +export function getIntegralHome() { + return request.get("points/home",{},{noAuth: true}); +} +/** + * 积分商城--积分兑换区间 + */ +export function getIntegralScope() { + return request.get("points/scope",{},{noAuth: true}); +} +/** + * 积分商城--商品列表 + */ +export function getIntegralGoodsList(data) { + return request.get("points/lst",data,{noAuth: true}); +} +/** + * 积分商城--商品列表 + */ +export function getIntegralProductDetail(id) { + return request.get(`points/detail/${id}`,{},{noAuth: true}); +} +/** + * 积分商城--生成订单 + */ +export function integralOrderConfirm(data) { + return request.post(`order/v3/check`,data,{noAuth: true}); +} +/** + * 积分商城--下单 + */ +export function integralOrderCreate(data) { + return request.post(`order/v3/create`,data,{noAuth: true}); +} +/** + * 积分商城--订单列表 + */ +export function integralOrderList(data) { + return request.get(`points/order/lst`,data,{noAuth: true}); +} +/** + * 积分商城--订单详情 + */ +export function integralOrderDetail(id) { + return request.get(`points/order/detail/${id}`,{},{noAuth: true}); +} +/** + * 积分商城--订单详情 + */ +export function integralOrderTake(id) { + return request.post(`points/order/take/${id}`,{},{noAuth: true}); +} +/** + * 积分商城--删除 + */ +export function integralOrderDelete(id) { + return request.post(`points/order/deleate/${id}`,{},{noAuth: true}); +} \ No newline at end of file diff --git a/api/product.js b/api/product.js new file mode 100644 index 0000000..f2befa8 --- /dev/null +++ b/api/product.js @@ -0,0 +1,206 @@ + +import request from "@/utils/request.js"; + +/** + * 商品列表 + */ +export function productLstApi(merId, data) { + return request.get(`server/${merId}/product/lst`, data, { login: true }); +} + +/** + * 商品列表 -- 删除 + */ +export function productDeleteApi(merId, id) { + return request.post(`server/${merId}/product/delete/${id}`, {}, { login: true }); +} +/** + * 商品列表 -- 上下架 + */ +export function productOffApi(merId, id, data) { + return request.post(`server/${merId}/product/status/${id}`, data, { login: true }); +} + +/* + 售罄商品 -- 列表头部 +*/ + +export function productTitle(merId, data) { + return request.get(`server/${merId}/product/title`, data, { login: true }); +} + +/* + 回收站商品,彻底删除 +*/ + +export function productDestory(merId, id, data) { + return request.post(`server/${merId}/product/destory/${id}`, data, { login: true }); +} + +/* + 还原 +*/ + +export function productRestore(merId, id) { + return request.post(`server/${merId}/product/restore/${id}`, {}, { login: true }); +} + +/* + 添加或修改商品, 获取商品品牌 +*/ + +export function categoryBrandlist(merId) { + return request.get(`server/${merId}/category/brandlist`, {}, { login: true }); +} + +/* + 添加修改商品, 获取商户分类 +*/ + +export function categorySelect(merId) { + return request.get(`server/${merId}/category/select`, {}, { login: true }) +} + +/* + 添加修改商品, 获取平台分类 +*/ + +export function categoryList(merId) { + return request.get(`server/${merId}/category/list`, {}, { login: true }) +} + +/* + 商品管理, 添加商品 +*/ + +export function productCreate(merId, data) { + return request.post(`server/${merId}/product/create`, data, { login: true }) +} +/** + * 商品列表 -- 设置推荐 + */ +export function productRecommendApi(merId, id, data) { + return request.post(`server/${merId}/product/good/${id}`, data, { login: true }); +} + +/* + 获取规格列表 +*/ + +export function attrList(merId, data) { + return request.get(`server/${merId}/attr/lst`, data, { login: true }) +} +/* + 请求运费模板 +*/ +export function templateList(merId, data) { + return request.get(`server/${merId}/template/lst`, data, { login: true }) +} +/* + 运费模板 -- 删除 +*/ +export function templateDelete(merId, data) { + return request.post(`server/${merId}/template/delete`, data, { login: true }) +} +/** + * 运费模板 -- 详情 + */ +export function templateDetail(merId, id) { + return request.get(`server/${merId}/template/detail/${id}`, {}, { login: true }); +} +/* + 运费模板 -- 添加 +*/ +export function templateCreate(merId, data) { + return request.post(`server/${merId}/template/create`, data, { login: true }); +} +/* + 运费模板 -- 编辑 +*/ +export function templateUpdate(merId, id, data) { + return request.post(`server/${merId}/template/update/${id}`, data, { login: true }); +} +/** + * 店铺分类 -- 列表 + */ +export function storeClassifyLst(merId) { + return request.get(`server/${merId}/category/lst`, {}, { login: true }); +} +/** + * 店铺分类 -- 列表(删除) + */ +export function storeClassifyDel(merId, id) { + return request.post(`server/${merId}/category/delete/${id}`, {}, { login: true }); +} +/** + * 上级分类 -- 商户列表 + */ +export function merClassifyLst(merId) { + return request.get(`server/${merId}/category/select`, {}, { login: true }); +} +/** + * 店铺分类 -- 添加 + */ +export function merClassifyAdd(merId, data) { + return request.post(`server/${merId}/category/create`, data, { login: true }); +} +/** + * 店铺分类 -- 详情 + */ +export function merClassifyDetail(merId, id) { + return request.get(`server/${merId}/category/detail/${id}`, {}, { login: true }); +} +/** + * 店铺分类 -- 编辑 + */ +export function merClassifyUpdate(merId, id, data) { + return request.post(`server/${merId}/category/update/${id}`, data, { login: true }); +} +/** + * 商品规格项目 -- 列表 + */ +export function specificationLst(merId, data) { + return request.get(`server/${merId}/attr/lst`, data, { login: true }); +} +/** + * 商品规格项目 -- 删除 + */ +export function specificationDel(merId, data) { + return request.post(`server/${merId}/attr/delete`, data, { login: true }); +} +/** + * 商品规格项目 -- 添加 + */ +export function specificationAdd(merId, data) { + return request.post(`server/${merId}/attr/create`, data, { login: true }); +} +/** + * 商品规格项目 -- 编辑 + */ +export function specificationUpdate(merId, id, data) { + return request.post(`server/${merId}/attr/update/${id}`, data, { login: true }); +} +/** + * 商品规格项目 -- 详情 + */ +export function specificationDetail(merId, id) { + return request.get(`server/${merId}/attr/detail/${id}`, {}, { login: true }); +} +/* + 请求商品详情 +*/ +export function productDetail(merId, id) { + return request.get(`server/${merId}/product/detail/${id}`, {}, {login: true}); +} +/* + 编辑商品 +*/ +export function productUpdate(merId, id, data) { + return request.post(`server/${merId}/product/update/${id}`, data, { login: true }); +} +/* + 添加商品 -- 获取送货方式信息 +*/ +export function getDeliveryType(merId) { + return request.get(`server/${merId}/product/config`, {}, { login: true }); +} diff --git a/api/public.js b/api/public.js new file mode 100644 index 0000000..9b3ca84 --- /dev/null +++ b/api/public.js @@ -0,0 +1,116 @@ + +import request from "@/utils/request.js"; +import wechat from "@/libs/wechat.js"; + +/** + * 获取微信sdk配置 + * @returns {*} + */ +export function getWechatConfig() { + return request.get( + "wechat/config", { + url: wechat.signLink() + }, { + noAuth: true + } + ); +} + +/** + * 获取微信sdk配置 + * @returns {*} + */ +export function wechatAuth(code, spread, login_type) { + return request.get( + "auth/wechat", { + code, + spread, + login_type + }, { + noAuth: true + } + ); +} + +export function commonAuth(data) { + return request.post( + "auth", data, { + noAuth: true + } + ); +} +/** + * 获取登录授权login + * + */ +export function getLogo() { + return request.get('wechat/get_logo', {}, { + noAuth: true + }); +} +/** + * 小程序用户登录 + * @param data object 小程序用户登陆信息 + */ +export function login(data) { + return request.post("auth/mp", data, { + noAuth: true + }); +} +/** + * 分享 + * @returns {*} + */ +export function getShare() { + return request.get("share", {}, { + noAuth: true + }); +} +/** + * 获取关注海报 + * @returns {*} + */ +export function follow() { + return request.get("wechat/follow", {}, { + noAuth: true + }); +} +/** + * 获取图片base64 + * @retins {*} + * */ +export function imageBase64(image, code) { + return request.post( + "common/base64", { + image: image, + code: code + }, { + noAuth: true + } + ); +} +// 配置 +export function getconfig(data) { + return request.get("config",data,{noAuth: true}); +} +// 浏览记录 +export function history(data) { + return request.post("common/visit",data); +} +export function getSubscribe(){ + return request.get("subscribe", {}, { + noAuth: true + }); +} +export function getVersion() { + return request.get("version",{},{noAuth: true}); +} +/** + * 获取组件底部菜单 + * @param data object 获取组件底部菜单 + */ +export function getNavigation(data) { + return request.get("navigation", data, { + noAuth: true + }); +} \ No newline at end of file diff --git a/api/store.js b/api/store.js new file mode 100644 index 0000000..ede35ab --- /dev/null +++ b/api/store.js @@ -0,0 +1,579 @@ + +import request from "@/utils/request.js"; +/** + * 获取产品详情 + * @param int id + * + */ +export function getProductDetail(id) { + return request.get('store/product/detail/' + id, {}, { + noAuth: true + }); +} +/** + * 获取产品详情参数 + * @param int id + * + */ +export function getProductParmas(id) { + return request.get('store/product/show/' + id, {}, { + noAuth: true + }); +} +/** + * 获取店铺推荐商品 + * @param int id + * + */ +export function getStoreRecommend(id) { + return request.get('store/product/good_list/' + id, {}, { + noAuth: true + }); +} +/** + * 获取预览商品详情 + * @param int id + * + */ +export function getPreviewProDetail(data) { + return request.get('store/product/preview', data, { + noAuth: true + }); +} +/** + * 产品分享二维码 推广员 + * @param int id + */ +export function getProductCode(id, data) { + return request.get('store/product/qrcode/' + id, data); +} +/** + * 添加收藏 + * @param int id + * @param string category product=普通产品,product_seckill=秒杀产品 + */ +export function collectAdd(data) { + return request.post('user/relation/create', data); +} +/** + * 删除收藏产品 + * @param int id + * @param string category product=普通产品,product_seckill=秒杀产品 + */ +export function collectDel(data) { + return request.post('user/relation/delete', data); +} +/** + * 购车添加 + * + */ +export function postCartAdd(data) { + return request.post('user/cart/create', data); +} +/** + * 获取分类列表 + * + */ +export function getCategoryList() { + return request.get('store/product/category/lst', {}, { + noAuth: true + }); +} +/** + * 获取产品列表 + * @param object data + */ +export function getProductslist(data) { + if (data.brand_id && Array.isArray(data.brand_id)) { + data = { + ...data + } + data.brand_id = data.brand_id.toString() + } + return request.get('product/spu/lst', data, { + noAuth: true + }); +} +/** + * 获取优惠券商品列表 + * @param object data + */ +export function getCouponProductlist(data) { + if (data.brand_id && Array.isArray(data.brand_id)) { + data = { + ...data + } + data.brand_id = data.brand_id.toString() + } + return request.get('product/spu/coupon_product', data, { + noAuth: true + }); +} +/** + * 获取品牌列表 + * @param object data + */ +export function getBrandlist(data) { + return request.get('store/product/brand/lst', data, { + noAuth: true + }); +} +/** + * 获取推荐产品 + * + */ +export function getProductHot(page, limit) { + return request.get("product/spu/recommend", { + page: page === undefined ? 1 : page, + limit: limit === undefined ? 10 : limit + }, { + noAuth: true + }); +} +/** + * 获取商户推荐产品 + * + */ +export function getMerProductHot(id,data) { + return request.get(`product/spu/recommend`, { + page: data.page === undefined ? 1 : data.page, + limit: data.limit === undefined ? 10 : data.limit, + mer_id: id || '' + }, { + noAuth: true + }); +} +/** + * 批量收藏 + * + * @param object id + * @param string category + */ +export function collectAll(data) { + return request.post('user/relation/batch/create', data); +} +/** + * 首页产品的轮播图和产品信息 + * @param int type + * + */ +export function getGroomList(type, data) { + return request.get('product/spu/hot/' + type, data, { + noAuth: true + }); +} +/** + * 获取商品收藏列表 + * @param object data + */ +export function getCollectUserList(data) { + return request.get('user/relation/product/lst', data) +} +/** + * 获取商品收藏列表 -- 删除 + * @param object data + */ +export function userCollectDel(data) { + return request.post('user/relation/batch/delete', data) +} +/** + * 获取产品评论 + * @param int id + * @param object data + * + */ +export function getReplyList(id, data) { + return request.get('store/product/reply/lst/' + id, data, { + noAuth: true + }) +} +/** + * 产品评价数量和好评度 + * @param int id + */ +export function getReplyConfig(id) { + return request.get('reply/config/' + id); +} +/** + * 获取搜索关键字获取 + * + */ +export function getSearchKeyword() { + return request.get('common/hot_keyword', {}, { + noAuth: true + }); +} +/** + * 今日热搜列表 + * + */ +export function getTodayHotSearch() { + return request.get('product/spu/hot_lst', {}, { + noAuth: true + }); +} +/** + * 热销排行分类 + * + */ +export function getHotRanking() { + return request.get('product/spu/hot_top', {}, { + noAuth: true + }); +} +/** + * 商户列表 + * @returns {*} + */ +export function storeMerchantList(data) { + return request.get("store/merchant/lst", data, { + noAuth: true + }); +} +/** + * 获取商铺详情 + * @param {Object} id 商铺id + * @param {Object} data 商铺数据 + */ +export function getStoreDetail(id, data) { + return request.get("store/merchant/detail/" + id, data, { + noAuth: true + }); +} +/** + * 获取商铺商品列表 + * @param {Object} id 商铺 id + * @param {Object} data 商铺商品列表数据 + */ +export function getStoreGoods(id, data) { + return request.get("product/spu/merchant/" + id, data, { + noAuth: true + }); +} +/** + * 获取商铺分类列表 + * @param {Object} id 商铺 id + * @param {Object} data + */ +export function getStoreCategory(id, data) { + return request.get("store/merchant/category/lst/" + id, data, { + noAuth: true + }); +} +/** + * 关注商铺 + * @param {Object} type_id 商铺 id + */ +export function followStore(type_id) { + return request.post("user/relation/create", { + type: 10, + type_id: type_id + }); +} +/** + * 取消商铺关注 + * @param {Object} type_id 商铺 id + */ +export function unfollowStore(type_id) { + return request.post("user/relation/delete", { + type: 10, + type_id: type_id + }); +} +/** + * 获取商铺优惠券 + * @param {Object} id + */ +export function getStoreCoupon(id) { + return request.get("coupon/store/" + id, { + noAuth: true + }); +} +/** + * 获取商铺优惠券 + */ +export function getMerchantLst(data) { + return request.get("user/relation/merchant/lst", data, { + noAuth: true + }); +} +/** + * 物流信息 + */ +export function express(id) { + return request.post("ordero/express/" + id, { + noAuth: true + }); +} +/** + * 子集分类 + * @returns {*} + */ +export function storeCategory(pid) { + return request.get("store/product/category", pid, { + noAuth: true + }); +} +/** + * 分销说明 + * @returns {*} + */ +export function bagExplain() { + return request.get("store/product/bag/explain"); +} +/** + * 分销礼包推荐列表 + * @returns {*} + */ +export function bagRecommend() { + return request.get("product/spu/bag/recommend"); +} +/** + * 分销礼包列表 + * @returns {*} + */ +export function productBag(data) { + + return request.get("product/spu/bag", data, { + noAuth: true + }); +} +/** + * 商铺二维码 + * @returns {*} + */ +export function merchantQrcode(id, data) { + return request.get("store/merchant/qrcode/" + id, data, { + noAuth: true + }); +} +/** + * 推荐商品 + * @returns {*} + */ +export function merchantProduct(id, data) { + if (data.brand_id && Array.isArray(data.brand_id)) { + data = { + ...data + } + data.brand_id = data.brand_id.toString() + } + return request.get("product/spu/merchant/" + id, data, { + noAuth: true + }); +} +/** + * 推荐商品banner + * @returns {*} + */ +export function getHotBanner(type) { + return request.get("common/hot_banner/" + type, {}, { + noAuth: true + }); +} +/** + * 商户入驻表单 + * @returns {*} + */ +export function create(data) { + return request.post("intention/create", data); +} +/** + * 商户入驻短信验证码 + * @returns {*} + */ +export function verify(data) { + return request.post("auth/verify", data); +} +/** + * 获取秒杀商品详情 + * @param int id + * + */ +export function getSeckillProductDetail(id) { + return request.get('store/product/seckill/detail/' + id, {}, { + noAuth: true + }); +} +/** + * 获取秒杀商品详情参数 + * @param int id + * + */ +// export function getSeckillProductParmas(id) { +// return request.get('store/product/seckill/show/' + id, {}, { +// noAuth: true +// }); +// } +/** + * 直播推荐列表 + * @returns {*} + */ +export function getLiveList(data) { + return request.get(`broadcast/hot`, data, { + noAuth: true + }); +} +/** + * 直播列表 + * @returns {*} + */ +export function getBroadcastListApi(data) { + return request.get("broadcast/lst", data, { + noAuth: true + }); +} +/** + * 商户分类 + * @returns {*} + */ +export function merClassifly() { + return request.get("intention/cate", {}, { + noAuth: true + }); +} +/** + * 获取预售商品详情 + * @param int id + * + */ +export function getPresellProductDetail(id) { + return request.get('store/product/presell/detail/' + id, {}, { + noAuth: true + }); +} +/** + * 获取商户申请记录 + * @param int id + * + */ +export function getApplicationRecordList(data) { + return request.get('intention/lst', data); +} +/** + * 获取商户申请详情 + * @param int id + * + */ +export function getGoodsDetails(id) { + return request.get('intention/detail/' + id, {}); +} +/** + * 修改入驻信息 + * @param int id + * + */ +export function updateGoodsRecord(id, data) { + return request.post('intention/update/' + id, data); +} +/** + * 获取定位详细地址 + * @param int id + * + */ +export function getGeocoder(data) { + return request.get(`lbs/geocoder?location=${data.lat},${data.long}`, {}, { + noAuth: true + }); +} +/** + * 获取店铺类型 + * @param int id + * + */ +export function getStoreTypeApi(data) { + return request.get('intention/type', data, { + noAuth: true + }); +} +/** + * 获取参数列表 + * @param int id + * + */ +export function getParmasList(data) { + return request.get('product/spu/params', data, { + noAuth: true + }); +} +/** + * 获取参数值列表 + * @param int id + * + */ +export function getParmasValue(id) { + return request.get(`product/spu/params_value/${id}`, {}, { + noAuth: true + }); +} +/** + * 到货通知 + * + */ +export function arrivalNoticeApi(data) { + return request.post('store/product/increase_take',data); +} +/* + 获取图片验证码 +*/ +export function getCaptcha() { + return request.get('captcha'); +} +/* + 获取店铺资质 +*/ +export function storeCertificate(data) { + return request.post(`store/certificate/${data.merId}`, data) +} +/** + * 本地服务列表 + * @returns {*} + */ +export function storeServiceList(id, data) { + return request.get(`product/spu/local/${id}`, data, { + noAuth: true + }); +} +/** + * 复制口令 + * @returns {*} + */ +export function copyPasswordApi(data) { + return request.get(`product/spu/copy`, data, { + noAuth: true + }); +} +/** + * 口令搜索 + * @returns {*} + */ +export function copyPasswordSearch(data) { + return request.get(`command/copy`, data, { + noAuth: true + }); +} +/** + * 套餐列表 + * @returns {*} + */ +export function getDiscountsLst(data) { + return request.get(`discounts/lst`, data, { + noAuth: true + }); +} +/** + * 套餐--立即购买 + * @returns {*} + */ +export function discountsCartAdd(data) { + return request.post('user/cart/batchCreate', data); +} +/** + * 商品--价格说明 + * @returns {*} + */ +export function priceRuleApi(id) { + return request.get(`store/product/price_rule/${id}`, {}, { + noAuth: true + }); +} \ No newline at end of file diff --git a/api/user.js b/api/user.js new file mode 100644 index 0000000..64d347a --- /dev/null +++ b/api/user.js @@ -0,0 +1,763 @@ + +import request from "@/utils/request.js"; +import Cache from '@/utils/cache' +/** + * 获取用户信息 + * + */ +export function getUserInfo() { + return request.get('user'); +} +/** + * 头像 + * + */ +export function editAvatar(data) { + return request.post('user/change/info',data); +} + +// 修改昵称 +export function updateInfo(data) { + return request.post('user/change/avatar',data); +} +/** + * h5用户登录 + * @param data object 用户账号密码 + */ +export function loginH5(data) { + return request.post("auth/login", data, { + noAuth: true + }); +} +/** + * h5用户手机号登录 + * @param data object 用户手机号 也只能 + */ +export function loginMobile(data) { + return request.post("auth/smslogin", data, { + noAuth: true + }); +} +/** + * h5用户手机号登录 + * @param data object + */ +export function loginMpPhone(data) { + return request.post("auth/mp_phone", data, { + noAuth: true + }); +} +/** + * h5获取登录授权auth_token + * @param data object + */ +export function getAuthType(data) { + return request.post("auth/mp_login_type", data, { + noAuth: true + }); +} +/** + * 验证码key + */ +export function getCodeApi() { + return request.get("verify_code", {}, { + noAuth: true + }); +} + +/** + * h5用户发送验证码 + * @param data object 用户手机号 + */ +export function registerVerify(data) { + return request.post("auth/verify", data, { + noAuth: true + }); +} +/** + * h5用户手机号注册 + * @param data object 用户手机号 验证码 密码 + */ +export function register(data) { + return request.post("auth/register", data, { + noAuth: true + }); +} + +/** + * 用户手机号修改密码 + * @param data object 用户手机号 验证码 密码 + */ +export function registerReset(data) { + return request.post("/register/reset", data, { + noAuth: true + }); +} +/** + * 用户手机号忘记密码 + */ +export function registerForget(data) { + return request.post("user/change_pwd", data, { + noAuth: true + }); +} +/** + * 获取用户中心菜单 + * + */ +export function getMenuList() { + return request.get("common/menus",{},{noAuth: true}); +} +/* + * 签到用户信息 + * */ +export function getSignUser() { + return request.get("user/sign/info"); +} + +/** + * 获取签到配置 + * + */ +export function getSignConfig() { + return request.get('sign/config') +} +/** + * 获取签到列表 + * @param object data + */ +export function getSignList(data) { + return request.get('user/sign/lst', data); +} +/** + * 用户签到 + */ +export function setSignIntegral() { + return request.post('user/sign/create') +} + +/** + * 签到列表(年月) + * @param object data + * + */ +export function getSignMonthList(data) { + return request.get('user/sign/month', data) +} +/** + * 活动状态 + * + */ +export function userActivity() { + return request.get('user/activity'); +} +/* + * 资金明细(types|0=全部,1=消费,2=充值,3=返佣) + * */ +export function getCommissionInfo(q, types) { + return request.get("user/bill", q); +} +/* + * 提现列表 + * */ +export function extractLst(data) { + return request.get("user/extract/lst", data); +} +/* + * 积分记录 + * */ +export function getIntegralList(data) { + return request.get("user/integral/lst", data); +} + +/** + * 获取分销海报图片 + * + */ +export function spreadBanner() { + //#ifdef H5 + return request.get('user/spread_image', { + type: 'wechat' + }); + //#endif + //#ifdef MP + return request.get('user/spread_image', { + type: 'routine' + }); + //#endif +} +/** + * + * 获取推广用户一级和二级 + * @param object data + */ +export function spreadPeople(data) { + return request.get('user/spread_list', data); +} +/** + * + * 推广佣金/提现总和 + * @param int type + */ +export function spreadCount(type) { + return request.get('spread/count/' + type); +} +/* + * 推广数据 + * */ +export function getSpreadInfo() { + return request.get("/commission"); +} +/** + * + * 推广订单 + * @param object data + */ +export function spreadOrder(data) { + return request.get('user/spread_order', data); +} +/* + * 获取推广人排行 + * */ +export function getRankList(data) { + return request.get("user/spread_top", data); +} +/* + * 获取佣金排名 + * */ +export function getBrokerageRank(q) { + return request.get("user/brokerage_top", q); +} +/** + * 提现申请 + * @param object data + */ +export function extractCash(data) { + return request.post('user/extract/create', data) +} +/** + * 提现银行/提现最低金额 + * + */ +export function extractBank() { + return request.get('user/extract/banklst'); +} +/** + * 会员等级列表 + * + */ +export function userLevelGrade() { + return request.get('user/level/grade'); +} +/** + * 获取某个等级任务 + * @param int id 任务id + */ +export function userLevelTask(id) { + return request.get('user/level/task/' + id); +} +/** + * 检查用户是否可以成为会员 + * + */ +export function userLevelDetection() { + return request.get('user/level/detection'); +} +/** + * + * 地址列表 + * @param object data + */ +export function getAddressList(data) { + return request.get('user/address/lst', data); +} +/** + * 设置默认地址 + * @param int id + */ +export function setAddressDefault(id) { + return request.post('user/address/update/' + id) +} +/** + * 修改 添加地址 + * @param object data + */ +export function editAddress(data) { + return request.post('user/address/create', data); +} +/** + * 删除地址 + * @param int id + * + */ +export function delAddress(id) { + return request.post('user/address/delete/' + id) +} +/** + * 获取单个地址 + * @param int id + */ +export function getAddressDetail(id) { + return request.get('user/address/detail/' + id); +} +/** + * 修改用户信息 + * @param object + */ +export function userEdit(data) { + return request.post('user/edit', data); +} +/* + * 退出登录 + * */ +export function getLogout() { + return request.post("logout"); +} +/** + * 佣金转入 + * + */ +export function rechargeBrokerage(data) { + return request.post('user/recharge/brokerage', data) +} +/** + * 小程序充值 + * + */ +export function rechargeRoutine(data) { + return request.post('recharge/routine', data) +} +/* + * 公众号充值 + * */ +export function rechargeWechat(data) { + return request.post("user/recharge", data); +} +/** + * 获取默认地址 + * + */ +export function getAddressDefault() { + return request.get('address/default'); +} +/** + * 充值金额选择 + */ +export function getRechargeApi() { + return request.get("common/recharge_quota"); +} +/** + * 登陆记录 + */ +export function setVisit(data) { + return request.post('user/set_visit', { ...data + }, { + noAuth: true + }); +} +/** + * 客服列表 + */ +export function serviceList(data) { + return request.get("service/list", data); +} +/** + * 客服列表 + */ +export function serviceLogin(key, data) { + return request.post("service/scan_login/" + key, data); +} +/** + * 客服获取客户列表 + */ +export function serviceUserList(mer_id, data) { + return request.get("service/user_list/"+mer_id, data); +} +/** + * 用户获取聊天记录详情 + */ +export function getChatRecord(to_uid, data) { + return request.get("service/history/" + to_uid, data); +} +/** + * 客服获取聊天记录详情 + */ +export function getMerHistory(userid, mer_id, data) { + return request.get("service/mer_history/" + mer_id + '/' + userid, data); +} +/** + * 静默绑定推广人 + * @param {Object} puid + */ +export function spread(puid) { + Cache.set("spread", puid || 0); + return request.post("user/spread", { + spread_spid: puid + }); +} +/** + * 反馈类型 + */ +export function feedbackType() { + return request.get("common/feedback_type"); +} +/** + * 提交反馈 + */ +export function feedback(data) { + return request.post("user/feedback", { ...data + }); +} +/** + * 反馈列表 + */ +export function feedbackList(data) { + return request.get("user/feedback/list", data); +} +/** + * 反馈列表 + */ +export function feedbackDetail(id) { + return request.get("user/feedback/detail/" + id); +} +/** + * 浏览记录 + */ +export function historyList(data) { + return request.get("user/history", data); +} +/** + * 删除浏览记录 + */ +export function historyDelete(id) { + return request.post("user/history/delete/" + id); +} +/** + * 批量删除浏览记录 + */ +export function historyBatchDelete(data) { + return request.post("user/history/batch/delete", data); +} +/** + * 批量收藏浏览记录 + */ +export function historyBatchCollect(data) { + return request.post("user/relation/batch/create", data); +} +/** + * 佣金记录 + */ +export function brokerage_list(data) { + return request.get("user/brokerage_list", data); +} +/** + * 佣金数据 + */ +export function spreadInfo() { + return request.get("user/spread_info"); +} +// 图片验证码 +export function getCaptcha() { + return request.get('captcha', {}, { + noAuth: true + }); +} +// 用户账户列表 +export function userAcc() { + return request.get('user/account', {}, { + noAuth: true + }); +} +// 创建发票 +export function invoiceSave(data) { + return request.post('user/receipt/create', data); +} +// 编辑发票 +export function invoiceUpdate(id, data) { + return request.post('user/receipt/update/' + id, data); +} +// 获取默认发票 +export function invoiceDefault(id) { + return request.post('user/receipt/is_default/' + id); +} +// 发票抬头--列表 +export function invoice(data) { + return request.get('user/receipt/lst', data); +} +// 发票抬头--删除 +export function invoiceDelete(id) { + return request.post('user/receipt/delete/' + id); +} +// 发票--详情 +export function invoiceDetail(id) { + return request.get('user/receipt/detail/' + id); +} +/** + * 新版分享海报信息获取 + * + */ +export function spreadMsg(data) { + return request.get('user/v2/spread_image', data); +} +/** + * 图片链接转base64 + * + */ +export function imgToBase(data) { + return request.post('common/base64', data); +} +/** + * 获取协议 + * + */ +export function getAgreementApi(key) { + return request.get('agreement/'+key,{},{noAuth: true}); +} +/** + * 获取协议 + * + */ +export function getIntegralInfo() { + return request.get('user/integral/info'); +} +/** + * 获取店铺列表 + * + */ +export function getStoreList(data) { + return request.get('user/services', data); +} +/* + 获取佣金说明 +*/ +export function commissionDescription() { + return request.get('agreement/sys_extension_agree') +} +/* + 获取用户分销等级信息 +*/ +export function getBrokerageInfo() { + return request.get('user/brokerage/info') +} +/* + 获取用户分销等级表格数据 +*/ +export function getBrokerageGrade() { + return request.get('user/brokerage/all') +} +/* + 分销员升级提醒 +*/ +export function brokerageNotice(data) { + return request.get(`user/brokerage/notice`, data) +} +/* + 口令解析 +*/ +export function pwdResolution(data) { + return request.get(`command/copy?key=${data}`) +} +/* + 获取佣金说明 +*/ +export function getInstructions(key) { + return request.get(`agreement/${key}`) +} +/* + 会员信息 +*/ +export function memberInfo() { + return request.get('user/member/info') +} +/** + * 成长值记录 + * @param object data + * + */ +export function growthValueRecord(data) { + return request.get('user/member/log', data) +} +/** + * 协议规则列表 + * @param object data + * + */ +export function cacheLst() { + return request.get('agreement_lst',{}, {noAuth: true}) +} +/** + * 协议规则列表对应的数据 + * @param object data + * + */ +export function cacheInfo(key) { + return request.get(`agreement/${key}`,{}, {noAuth: true}) +} +/** + * 注销账户 + * @param object data + * + */ +export function userOut(data) { + return request.post(`user/cancel`, data) +} +/** + * 获取聊天用户信息 + * @param object data + * + */ +export function serviceUser(merId, uid) { + return request.get(`service/user/${merId}/${uid}`) +} +/** + * 保存聊天用户备注 + * @param object data + * + */ +export function serviceSaveMark(merId, uid, mark) { + return request.post(`service/mark/${merId}/${uid}`, {mark}) +} +/** + * 获取会员卡类型 + * @param object data + * + */ +export function memberCard() { + return request.get(`svip/pay_lst`) +} +/** + * 开通付费会员--支付 + * @param object data + * + */ +export function memberCardCreate(id, data) { + return request.post(`svip/pay/${id}`, data) +} +/** + * 付费会员权益 + * @param object data + * + */ +export function memberEquity() { + return request.get(`svip/user_info`, {}, {noAuth: true}) +} +/** + * 付费会员优惠券 + * @param object data + * + */ +export function memberCouponLst() { + return request.get(`svip/coupon_lst`, {}, {noAuth: true}) +} +/** + * 付费会员优惠券--领取 + * @param object data + * + */ +export function receiveMemberCoupon(id) { + return request.post(`svip/coupon_receive/${id}`) +} +/** + * 付费会员--会员商品 + * @param object data + * + */ +export function groomList(data) { + return request.get(`svip/product_lst`, data, {noAuth: true}) +} +/** + * 客服聊天--撤回消息 + * @param object data + * + */ +export function chatReverstApi(id) { + return request.post(`service/recall/${id}`) +} +/** + * 客服聊天--判断店铺是否有在线客服 + * @param object data + * + */ +export function hasServiceApi(id) { + return request.get(`has_service/${id}`) +} +/** + * 银行卡提现--银行卡信息 + * @param object data + * + */ +export function getBankInfo() { + return request.get(`user/extract/history_bank`) +} +/** + * 用户设置--信息 + * @param object data + * + */ +export function getUserSetting() { + return request.get(`user/fields/info`) +} +/** + * 用户设置--修改 + * @param object data + * + */ +export function userSettingEdit(data) { + return request.post(`user/fields/save`, data) +} +/** + * 报名活动--详情 + * @param object data + * + */ +export function registrateDetail(id) { + return request.get(`system/form/detail/${id}`,{}, {noAuth: true}) +} +/** + * 报名活动--提交数据 + * @param object data + * + */ +export function registrateCreate(id,data) { + return request.post(`user/form/create/${id}`, data) +} +/** + * 报名活动--列表 + * @param object data + * + */ +export function getRechargeList(data) { + return request.get(`system/form/lst`, data, {noAuth: true}) +} +/** + * 报名活动--记录 + * @param object data + * + */ +export function getRechargeRecordList(data) { + return request.get(`user/form/lst`, data) +} +/** + * 报名活动--分享海报 + * @param object data + * + */ +export function registratePoster(id) { + return request.get(`system/form/share_posters/${id}`, {}) +} +/** + * 报名活动--提交记录详情 + * @param object data + * + */ +export function registrateRecordDetail(id) { + return request.get(`user/form/show/${id}`) +} +/** + * 系统表单--表单详情数据 + * @param object data + * + */ +export function systemFormData(id) { + return request.get(`system/form/info/${id}`, {}, {noAuth: true}) +} \ No newline at end of file diff --git a/components/BaseMoney.vue b/components/BaseMoney.vue new file mode 100644 index 0000000..6c7c5b3 --- /dev/null +++ b/components/BaseMoney.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/components/Loading/index.vue b/components/Loading/index.vue new file mode 100644 index 0000000..a87ddf6 --- /dev/null +++ b/components/Loading/index.vue @@ -0,0 +1,66 @@ + + + + \ No newline at end of file diff --git a/components/PriceChange/index.vue b/components/PriceChange/index.vue new file mode 100644 index 0000000..4ddf3b7 --- /dev/null +++ b/components/PriceChange/index.vue @@ -0,0 +1,152 @@ + + + + \ No newline at end of file diff --git a/components/WaterfallsFlow/WaterfallsFlow.vue b/components/WaterfallsFlow/WaterfallsFlow.vue new file mode 100644 index 0000000..2f88616 --- /dev/null +++ b/components/WaterfallsFlow/WaterfallsFlow.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/components/WaterfallsFlowItem/WaterfallsFlowItem.vue b/components/WaterfallsFlowItem/WaterfallsFlowItem.vue new file mode 100644 index 0000000..391bc49 --- /dev/null +++ b/components/WaterfallsFlowItem/WaterfallsFlowItem.vue @@ -0,0 +1,358 @@ + + + + diff --git a/components/adc/index.vue b/components/adc/index.vue new file mode 100644 index 0000000..6a579d1 --- /dev/null +++ b/components/adc/index.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/components/addInvoicing/index.vue b/components/addInvoicing/index.vue new file mode 100644 index 0000000..3286083 --- /dev/null +++ b/components/addInvoicing/index.vue @@ -0,0 +1,604 @@ + + + + + diff --git a/components/addcartWindow/index.vue b/components/addcartWindow/index.vue new file mode 100644 index 0000000..0219f53 --- /dev/null +++ b/components/addcartWindow/index.vue @@ -0,0 +1,346 @@ + + + + + diff --git a/components/addressWindow/index.vue b/components/addressWindow/index.vue new file mode 100644 index 0000000..c980270 --- /dev/null +++ b/components/addressWindow/index.vue @@ -0,0 +1,190 @@ + + + + diff --git a/components/alert/index.vue b/components/alert/index.vue new file mode 100644 index 0000000..913d928 --- /dev/null +++ b/components/alert/index.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/components/areaWindow/index.vue b/components/areaWindow/index.vue new file mode 100644 index 0000000..0f565bd --- /dev/null +++ b/components/areaWindow/index.vue @@ -0,0 +1,266 @@ + + + + + diff --git a/components/bindmobile.vue b/components/bindmobile.vue new file mode 100644 index 0000000..f34ec98 --- /dev/null +++ b/components/bindmobile.vue @@ -0,0 +1,319 @@ + + + + + diff --git a/components/cash/index.vue b/components/cash/index.vue new file mode 100644 index 0000000..28b707d --- /dev/null +++ b/components/cash/index.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/components/checkCoupon/index.vue b/components/checkCoupon/index.vue new file mode 100644 index 0000000..0b54383 --- /dev/null +++ b/components/checkCoupon/index.vue @@ -0,0 +1,388 @@ + + + + + diff --git a/components/checkDelivery/index.vue b/components/checkDelivery/index.vue new file mode 100644 index 0000000..d3d1059 --- /dev/null +++ b/components/checkDelivery/index.vue @@ -0,0 +1,178 @@ + + + + + diff --git a/components/combinNav/index.vue b/components/combinNav/index.vue new file mode 100644 index 0000000..6a91fc0 --- /dev/null +++ b/components/combinNav/index.vue @@ -0,0 +1,318 @@ + + + + + diff --git a/components/comment.vue b/components/comment.vue new file mode 100644 index 0000000..dc7fd64 --- /dev/null +++ b/components/comment.vue @@ -0,0 +1,479 @@ + + + + + diff --git a/components/copyPassword/index.vue b/components/copyPassword/index.vue new file mode 100644 index 0000000..68e5e34 --- /dev/null +++ b/components/copyPassword/index.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/components/countDown/index.vue b/components/countDown/index.vue new file mode 100644 index 0000000..accfe38 --- /dev/null +++ b/components/countDown/index.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/components/couponListWindow/index.vue b/components/couponListWindow/index.vue new file mode 100644 index 0000000..66d1cca --- /dev/null +++ b/components/couponListWindow/index.vue @@ -0,0 +1,238 @@ + + + + diff --git a/components/cusPreviewImg/index.vue b/components/cusPreviewImg/index.vue new file mode 100644 index 0000000..1a27fa2 --- /dev/null +++ b/components/cusPreviewImg/index.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/components/customTab.vue b/components/customTab.vue new file mode 100644 index 0000000..a9b5fdd --- /dev/null +++ b/components/customTab.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/components/discountDetails/index.vue b/components/discountDetails/index.vue new file mode 100644 index 0000000..7b1b4a3 --- /dev/null +++ b/components/discountDetails/index.vue @@ -0,0 +1,153 @@ + + + + diff --git a/components/easy-loadimage/easy-loadimage.vue b/components/easy-loadimage/easy-loadimage.vue new file mode 100644 index 0000000..a8c3da4 --- /dev/null +++ b/components/easy-loadimage/easy-loadimage.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/components/eidtUserModal/index.vue b/components/eidtUserModal/index.vue new file mode 100644 index 0000000..f7af8e1 --- /dev/null +++ b/components/eidtUserModal/index.vue @@ -0,0 +1,290 @@ + + + + diff --git a/components/emptyPage.vue b/components/emptyPage.vue new file mode 100644 index 0000000..0cefa8f --- /dev/null +++ b/components/emptyPage.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/components/freightGuarantee/index.vue b/components/freightGuarantee/index.vue new file mode 100644 index 0000000..e3e139a --- /dev/null +++ b/components/freightGuarantee/index.vue @@ -0,0 +1,216 @@ + + + + diff --git a/components/goodList/index.vue b/components/goodList/index.vue new file mode 100644 index 0000000..c219608 --- /dev/null +++ b/components/goodList/index.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/components/guide/index.vue b/components/guide/index.vue new file mode 100644 index 0000000..84589a5 --- /dev/null +++ b/components/guide/index.vue @@ -0,0 +1,187 @@ + + + + \ No newline at end of file diff --git a/components/home/index.vue b/components/home/index.vue new file mode 100644 index 0000000..c3a59cc --- /dev/null +++ b/components/home/index.vue @@ -0,0 +1,116 @@ + + + + diff --git a/components/index.vue b/components/index.vue new file mode 100644 index 0000000..e38e397 --- /dev/null +++ b/components/index.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/components/invoiceGoods/index.vue b/components/invoiceGoods/index.vue new file mode 100644 index 0000000..fd654db --- /dev/null +++ b/components/invoiceGoods/index.vue @@ -0,0 +1,262 @@ + + + + diff --git a/components/jyf-parser/jyf-parser.vue b/components/jyf-parser/jyf-parser.vue new file mode 100644 index 0000000..68b0ca7 --- /dev/null +++ b/components/jyf-parser/jyf-parser.vue @@ -0,0 +1,825 @@ + + + + + + diff --git a/components/jyf-parser/libs/CssHandler.js b/components/jyf-parser/libs/CssHandler.js new file mode 100644 index 0000000..9168e17 --- /dev/null +++ b/components/jyf-parser/libs/CssHandler.js @@ -0,0 +1,103 @@ + +/* + 解析和匹配 Css 的选择器 + github:https://github.com/jin-yufeng/Parser + docs:https://jin-yufeng.github.io/Parser + author:JinYufeng + update:2020/03/15 +*/ +var cfg = require('./config.js'); +class CssHandler { + constructor(tagStyle) { + var styles = Object.assign({}, cfg.userAgentStyles); + for (var item in tagStyle) + styles[item] = (styles[item] ? styles[item] + ';' : '') + tagStyle[item]; + this.styles = styles; + } + getStyle = data => this.styles = new CssParser(data, this.styles).parse(); + match(name, attrs) { + var tmp, matched = (tmp = this.styles[name]) ? tmp + ';' : ''; + if (attrs.class) { + var items = attrs.class.split(' '); + for (var i = 0, item; item = items[i]; i++) + if (tmp = this.styles['.' + item]) + matched += tmp + ';'; + } + if (tmp = this.styles['#' + attrs.id]) + matched += tmp + ';'; + return matched; + } +} +module.exports = CssHandler; +class CssParser { + constructor(data, init) { + this.data = data; + this.floor = 0; + this.i = 0; + this.list = []; + this.res = init; + this.state = this.Space; + } + parse() { + for (var c; c = this.data[this.i]; this.i++) + this.state(c); + return this.res; + } + section = () => this.data.substring(this.start, this.i); + isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); + // 状态机 + Space(c) { + if (c == '.' || c == '#' || this.isLetter(c)) { + this.start = this.i; + this.state = this.Name; + } else if (c == '/' && this.data[this.i + 1] == '*') + this.Comment(); + else if (!cfg.blankChar[c] && c != ';') + this.state = this.Ignore; + } + Comment() { + this.i = this.data.indexOf('*/', this.i) + 1; + if (!this.i) this.i = this.data.length; + this.state = this.Space; + } + Ignore(c) { + if (c == '{') this.floor++; + else if (c == '}' && !--this.floor) this.state = this.Space; + } + Name(c) { + if (cfg.blankChar[c]) { + this.list.push(this.section()); + this.state = this.NameSpace; + } else if (c == '{') { + this.list.push(this.section()); + this.Content(); + } else if (c == ',') { + this.list.push(this.section()); + this.Comma(); + } else if (!this.isLetter(c) && (c < '0' || c > '9') && c != '-' && c != '_') + this.state = this.Ignore; + } + NameSpace(c) { + if (c == '{') this.Content(); + else if (c == ',') this.Comma(); + else if (!cfg.blankChar[c]) this.state = this.Ignore; + } + Comma() { + while (cfg.blankChar[this.data[++this.i]]); + if (this.data[this.i] == '{') this.Content(); + else { + this.start = this.i--; + this.state = this.Name; + } + } + Content() { + this.start = ++this.i; + if ((this.i = this.data.indexOf('}', this.i)) == -1) this.i = this.data.length; + var content = this.section(); + for (var i = 0, item; item = this.list[i++];) + if (this.res[item]) this.res[item] += ';' + content; + else this.res[item] = content; + this.list = []; + this.state = this.Space; + } +} diff --git a/components/jyf-parser/libs/MpHtmlParser.js b/components/jyf-parser/libs/MpHtmlParser.js new file mode 100644 index 0000000..602cab7 --- /dev/null +++ b/components/jyf-parser/libs/MpHtmlParser.js @@ -0,0 +1,578 @@ + +/* + 将 html 解析为适用于小程序 rich-text 的 DOM 结构 + github:https://github.com/jin-yufeng/Parser + docs:https://jin-yufeng.github.io/Parser + author:JinYufeng + update:2020/04/13 +*/ +var cfg = require('./config.js'), + blankChar = cfg.blankChar, + CssHandler = require('./CssHandler.js'), + { + screenWidth, + system + } = wx.getSystemInfoSync(); +// #ifdef MP-BAIDU || MP-ALIPAY || MP-TOUTIAO +var entities = { + lt: '<', + gt: '>', + amp: '&', + quot: '"', + apos: "'", + nbsp: '\xA0', + ensp: '\u2002', + emsp: '\u2003', + ndash: '–', + mdash: '—', + middot: '·', + lsquo: '‘', + rsquo: '’', + ldquo: '“', + rdquo: '”', + bull: '•', + hellip: '…', + permil: '‰', + copy: '©', + reg: '®', + trade: '™', + times: '×', + divide: '÷', + cent: '¢', + pound: '£', + yen: '¥', + euro: '€', + sect: '§' +}; +// #endif +var emoji; // emoji 补丁包 https://jin-yufeng.github.io/Parser/#/instructions?id=emoji +class MpHtmlParser { + constructor(data, options = {}) { + this.attrs = {}; + this.compress = options.compress; + this.CssHandler = new CssHandler(options.tagStyle, screenWidth); + this.data = data; + this.domain = options.domain; + this.DOM = []; + this.i = this.start = this.audioNum = this.imgNum = this.videoNum = 0; + this.protocol = this.domain && this.domain.includes('://') ? this.domain.split('://')[0] : ''; + this.state = this.Text; + this.STACK = []; + this.useAnchor = options.useAnchor; + this.xml = options.xml; + } + parse() { + if (emoji) this.data = emoji.parseEmoji(this.data); + for (var c; c = this.data[this.i]; this.i++) + this.state(c); + if (this.state == this.Text) this.setText(); + while (this.STACK.length) this.popNode(this.STACK.pop()); + // #ifdef MP-BAIDU || MP-TOUTIAO + // 将顶层标签的一些样式提取出来给 rich-text + (function f(ns) { + for (var i = ns.length, n; n = ns[--i];) { + if (n.type == 'text') continue; + if (!n.c) { + var style = n.attrs.style; + if (style) { + var j, k, res; + if ((j = style.indexOf('display')) != -1) + res = style.substring(j, (k = style.indexOf(';', j)) == -1 ? style.length : k); + if ((j = style.indexOf('float')) != -1) + res += ';' + style.substring(j, (k = style.indexOf(';', j)) == -1 ? style.length : k); + n.attrs.contain = res; + } + } else f(n.children); + } + })(this.DOM); + // #endif + if (this.DOM.length) { + this.DOM[0].PoweredBy = 'Parser'; + if (this.title) this.DOM[0].title = this.title; + } + return this.DOM; + } + // 设置属性 + setAttr() { + var name = this.getName(this.attrName); + if (cfg.trustAttrs[name]) { + if (!this.attrVal) { + if (cfg.boolAttrs[name]) this.attrs[name] = 'T'; + } else if (name == 'src') this.attrs[name] = this.getUrl(this.attrVal.replace(/&/g, '&')); + else this.attrs[name] = this.attrVal; + } + this.attrVal = ''; + while (blankChar[this.data[this.i]]) this.i++; + if (this.isClose()) this.setNode(); + else { + this.start = this.i; + this.state = this.AttrName; + } + } + // 设置文本节点 + setText() { + var back, text = this.section(); + if (!text) return; + text = (cfg.onText && cfg.onText(text, () => back = true)) || text; + if (back) { + this.data = this.data.substr(0, this.start) + text + this.data.substr(this.i); + let j = this.start + text.length; + for (this.i = this.start; this.i < j; this.i++) this.state(this.data[this.i]); + return; + } + if (!this.pre) { + // 合并空白符 + var tmp = []; + for (let i = text.length, c; c = text[--i];) + if (!blankChar[c] || (!blankChar[tmp[0]] && (c = ' '))) tmp.unshift(c); + text = tmp.join(''); + if (text == ' ') return; + } + // 处理实体 + var siblings = this.siblings(), + i = -1, + j, en; + while (1) { + if ((i = text.indexOf('&', i + 1)) == -1) break; + if ((j = text.indexOf(';', i + 2)) == -1) break; + if (text[i + 1] == '#') { + en = parseInt((text[i + 2] == 'x' ? '0' : '') + text.substring(i + 2, j)); + if (!isNaN(en)) text = text.substr(0, i) + String.fromCharCode(en) + text.substring(j + 1); + } else { + en = text.substring(i + 1, j); + // #ifdef MP-WEIXIN || MP-QQ || APP-PLUS + if (en == 'nbsp') text = text.substr(0, i) + '\xA0' + text.substr(j + 1); // 解决   失效 + else if (en != 'lt' && en != 'gt' && en != 'amp' && en != 'ensp' && en != 'emsp' && en != 'quot' && en != 'apos') { + i && siblings.push({ + type: 'text', + text: text.substr(0, i) + }) + siblings.push({ + type: 'text', + text: `&${en};`, + en: 1 + }) + text = text.substr(j + 1); + i = -1; + } + // #endif + // #ifdef MP-BAIDU || MP-ALIPAY || MP-TOUTIAO + if (entities[en]) text = text.substr(0, i) + entities[en] + text.substr(j + 1); + // #endif + } + } + text && siblings.push({ + type: 'text', + text + }) + } + // 设置元素节点 + setNode() { + var node = { + name: this.tagName.toLowerCase(), + attrs: this.attrs + }, + close = cfg.selfClosingTags[node.name] || (this.xml && this.data[this.i] == '/'); + this.attrs = {}; + if (!cfg.ignoreTags[node.name]) { + this.matchAttr(node); + if (!close) { + node.children = []; + if (node.name == 'pre' && cfg.highlight) { + this.remove(node); + this.pre = node.pre = true; + } + this.siblings().push(node); + this.STACK.push(node); + } else if (!cfg.filter || cfg.filter(node, this) != false) + this.siblings().push(node); + } else { + if (!close) this.remove(node); + else if (node.name == 'source') { + var parent = this.STACK[this.STACK.length - 1], + attrs = node.attrs; + if (parent && attrs.src) + if (parent.name == 'video' || parent.name == 'audio') + parent.attrs.source.push(attrs.src); + else { + var i, media = attrs.media; + if (parent.name == 'picture' && !parent.attrs.src && !(attrs.src.indexOf('.webp') && system.includes('iOS')) && + (!media || (media.includes('px') && + (((i = media.indexOf('min-width')) != -1 && (i = media.indexOf(':', i + 8)) != -1 && screenWidth > parseInt( + media.substr(i + 1))) || + ((i = media.indexOf('max-width')) != -1 && (i = media.indexOf(':', i + 8)) != -1 && screenWidth < parseInt( + media.substr(i + 1))))))) + parent.attrs.src = attrs.src; + } + } else if (node.name == 'base' && !this.domain) this.domain = node.attrs.href; + } + if (this.data[this.i] == '/') this.i++; + this.start = this.i + 1; + this.state = this.Text; + } + // 移除标签 + remove(node) { + var name = node.name, + j = this.i; + while (1) { + if ((this.i = this.data.indexOf('', this.i)) == -1) this.i = this.data.length; + // 处理 svg + if (name == 'svg') { + var src = this.data.substring(j, this.i + 1); + if (!node.attrs.xmlns) src = ' xmlns="http://www.w3.org/2000/svg"' + src; + var i = j; + while (this.data[j] != '<') j--; + src = this.data.substring(j, i) + src; + var parent = this.STACK[this.STACK.length - 1]; + if (node.attrs.width == '100%' && parent && (parent.attrs.style || '').includes('inline')) + parent.attrs.style = 'width:300px;max-width:100%;' + parent.attrs.style; + this.siblings().push({ + name: 'img', + attrs: { + src: 'data:image/svg+xml;utf8,' + src.replace(/#/g, '%23'), + ignore: 'T' + } + }) + } + return; + } + } + } + // 处理属性 + matchAttr(node) { + var attrs = node.attrs, + style = this.CssHandler.match(node.name, attrs, node) + (attrs.style || ''), + styleObj = {}; + if (attrs.id) { + if (this.compress & 1) attrs.id = void 0; + else if (this.useAnchor) this.bubble(); + } + if ((this.compress & 2) && attrs.class) attrs.class = void 0; + switch (node.name) { + case 'img': + if (attrs['data-src']) { + attrs.src = attrs.src || attrs['data-src']; + attrs['data-src'] = void 0; + } + if (attrs.src && !attrs.ignore) { + if (this.bubble()) attrs.i = (this.imgNum++).toString(); + else attrs.ignore = 'T'; + } + break; + case 'a': + case 'ad': + // #ifdef APP-PLUS + case 'iframe': + case 'embed': + // #endif + this.bubble(); + break; + case 'font': + if (attrs.color) { + styleObj['color'] = attrs.color; + attrs.color = void 0; + } + if (attrs.face) { + styleObj['font-family'] = attrs.face; + attrs.face = void 0; + } + if (attrs.size) { + var size = parseInt(attrs.size); + if (size < 1) size = 1; + else if (size > 7) size = 7; + var map = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large']; + styleObj['font-size'] = map[size - 1]; + attrs.size = void 0; + } + break; + case 'video': + case 'audio': + if (!attrs.id) attrs.id = node.name + (++this[`${node.name}Num`]); + else this[`${node.name}Num`]++; + if (node.name == 'video') { + if (attrs.width) { + style = `width:${parseFloat(attrs.width) + (attrs.width.includes('%') ? '%' : 'px')};${style}`; + attrs.width = void 0; + } + if (attrs.height) { + style = `height:${parseFloat(attrs.height) + (attrs.height.includes('%') ? '%' : 'px')};${style}`; + attrs.height = void 0; + } + if (this.videoNum > 3) node.lazyLoad = true; + } + attrs.source = []; + if (attrs.src) attrs.source.push(attrs.src); + if (!attrs.controls && !attrs.autoplay) + console.warn(`存在没有 controls 属性的 ${node.name} 标签,可能导致无法播放`, node); + this.bubble(); + break; + case 'td': + case 'th': + if (attrs.colspan || attrs.rowspan) + for (var k = this.STACK.length, item; item = this.STACK[--k];) + if (item.name == 'table') { + item.c = void 0; + break; + } + } + if (attrs.align) { + styleObj['text-align'] = attrs.align; + attrs.align = void 0; + } + // 压缩 style + var styles = style.replace(/"/g, '"').replace(/&/g, '&').split(';'); + style = ''; + for (var i = 0, len = styles.length; i < len; i++) { + var info = styles[i].split(':'); + if (info.length < 2) continue; + let key = info[0].trim().toLowerCase(), + value = info.slice(1).join(':').trim(); + if (value.includes('-webkit') || value.includes('-moz') || value.includes('-ms') || value.includes('-o') || value + .includes( + 'safe')) + style += `;${key}:${value}`; + else if (!styleObj[key] || value.includes('import') || !styleObj[key].includes('import')) + styleObj[key] = value; + } + if (node.name == 'img' && parseInt(styleObj.width || attrs.width) > screenWidth) + styleObj.height = 'auto'; + for (var key in styleObj) { + var value = styleObj[key]; + if (key.includes('flex') || key == 'order' || key == 'self-align') node.c = 1; + // 填充链接 + if (value.includes('url')) { + var j = value.indexOf('('); + if (j++ != -1) { + while (value[j] == '"' || value[j] == "'" || blankChar[value[j]]) j++; + value = value.substr(0, j) + this.getUrl(value.substr(j)); + } + } + // 转换 rpx + else if (value.includes('rpx')) + value = value.replace(/[0-9.]+\s*rpx/g, $ => parseFloat($) * screenWidth / 750 + 'px'); + else if (key == 'white-space' && value.includes('pre')) + this.pre = node.pre = true; + style += `;${key}:${value}`; + } + style = style.substr(1); + if (style) attrs.style = style; + } + // 节点出栈处理 + popNode(node) { + // 空白符处理 + if (node.pre) { + node.pre = this.pre = void 0; + for (let i = this.STACK.length; i--;) + if (this.STACK[i].pre) + this.pre = true; + } + if (node.name == 'head' || (cfg.filter && cfg.filter(node, this) == false)) + return this.siblings().pop(); + var attrs = node.attrs; + // 替换一些标签名 + if (node.name == 'picture') { + node.name = 'img'; + if (!attrs.src && (node.children[0] || '').name == 'img') + attrs.src = node.children[0].attrs.src; + if (attrs.src && !attrs.ignore) + attrs.i = (this.imgNum++).toString(); + return node.children = void 0; + } + if (cfg.blockTags[node.name]) node.name = 'div'; + else if (!cfg.trustTags[node.name]) node.name = 'span'; + // 处理列表 + if (node.c) { + if (node.name == 'ul') { + var floor = 1; + for (let i = this.STACK.length; i--;) + if (this.STACK[i].name == 'ul') floor++; + if (floor != 1) + for (let i = node.children.length; i--;) + node.children[i].floor = floor; + } else if (node.name == 'ol') { + for (let i = 0, num = 1, child; child = node.children[i++];) + if (child.name == 'li') { + child.type = 'ol'; + child.num = ((num, type) => { + if (type == 'a') return String.fromCharCode(97 + (num - 1) % 26); + if (type == 'A') return String.fromCharCode(65 + (num - 1) % 26); + if (type == 'i' || type == 'I') { + num = (num - 1) % 99 + 1; + var one = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'], + ten = ['X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'], + res = (ten[Math.floor(num / 10) - 1] || '') + (one[num % 10 - 1] || ''); + if (type == 'i') return res.toLowerCase(); + return res; + } + return num; + })(num++, attrs.type) + '.'; + } + } + } + // 处理表格的边框 + if (node.name == 'table') { + var padding = attrs.cellpadding, + spacing = attrs.cellspacing, + border = attrs.border; + if (node.c) { + this.bubble(); + if (!padding) padding = 2; + if (!spacing) spacing = 2; + } + if (border) attrs.style = `border:${border}px solid gray;${attrs.style || ''}`; + if (spacing) attrs.style = `border-spacing:${spacing}px;${attrs.style || ''}`; + if (border || padding) + (function f(ns) { + for (var i = 0, n; n = ns[i]; i++) { + if (n.name == 'th' || n.name == 'td') { + if (border) n.attrs.style = `border:${border}px solid gray;${n.attrs.style}`; + if (padding) n.attrs.style = `padding:${padding}px;${n.attrs.style}`; + } else f(n.children || []); + } + })(node.children) + } + this.CssHandler.pop && this.CssHandler.pop(node); + // 自动压缩 + if (node.name == 'div' && !Object.keys(attrs).length) { + var siblings = this.siblings(); + if (node.children.length == 1 && node.children[0].name == 'div') + siblings[siblings.length - 1] = node.children[0]; + } + } + // 工具函数 + bubble() { + for (var i = this.STACK.length, item; item = this.STACK[--i];) { + if (cfg.richOnlyTags[item.name]) { + if (item.name == 'table' && !Object.hasOwnProperty.call(item, 'c')) item.c = 1; + return false; + } + item.c = 1; + } + return true; + } + getName = val => this.xml ? val : val.toLowerCase(); + getUrl(url) { + if (url[0] == '/') { + if (url[1] == '/') url = this.protocol + ':' + url; + else if (this.domain) url = this.domain + url; + } else if (this.domain && url.indexOf('data:') != 0 && !url.includes('://')) + url = this.domain + '/' + url; + return url; + } + isClose = () => this.data[this.i] == '>' || (this.data[this.i] == '/' && this.data[this.i + 1] == '>'); + section = () => this.data.substring(this.start, this.i); + siblings = () => this.STACK.length ? this.STACK[this.STACK.length - 1].children : this.DOM; + // 状态机 + Text(c) { + if (c == '<') { + var next = this.data[this.i + 1], + isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); + if (isLetter(next)) { + this.setText(); + this.start = this.i + 1; + this.state = this.TagName; + } else if (next == '/') { + this.setText(); + if (isLetter(this.data[++this.i + 1])) { + this.start = this.i + 1; + this.state = this.EndTag; + } else + this.Comment(); + } else if (next == '!') { + this.setText(); + this.Comment(); + } + } + } + Comment() { + var key; + if (this.data.substring(this.i + 2, this.i + 4) == '--') key = '-->'; + else if (this.data.substring(this.i + 2, this.i + 9) == '[CDATA[') key = ']]>'; + else key = '>'; + if ((this.i = this.data.indexOf(key, this.i + 2)) == -1) this.i = this.data.length; + else this.i += key.length - 1; + this.start = this.i + 1; + this.state = this.Text; + } + TagName(c) { + if (blankChar[c]) { + this.tagName = this.section(); + while (blankChar[this.data[this.i]]) this.i++; + if (this.isClose()) this.setNode(); + else { + this.start = this.i; + this.state = this.AttrName; + } + } else if (this.isClose()) { + this.tagName = this.section(); + this.setNode(); + } + } + AttrName(c) { + var blank = blankChar[c]; + if (blank) { + this.attrName = this.section(); + c = this.data[this.i]; + } + if (c == '=') { + if (!blank) this.attrName = this.section(); + while (blankChar[this.data[++this.i]]); + this.start = this.i--; + this.state = this.AttrValue; + } else if (blank) this.setAttr(); + else if (this.isClose()) { + this.attrName = this.section(); + this.setAttr(); + } + } + AttrValue(c) { + if (c == '"' || c == "'") { + this.start++; + if ((this.i = this.data.indexOf(c, this.i + 1)) == -1) return this.i = this.data.length; + this.attrVal = this.section(); + this.i++; + } else { + for (; !blankChar[this.data[this.i]] && !this.isClose(); this.i++); + this.attrVal = this.section(); + } + this.setAttr(); + } + EndTag(c) { + if (blankChar[c] || c == '>' || c == '/') { + var name = this.getName(this.section()); + for (var i = this.STACK.length; i--;) + if (this.STACK[i].name == name) break; + if (i != -1) { + var node; + while ((node = this.STACK.pop()).name != name); + this.popNode(node); + } else if (name == 'p' || name == 'br') + this.siblings().push({ + name, + attrs: {} + }); + this.i = this.data.indexOf('>', this.i); + this.start = this.i + 1; + if (this.i == -1) this.i = this.data.length; + else this.state = this.Text; + } + } +} +module.exports = MpHtmlParser; diff --git a/components/jyf-parser/libs/config.js b/components/jyf-parser/libs/config.js new file mode 100644 index 0000000..d4286b2 --- /dev/null +++ b/components/jyf-parser/libs/config.js @@ -0,0 +1,81 @@ + +/* 配置文件 */ +// #ifdef MP-WEIXIN +const canIUse = wx.canIUse('editor'); // 高基础库标识,用于兼容 +// #endif +module.exports = { + // 过滤器函数 + filter: null, + // 代码高亮函数 + highlight: null, + // 文本处理函数 + onText: null, + blankChar: makeMap(' ,\xA0,\t,\r,\n,\f'), + // 块级标签,将被转为 div + blockTags: makeMap('address,article,aside,body,caption,center,cite,footer,header,html,nav,section' + ( + // #ifdef MP-WEIXIN + canIUse ? '' : + // #endif + ',pre')), + // 将被移除的标签 + ignoreTags: makeMap( + 'area,base,basefont,canvas,command,frame,input,isindex,keygen,link,map,meta,param,script,source,style,svg,textarea,title,track,use,wbr' + // #ifdef MP-WEIXIN + + (canIUse ? ',rp' : '') + // #endif + // #ifndef APP-PLUS + + ',embed,iframe' + // #endif + ), + // 只能被 rich-text 显示的标签 + richOnlyTags: makeMap('a,colgroup,fieldset,legend,picture,table' + // #ifdef MP-WEIXIN + + (canIUse ? ',bdi,bdo,caption,rt,ruby' : '') + // #endif + ), + // 自闭合的标签 + selfClosingTags: makeMap( + 'area,base,basefont,br,col,circle,ellipse,embed,frame,hr,img,input,isindex,keygen,line,link,meta,param,path,polygon,rect,source,track,use,wbr' + ), + // 信任的属性 + trustAttrs: makeMap( + 'align,alt,app-id,author,autoplay,border,cellpadding,cellspacing,class,color,colspan,controls,data-src,dir,face,height,href,id,ignore,loop,media,muted,name,path,poster,rowspan,size,span,src,start,style,type,unit-id,width,xmlns' + ), + // bool 型的属性 + boolAttrs: makeMap('autoplay,controls,ignore,loop,muted'), + // 信任的标签 + trustTags: makeMap( + 'a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video' + // #ifdef MP-WEIXIN + + (canIUse ? ',bdi,bdo,caption,pre,rt,ruby' : '') + // #endif + // #ifdef APP-PLUS + + ',embed,iframe' + // #endif + ), + // 默认的标签样式 + userAgentStyles: { + address: 'font-style:italic', + big: 'display:inline;font-size:1.2em', + blockquote: 'background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px', + caption: 'display:table-caption;text-align:center', + center: 'text-align:center', + cite: 'font-style:italic', + dd: 'margin-left:40px', + img: 'max-width:100%', + mark: 'background-color:yellow', + picture: 'max-width:100%', + pre: 'font-family:monospace;white-space:pre;overflow:scroll', + s: 'text-decoration:line-through', + small: 'display:inline;font-size:0.8em', + u: 'text-decoration:underline' + } +} + +function makeMap(str) { + var map = {}, + list = str.split(','); + for (var i = list.length; i--;) + map[list[i]] = true; + return map; +} diff --git a/components/jyf-parser/libs/handler.sjs b/components/jyf-parser/libs/handler.sjs new file mode 100644 index 0000000..144bdb1 --- /dev/null +++ b/components/jyf-parser/libs/handler.sjs @@ -0,0 +1,36 @@ + +var inlineTags = { + abbr: 1, + b: 1, + big: 1, + code: 1, + del: 1, + em: 1, + i: 1, + ins: 1, + label: 1, + q: 1, + small: 1, + span: 1, + strong: 1 +} +export default { + // 从顶层标签的样式中取出一些给 rich-text + getStyle: function(style) { + if (style) { + var i, j, res = ''; + if ((i = style.indexOf('display')) != -1) + res = style.substring(i, (j = style.indexOf(';', i)) == -1 ? style.length : j); + if ((i = style.indexOf('float')) != -1) + res += ';' + style.substring(i, (j = style.indexOf(';', i)) == -1 ? style.length : j); + return res; + } + }, + getNode: function(item) { + return [item]; + }, + // 是否通过 rich-text 显示 + useRichText: function(item) { + return !item.c && !inlineTags[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1; + } +} diff --git a/components/jyf-parser/libs/handler.wxs b/components/jyf-parser/libs/handler.wxs new file mode 100644 index 0000000..17e71ee --- /dev/null +++ b/components/jyf-parser/libs/handler.wxs @@ -0,0 +1,45 @@ + +var inlineTags = { + abbr: 1, + b: 1, + big: 1, + code: 1, + del: 1, + em: 1, + i: 1, + ins: 1, + label: 1, + q: 1, + small: 1, + span: 1, + strong: 1 +} +module.exports = { + // 从顶层标签的样式中取出一些给 rich-text + getStyle: function(style) { + if (style) { + var i, j, res = ''; + if ((i = style.indexOf('display')) != -1) + res = style.substring(i, (j = style.indexOf(';', i)) == -1 ? style.length : j); + if ((i = style.indexOf('float')) != -1) + res += ';' + style.substring(i, (j = style.indexOf(';', i)) == -1 ? style.length : j); + return res; + } + }, + // 处理懒加载 + getNode: function(item, imgLoad) { + if (!imgLoad && item.attrs.i != '0') { + var img = { + name: 'img', + attrs: JSON.parse(JSON.stringify(item.attrs)) + } + delete img.attrs.src; + img.attrs.style += ';width:20px;height:20px'; + return [img]; + } else return [item]; + }, + // 是否通过 rich-text 显示 + useRichText: function(item) { + return !item.c && !inlineTags[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1; + } +} diff --git a/components/jyf-parser/libs/trees.vue b/components/jyf-parser/libs/trees.vue new file mode 100644 index 0000000..03639c6 --- /dev/null +++ b/components/jyf-parser/libs/trees.vue @@ -0,0 +1,488 @@ + +