Full Code of baok1592/ruhua_vue for AI

master 03733192beec cached
479 files
10.4 MB
2.8M tokens
1910 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (11,417K chars total). Download the full file to get everything.
Repository: baok1592/ruhua_vue
Branch: master
Commit: 03733192beec
Files: 479
Total size: 10.4 MB

Directory structure:
gitextract_wa8ztkhb/

├── LICENSE
├── README.md
├── 前端商城/
│   ├── .gitignore
│   ├── App.vue
│   ├── README.md
│   ├── common/
│   │   ├── app.css
│   │   ├── app_token.js
│   │   ├── axios.js
│   │   ├── cache/
│   │   │   └── user.js
│   │   ├── cache.js
│   │   ├── check.js
│   │   ├── config.js
│   │   ├── filters/
│   │   │   └── filters.js
│   │   ├── h5_pay.js
│   │   ├── mixin.js
│   │   ├── switch.js
│   │   ├── uni.css
│   │   ├── wx_token.js
│   │   └── xcx_token.js
│   ├── components/
│   │   ├── actionsheet/
│   │   │   └── actionsheet.vue
│   │   ├── badge/
│   │   │   └── badge.vue
│   │   ├── bottom-popup/
│   │   │   └── bottom-popup.vue
│   │   ├── button/
│   │   │   └── button.vue
│   │   ├── dateTime/
│   │   │   └── dateTime.vue
│   │   ├── discount/
│   │   │   └── discount.vue
│   │   ├── drawer/
│   │   │   └── drawer.vue
│   │   ├── empty.vue
│   │   ├── form_data/
│   │   │   └── form_data.vue
│   │   ├── hch-poster/
│   │   │   ├── hch-poster - 副本.vue
│   │   │   └── hch-poster.vue
│   │   ├── icon/
│   │   │   └── icon.vue
│   │   ├── jing-swiper/
│   │   │   └── jing-swiper.vue
│   │   ├── linnian-CountDown/
│   │   │   ├── readme.md
│   │   │   └── uni-countdown.vue
│   │   ├── loadmore/
│   │   │   └── loadmore.vue
│   │   ├── mix-list-cell.vue
│   │   ├── modal/
│   │   │   └── modal.vue
│   │   ├── new_HB/
│   │   │   ├── index/
│   │   │   │   └── index.vue
│   │   │   └── mg-h5hb/
│   │   │       └── common/
│   │   │           ├── canvas_x.js
│   │   │           ├── myUtil.js
│   │   │           ├── qrCode.js
│   │   │           └── style.scss
│   │   ├── nomore/
│   │   │   └── nomore.vue
│   │   ├── numberbox/
│   │   │   └── numberbox.vue
│   │   ├── plan-image-upload/
│   │   │   ├── index.vue
│   │   │   ├── up_img.vue
│   │   │   └── work_log - 副本.vue
│   │   ├── qy/
│   │   │   ├── Black.vue
│   │   │   ├── Coupon.vue
│   │   │   ├── FenX.vue
│   │   │   ├── List-d.vue
│   │   │   ├── List-f.vue
│   │   │   ├── Tan.vue
│   │   │   ├── Title-c.vue
│   │   │   ├── list/
│   │   │   │   └── h.vue
│   │   │   ├── none.vue
│   │   │   ├── shopProduct.vue
│   │   │   ├── xianshi.vue
│   │   │   └── xieyi.vue
│   │   ├── rate/
│   │   │   └── rate.vue
│   │   ├── share.vue
│   │   ├── tag/
│   │   │   └── tag.vue
│   │   ├── top-dropdown/
│   │   │   └── top-dropdown.vue
│   │   ├── tui-tabs/
│   │   │   └── tui-tabs.vue
│   │   ├── tui-upload/
│   │   │   └── tui-upload.vue
│   │   ├── uni/
│   │   │   ├── uni-badge/
│   │   │   │   └── uni-badge.vue
│   │   │   ├── uni-countdown/
│   │   │   │   └── uni-countdown.vue
│   │   │   ├── uni-icon/
│   │   │   │   └── uni-icon.vue
│   │   │   ├── uni-icons/
│   │   │   │   └── uni-icons.vue
│   │   │   ├── uni-list/
│   │   │   │   └── uni-list.vue
│   │   │   ├── uni-list-item/
│   │   │   │   └── uni-list-item.vue
│   │   │   ├── uni-load-more/
│   │   │   │   └── uni-load-more.vue
│   │   │   ├── uni-notice-bar/
│   │   │   │   └── uni-notice-bar.vue
│   │   │   ├── uni-popup/
│   │   │   │   └── uni-popup.vue
│   │   │   ├── uni-rate/
│   │   │   │   ├── uni-rate.vue
│   │   │   │   └── uni-rates.vue
│   │   │   ├── uni-segmented-control/
│   │   │   │   └── uni-segmented-control.vue
│   │   │   ├── uni-steps/
│   │   │   │   └── uni-steps.vue
│   │   │   └── uni-swipe-action/
│   │   │       └── uni-swipe-action.vue
│   │   ├── uni-icons/
│   │   │   ├── icons.js
│   │   │   └── uni-icons.vue
│   │   ├── uni-number-box.vue
│   │   ├── w-picker/
│   │   │   ├── city-data/
│   │   │   │   ├── area.js
│   │   │   │   ├── city.js
│   │   │   │   └── province.js
│   │   │   ├── w-picker.js
│   │   │   └── w-picker.vue
│   │   └── wx_auth/
│   │       ├── app_auth.vue
│   │       └── xcx_auth.vue
│   ├── main.js
│   ├── manifest.json
│   ├── means/
│   │   ├── coupon/
│   │   │   └── coupon.vue
│   │   ├── discount/
│   │   │   └── discount.vue
│   │   ├── notice/
│   │   │   └── notice.vue
│   │   ├── onebuy/
│   │   │   └── onebuy.vue
│   │   ├── pin/
│   │   │   └── pin.vue
│   │   ├── play/
│   │   │   ├── activity/
│   │   │   │   ├── draw.vue
│   │   │   │   └── draw加密.vue
│   │   │   ├── sherpa-jiugongge/
│   │   │   │   ├── sherpa-jiugongge.vue
│   │   │   │   └── sherpa-jiugongge加密.vue
│   │   │   └── watering/
│   │   │       ├── watering.vue
│   │   │       └── watering加密.vue
│   │   └── qiandao/
│   │       └── qiandao.vue
│   ├── model/
│   │   ├── category.js
│   │   ├── order.js
│   │   └── product.js
│   ├── pages/
│   │   ├── address/
│   │   │   ├── address.vue
│   │   │   └── addressManage.vue
│   │   ├── article/
│   │   │   └── article.vue
│   │   ├── cart/
│   │   │   └── cart.vue
│   │   ├── cartnone/
│   │   │   └── cartnone.vue
│   │   ├── category/
│   │   │   ├── category.1.vue
│   │   │   └── category.vue
│   │   ├── cms/
│   │   │   ├── coupon/
│   │   │   │   └── coupon.vue
│   │   │   ├── coupon_VIP/
│   │   │   │   └── coupon_VIP.vue
│   │   │   ├── couponlist/
│   │   │   │   └── couponlist.vue
│   │   │   ├── couponxuan/
│   │   │   │   └── couponxuan.vue
│   │   │   ├── edit/
│   │   │   │   ├── pro_manage/
│   │   │   │   │   └── pro_manage.vue
│   │   │   │   ├── product/
│   │   │   │   │   ├── addgroup/
│   │   │   │   │   │   └── addgroup.vue
│   │   │   │   │   ├── product-图片上传ID未解决.vue
│   │   │   │   │   └── product.vue
│   │   │   │   ├── shop/
│   │   │   │   │   └── shop.vue
│   │   │   │   ├── shop_login/
│   │   │   │   │   └── shop_login.vue
│   │   │   │   ├── yanzheng/
│   │   │   │   │   └── yanzheng.vue
│   │   │   │   ├── yfmoban/
│   │   │   │   │   └── yfmoban.vue
│   │   │   │   ├── yfset/
│   │   │   │   │   └── yfset.vue
│   │   │   │   └── yunfei/
│   │   │   │       └── yunfei.vue
│   │   │   ├── index/
│   │   │   │   └── index.vue
│   │   │   ├── kedetail/
│   │   │   │   └── kedetail.vue
│   │   │   ├── kehu/
│   │   │   │   └── kehu.vue
│   │   │   ├── kucun/
│   │   │   │   └── kucun.vue
│   │   │   ├── login/
│   │   │   │   ├── login-old.vue
│   │   │   │   └── login.vue
│   │   │   ├── notice/
│   │   │   │   └── notice.vue
│   │   │   ├── order/
│   │   │   │   ├── detail/
│   │   │   │   │   └── detail.vue
│   │   │   │   ├── detail.vue
│   │   │   │   ├── order.vue
│   │   │   │   ├── send/
│   │   │   │   │   └── send.vue
│   │   │   │   └── yz_order.vue
│   │   │   ├── tag_manage/
│   │   │   │   └── tag_manage.vue
│   │   │   └── user/
│   │   │       ├── agent/
│   │   │       │   └── agent.vue
│   │   │       ├── buy_vip.vue
│   │   │       ├── fenxiao/
│   │   │       │   ├── addcard/
│   │   │       │   │   └── addcard.vue
│   │   │       │   ├── bankcard/
│   │   │       │   │   └── bankcard.vue
│   │   │       │   ├── fenxiao.vue
│   │   │       │   ├── success/
│   │   │       │   │   └── success.vue
│   │   │       │   └── tixian/
│   │   │       │       └── tixian.vue
│   │   │       ├── mingxi/
│   │   │       │   └── mingxi.vue
│   │   │       ├── tongji/
│   │   │       │   └── tongji.vue
│   │   │       └── user.vue
│   │   ├── detail/
│   │   │   └── detail.vue
│   │   ├── evaluate/
│   │   │   └── evaluate.vue
│   │   ├── extend-view/
│   │   │   ├── mall/
│   │   │   │   └── mall.vue
│   │   │   ├── news-search/
│   │   │   │   └── news-search.vue
│   │   │   ├── productDetail/
│   │   │   │   ├── components/
│   │   │   │   │   ├── activity.vue
│   │   │   │   │   ├── bottom.vue
│   │   │   │   │   ├── choose_sku.vue
│   │   │   │   │   ├── coupon.vue
│   │   │   │   │   ├── get_coupon.vue
│   │   │   │   │   └── share.vue
│   │   │   │   ├── productDetail++.vue
│   │   │   │   └── productDetail.vue
│   │   │   └── productList/
│   │   │       └── productList.vue
│   │   ├── form/
│   │   │   └── form.vue
│   │   ├── index/
│   │   │   └── index.vue
│   │   ├── invite/
│   │   │   └── invite.vue
│   │   ├── invoices/
│   │   │   └── invoices.vue
│   │   ├── list/
│   │   │   └── list.vue
│   │   ├── login/
│   │   │   ├── login.vue
│   │   │   ├── loginA/
│   │   │   │   └── loginA.vue
│   │   │   └── loginB/
│   │   │       └── loginB.vue
│   │   ├── order/
│   │   │   ├── components/
│   │   │   │   ├── buy_data.vue
│   │   │   │   ├── coupon.vue
│   │   │   │   ├── drive_type.vue
│   │   │   │   ├── group_buy.vue
│   │   │   │   └── receive_address.vue
│   │   │   ├── createOrder.vue
│   │   │   ├── order.vue
│   │   │   └── pay.vue
│   │   ├── pindetail/
│   │   │   └── pindetail.vue
│   │   ├── public/
│   │   │   └── login.vue
│   │   ├── set/
│   │   │   └── set.vue
│   │   ├── shop/
│   │   │   └── shop.vue
│   │   ├── user/
│   │   │   ├── bind_phone/
│   │   │   │   └── bind_phone.vue
│   │   │   ├── cash/
│   │   │   │   └── cash.vue
│   │   │   ├── like/
│   │   │   │   └── like.vue
│   │   │   ├── mycoupon/
│   │   │   │   └── mycoupon.vue
│   │   │   ├── myorder/
│   │   │   │   ├── drive/
│   │   │   │   │   └── drive.vue
│   │   │   │   ├── grade/
│   │   │   │   │   └── grade.vue
│   │   │   │   ├── myorder.vue
│   │   │   │   └── refund/
│   │   │   │       └── refund.vue
│   │   │   ├── record/
│   │   │   │   └── record.vue
│   │   │   ├── set/
│   │   │   │   └── set.vue
│   │   │   └── user.vue
│   │   ├── wxauth.vue
│   │   ├── xieyi/
│   │   │   └── xieyi.vue
│   │   └── zhibo/
│   │       ├── detail.vue
│   │       └── zhibo.vue
│   ├── pages.json
│   ├── static/
│   │   └── style/
│   │       ├── icon.css
│   │       └── thorui.css
│   └── uni.scss
└── 后台cms/
    ├── .browserslistrc
    ├── .eslintrc.js
    ├── .gitignore
    ├── babel.config.js
    ├── package.json
    ├── postcss.config.js
    ├── public/
    │   ├── index.html
    │   ├── static/
    │   │   └── UEditor/
    │   │       ├── dialogs/
    │   │       │   ├── anchor/
    │   │       │   │   └── anchor.html
    │   │       │   ├── attachment/
    │   │       │   │   ├── attachment.css
    │   │       │   │   ├── attachment.html
    │   │       │   │   └── attachment.js
    │   │       │   ├── background/
    │   │       │   │   ├── background.css
    │   │       │   │   ├── background.html
    │   │       │   │   └── background.js
    │   │       │   ├── charts/
    │   │       │   │   ├── chart.config.js
    │   │       │   │   ├── charts.css
    │   │       │   │   ├── charts.html
    │   │       │   │   └── charts.js
    │   │       │   ├── emotion/
    │   │       │   │   ├── emotion.css
    │   │       │   │   ├── emotion.html
    │   │       │   │   └── emotion.js
    │   │       │   ├── gmap/
    │   │       │   │   └── gmap.html
    │   │       │   ├── help/
    │   │       │   │   ├── help.css
    │   │       │   │   ├── help.html
    │   │       │   │   └── help.js
    │   │       │   ├── image/
    │   │       │   │   ├── image.css
    │   │       │   │   ├── image.html
    │   │       │   │   └── image.js
    │   │       │   ├── insertframe/
    │   │       │   │   └── insertframe.html
    │   │       │   ├── internal.js
    │   │       │   ├── link/
    │   │       │   │   └── link.html
    │   │       │   ├── map/
    │   │       │   │   ├── map.html
    │   │       │   │   └── show.html
    │   │       │   ├── music/
    │   │       │   │   ├── music.css
    │   │       │   │   ├── music.html
    │   │       │   │   └── music.js
    │   │       │   ├── preview/
    │   │       │   │   └── preview.html
    │   │       │   ├── scrawl/
    │   │       │   │   ├── scrawl.css
    │   │       │   │   ├── scrawl.html
    │   │       │   │   └── scrawl.js
    │   │       │   ├── searchreplace/
    │   │       │   │   ├── searchreplace.html
    │   │       │   │   └── searchreplace.js
    │   │       │   ├── snapscreen/
    │   │       │   │   └── snapscreen.html
    │   │       │   ├── spechars/
    │   │       │   │   ├── spechars.html
    │   │       │   │   └── spechars.js
    │   │       │   ├── table/
    │   │       │   │   ├── edittable.css
    │   │       │   │   ├── edittable.html
    │   │       │   │   ├── edittable.js
    │   │       │   │   ├── edittd.html
    │   │       │   │   └── edittip.html
    │   │       │   ├── template/
    │   │       │   │   ├── config.js
    │   │       │   │   ├── template.css
    │   │       │   │   ├── template.html
    │   │       │   │   └── template.js
    │   │       │   ├── video/
    │   │       │   │   ├── video.css
    │   │       │   │   ├── video.html
    │   │       │   │   └── video.js
    │   │       │   ├── webapp/
    │   │       │   │   └── webapp.html
    │   │       │   └── wordimage/
    │   │       │       ├── tangram.js
    │   │       │       ├── wordimage.html
    │   │       │       └── wordimage.js
    │   │       ├── lang/
    │   │       │   ├── en/
    │   │       │   │   └── en.js
    │   │       │   └── zh-cn/
    │   │       │       └── zh-cn.js
    │   │       ├── themes/
    │   │       │   ├── default/
    │   │       │   │   ├── css/
    │   │       │   │   │   └── ueditor.css
    │   │       │   │   └── dialogbase.css
    │   │       │   └── iframe.css
    │   │       ├── third-party/
    │   │       │   ├── SyntaxHighlighter/
    │   │       │   │   ├── shCore.js
    │   │       │   │   └── shCoreDefault.css
    │   │       │   ├── codemirror/
    │   │       │   │   ├── codemirror.css
    │   │       │   │   └── codemirror.js
    │   │       │   ├── highcharts/
    │   │       │   │   ├── adapters/
    │   │       │   │   │   ├── mootools-adapter.js
    │   │       │   │   │   ├── mootools-adapter.src.js
    │   │       │   │   │   ├── prototype-adapter.js
    │   │       │   │   │   ├── prototype-adapter.src.js
    │   │       │   │   │   ├── standalone-framework.js
    │   │       │   │   │   └── standalone-framework.src.js
    │   │       │   │   ├── highcharts-more.js
    │   │       │   │   ├── highcharts-more.src.js
    │   │       │   │   ├── highcharts.js
    │   │       │   │   ├── highcharts.src.js
    │   │       │   │   ├── modules/
    │   │       │   │   │   ├── annotations.js
    │   │       │   │   │   ├── annotations.src.js
    │   │       │   │   │   ├── canvas-tools.js
    │   │       │   │   │   ├── canvas-tools.src.js
    │   │       │   │   │   ├── data.js
    │   │       │   │   │   ├── data.src.js
    │   │       │   │   │   ├── drilldown.js
    │   │       │   │   │   ├── drilldown.src.js
    │   │       │   │   │   ├── exporting.js
    │   │       │   │   │   ├── exporting.src.js
    │   │       │   │   │   ├── funnel.js
    │   │       │   │   │   ├── funnel.src.js
    │   │       │   │   │   ├── heatmap.js
    │   │       │   │   │   ├── heatmap.src.js
    │   │       │   │   │   ├── map.js
    │   │       │   │   │   ├── map.src.js
    │   │       │   │   │   ├── no-data-to-display.js
    │   │       │   │   │   └── no-data-to-display.src.js
    │   │       │   │   └── themes/
    │   │       │   │       ├── dark-blue.js
    │   │       │   │       ├── dark-green.js
    │   │       │   │       ├── gray.js
    │   │       │   │       ├── grid.js
    │   │       │   │       └── skies.js
    │   │       │   ├── jquery-1.10.2.js
    │   │       │   ├── video-js/
    │   │       │   │   ├── video-js.css
    │   │       │   │   ├── video.dev.js
    │   │       │   │   └── video.js
    │   │       │   ├── webuploader/
    │   │       │   │   ├── webuploader.css
    │   │       │   │   ├── webuploader.custom.js
    │   │       │   │   ├── webuploader.flashonly.js
    │   │       │   │   ├── webuploader.html5only.js
    │   │       │   │   ├── webuploader.js
    │   │       │   │   └── webuploader.withoutimage.js
    │   │       │   └── zeroclipboard/
    │   │       │       └── ZeroClipboard.js
    │   │       ├── ueditor.all.js
    │   │       ├── ueditor.config.js
    │   │       └── ueditor.parse.js
    │   └── ueditor/
    │       ├── dialogs/
    │       │   ├── anchor/
    │       │   │   └── anchor.html
    │       │   ├── attachment/
    │       │   │   ├── attachment.css
    │       │   │   ├── attachment.html
    │       │   │   └── attachment.js
    │       │   ├── background/
    │       │   │   ├── background.css
    │       │   │   ├── background.html
    │       │   │   └── background.js
    │       │   ├── charts/
    │       │   │   ├── chart.config.js
    │       │   │   ├── charts.css
    │       │   │   ├── charts.html
    │       │   │   └── charts.js
    │       │   ├── emotion/
    │       │   │   ├── emotion.css
    │       │   │   ├── emotion.html
    │       │   │   └── emotion.js
    │       │   ├── gmap/
    │       │   │   └── gmap.html
    │       │   ├── help/
    │       │   │   ├── help.css
    │       │   │   ├── help.html
    │       │   │   └── help.js
    │       │   ├── image/
    │       │   │   ├── image.css
    │       │   │   ├── image.html
    │       │   │   └── image.js
    │       │   ├── insertframe/
    │       │   │   └── insertframe.html
    │       │   ├── internal.js
    │       │   ├── link/
    │       │   │   └── link.html
    │       │   ├── map/
    │       │   │   ├── map.html
    │       │   │   └── show.html
    │       │   ├── music/
    │       │   │   ├── music.css
    │       │   │   ├── music.html
    │       │   │   └── music.js
    │       │   ├── preview/
    │       │   │   └── preview.html
    │       │   ├── scrawl/
    │       │   │   ├── scrawl.css
    │       │   │   ├── scrawl.html
    │       │   │   └── scrawl.js
    │       │   ├── searchreplace/
    │       │   │   ├── searchreplace.html
    │       │   │   └── searchreplace.js
    │       │   ├── snapscreen/
    │       │   │   └── snapscreen.html
    │       │   ├── spechars/
    │       │   │   ├── spechars.html
    │       │   │   └── spechars.js
    │       │   ├── table/
    │       │   │   ├── edittable.css
    │       │   │   ├── edittable.html
    │       │   │   ├── edittable.js
    │       │   │   ├── edittd.html
    │       │   │   └── edittip.html
    │       │   ├── template/
    │       │   │   ├── config.js
    │       │   │   ├── template.css
    │       │   │   ├── template.html
    │       │   │   └── template.js
    │       │   ├── video/
    │       │   │   ├── video.css
    │       │   │   ├── video.html
    │       │   │   └── video.js
    │       │   ├── webapp/
    │       │   │   └── webapp.html
    │       │   └── wordimage/
    │       │       ├── tangram.js
    │       │       ├── wordimage.html
    │       │       └── wordimage.js
    │       ├── index.html
    │       ├── lang/
    │       │   ├── en/
    │       │   │   └── en.js
    │       │   └── zh-cn/
    │       │       └── zh-cn.js
    │       ├── themes/
    │       │   ├── default/
    │       │   │   ├── css/
    │       │   │   │   └── ueditor.css
    │       │   │   └── dialogbase.css
    │       │   └── iframe.css
    │       ├── third-party/
    │       │   ├── SyntaxHighlighter/
    │       │   │   ├── shCore.js
    │       │   │   └── shCoreDefault.css
    │       │   ├── codemirror/
    │       │   │   ├── codemirror.css
    │       │   │   └── codemirror.js
    │       │   ├── highcharts/
    │       │   │   ├── adapters/
    │       │   │   │   ├── mootools-adapter.js
    │       │   │   │   ├── mootools-adapter.src.js
    │       │   │   │   ├── prototype-adapter.js
    │       │   │   │   ├── prototype-adapter.src.js
    │       │   │   │   ├── standalone-framework.js
    │       │   │   │   └── standalone-framework.src.js
    │       │   │   ├── highcharts-more.js
    │       │   │   ├── highcharts-more.src.js
    │       │   │   ├── highcharts.js
    │       │   │   ├── highcharts.src.js
    │       │   │   ├── modules/
    │       │   │   │   ├── annotations.js
    │       │   │   │   ├── annotations.src.js
    │       │   │   │   ├── canvas-tools.js
    │       │   │   │   ├── canvas-tools.src.js
    │       │   │   │   ├── data.js
    │       │   │   │   ├── data.src.js
    │       │   │   │   ├── drilldown.js
    │       │   │   │   ├── drilldown.src.js
    │       │   │   │   ├── exporting.js
    │       │   │   │   ├── exporting.src.js
    │       │   │   │   ├── funnel.js
    │       │   │   │   ├── funnel.src.js
    │       │   │   │   ├── heatmap.js
    │       │   │   │   ├── heatmap.src.js
    │       │   │   │   ├── map.js
    │       │   │   │   ├── map.src.js
    │       │   │   │   ├── no-data-to-display.js
    │       │   │   │   └── no-data-to-display.src.js
    │       │   │   └── themes/
    │       │   │       ├── dark-blue.js
    │       │   │       ├── dark-green.js
    │       │   │       ├── gray.js
    │       │   │       ├── grid.js
    │       │   │       └── skies.js
    │       │   ├── jquery-1.10.2.js
    │       │   ├── video-js/
    │       │   │   ├── video-js.css
    │       │   │   ├── video.dev.js
    │       │   │   └── video.js
    │       │   ├── webuploader/
    │       │   │   ├── webuploader.css
    │       │   │   ├── webuploader.custom.js
    │       │   │   ├── webuploader.flashonly.js
    │       │   │   ├── webuploader.html5only.js
    │       │   │   ├── webuploader.js
    │       │   │   └── webuploader.withoutimage.js
    │       │   └── zeroclipboard/
    │       │       └── ZeroClipboard.js
    │       ├── ueditor.all.js
    │       ├── ueditor.config.js
    │       └── ueditor.parse.js
    ├── src/
    │   ├── App.vue
    │   ├── common/
    │   │   ├── axios.js
    │   │   ├── city.json
    │   │   └── config.js
    │   ├── components/
    │   │   ├── AddCategory.vue
    │   │   ├── Good.vue
    │   │   ├── Pro.vue
    │   │   ├── addnav.vue
    │   │   ├── header.vue
    │   │   ├── list/
    │   │   │   └── List-a.vue
    │   │   ├── navTo.vue
    │   │   ├── sku copy.vue
    │   │   ├── sku.vue
    │   │   └── time_range/
    │   │       └── time_range.vue
    │   ├── main.js
    │   ├── router.js
    │   └── views/
    │       ├── Home.vue
    │       ├── PicList.vue
    │       ├── ad/
    │       │   ├── ad.vue
    │       │   ├── article.vue
    │       │   ├── hot.vue
    │       │   └── nav.vue
    │       ├── backup/
    │       │   └── backup.vue
    │       ├── data/
    │       │   ├── data-old.vue
    │       │   └── data.vue
    │       ├── extend/
    │       │   ├── addcoupon.vue
    │       │   ├── coupon.vue
    │       │   └── extend.vue
    │       ├── login/
    │       │   ├── Login.vue
    │       │   └── lout.vue
    │       ├── money/
    │       │   └── money.vue
    │       ├── order/
    │       │   ├── Details.vue
    │       │   ├── evaluate.vue
    │       │   ├── new_order.vue
    │       │   └── order.vue
    │       ├── product/
    │       │   ├── Good.vue
    │       │   ├── addtemplate.vue
    │       │   ├── category.vue
    │       │   ├── ed.vue
    │       │   ├── edittemplate.vue
    │       │   ├── new_product.vue
    │       │   └── template.vue
    │       ├── set/
    │       │   ├── Set-a.vue
    │       │   ├── Set-b.vue
    │       │   └── set.vue
    │       ├── set_gift/
    │       │   └── set_gift.vue
    │       └── user/
    │           ├── point.vue
    │           └── user.vue
    └── vue.config.js

================================================
FILE CONTENTS
================================================

================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.


================================================
FILE: README.md
================================================
# ruhua

#### 介绍
如花商城是基于Thinkphp6+uniapp+element开发的一套新零售移动电商系统,采用三端分离。
功能包含商城、优惠券、分销、拼团、限时折扣、积分等功能,更适合企业二次开发;
微信小程序端,微信公众号端,APP端。
匆匆上线,还有很多不完善,疯狂迭代中...

##### 官网: https://mall.telidy.cn/
##### QQ群: 425462686


#### 安装与使用教程 
1.  前端商城:uniapp运行
2.  后台cms安装:npm install 
3.  后台cms运行:npm run serve

#### 扫码演示 
请到官网查看:https://mall.telidy.cn/

#### 后台
演示: http://demo.telidy.cn/one_cms/#/login
仓库:https://github.com/baok1592/ruhua

#### 开源版使用须知
1.  允许用于个人学习、毕业设计、教学案例、公益事业
2.  如果商用必须保留版权信息,请自觉遵守。开源版不适合商用,商用请购买商业版
3.  禁止将本项目的代码和资源进行任何形式的出售,产生的一切任何后果责任由侵权者自负


================================================
FILE: 前端商城/.gitignore
================================================
/unpackage
package-lock.json

*.log
 
.travis.yml
LICENSE.txt
composer.json
composer.lock

================================================
FILE: 前端商城/App.vue
================================================
<script>
	import {XcxToken} from '@/common/xcx_token.js'
	import {WxToken} from '@/common/wx_token.js'	
	import {AppToken} from '@/common/app_token.js'	
	var xcxtoken = new XcxToken();
	var wxtoken = new WxToken();
	var apptoken = new AppToken(); 
 
	export default { 
		onLaunch: function(options) { 
			// #ifdef MP-WEIXIN
				xcxtoken.verify(); //小程序获取token 
			// #endif
			
			// #ifdef H5 
				//微信公众号获取token -必须是认证的服务号 
				console.log("h5")
			//	wxtoken.verify('userinfo'); //静默获取openid					
			// #endif
			
			// #ifdef APP-PLUS 
				apptoken.verify();
			// #endif
			
		},
		onShow: function() {
			console.log('App Show')			
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>


<style lang='scss'> 
	@import "./common/uni.css"; 

	@font-face {
		font-family: yticon;
		font-weight: normal;
		font-style: normal;
		src: url('https://at.alicdn.com/t/font_1078604_w4kpxh0rafi.ttf') format('truetype');
	}
	
	.yticon {
		font-family: "yticon" !important;
		font-size: 16px;
		font-style: normal;
		-webkit-font-smoothing: antialiased;
		-moz-osx-font-smoothing: grayscale;
	}

	.icon-yiguoqi1:before {
		content: "\e700";
	}

	.icon-iconfontshanchu1:before {
		content: "\e619";
	}

	.icon-iconfontweixin:before {
		content: "\e611";
	}

	.icon-alipay:before {
		content: "\e636";
	}

	.icon-shang:before {
		content: "\e624";
	}

	.icon-shouye:before {
		content: "\e626";
	}

	.icon-shanchu4:before {
		content: "\e622";
	}

	.icon-xiaoxi:before {
		content: "\e618";
	}

	.icon-jiantour-copy:before {
		content: "\e600";
	}

	.icon-fenxiang2:before {
		content: "\e61e";
	}

	.icon-pingjia:before {
		content: "\e67b";
	}

	.icon-daifukuan:before {
		content: "\e68f";
	}

	.icon-pinglun-copy:before {
		content: "\e612";
	}

	.icon-dianhua-copy:before {
		content: "\e621";
	}

	.icon-shoucang:before {
		content: "\e645";
	}

	.icon-xuanzhong2:before {
		content: "\e62f";
	}

	.icon-gouwuche_:before {
		content: "\e630";
	}

	.icon-icon-test:before {
		content: "\e60c";
	}

	.icon-icon-test1:before {
		content: "\e632";
	}

	.icon-bianji:before {
		content: "\e646";
	}

	.icon-jiazailoading-A:before {
		content: "\e8fc";
	}

	.icon-zuoshang:before {
		content: "\e613";
	}

	.icon-jia2:before {
		content: "\e60a";
	}

	.icon-huifu:before {
		content: "\e68b";
	}

	.icon-sousuo:before {
		content: "\e7ce";
	}

	.icon-arrow-fine-up:before {
		content: "\e601";
	}

	.icon-hot:before {
		content: "\e60e";
	}

	.icon-lishijilu:before {
		content: "\e6b9";
	}

	.icon-zhengxinchaxun-zhifubaoceping-:before {
		content: "\e616";
	}

	.icon-naozhong:before {
		content: "\e64a";
	}

	.icon-xiatubiao--copy:before {
		content: "\e608";
	}

	.icon-shoucang_xuanzhongzhuangtai:before {
		content: "\e6a9";
	}

	.icon-jia1:before {
		content: "\e61c";
	}

	.icon-bangzhu1:before {
		content: "\e63d";
	}

	.icon-arrow-left-bottom:before {
		content: "\e602";
	}

	.icon-arrow-right-bottom:before {
		content: "\e603";
	}

	.icon-arrow-left-top:before {
		content: "\e604";
	}

	.icon-icon--:before {
		content: "\e744";
	}

	.icon-zuojiantou-up:before {
		content: "\e605";
	}

	.icon-xia:before {
		content: "\e62d";
	}

	.icon--jianhao:before {
		content: "\e60b";
	}

	.icon-weixinzhifu:before {
		content: "\e61a";
	}

	.icon-comment:before {
		content: "\e64f";
	}

	.icon-weixin:before {
		content: "\e61f";
	}

	.icon-fenlei1:before {
		content: "\e620";
	}

	.icon-erjiye-yucunkuan:before {
		content: "\e623";
	}

	.icon-Group-:before {
		content: "\e688";
	}

	.icon-you:before {
		content: "\e606";
	}

	.icon-forward:before {
		content: "\e607";
	}

	.icon-tuijian:before {
		content: "\e610";
	}

	.icon-bangzhu:before {
		content: "\e679";
	}

	.icon-share:before {
		content: "\e656";
	}

	.icon-yiguoqi:before {
		content: "\e997";
	}

	.icon-shezhi1:before {
		content: "\e61d";
	}

	.icon-fork:before {
		content: "\e61b";
	}

	.icon-kafei:before {
		content: "\e66a";
	}

	.icon-iLinkapp-:before {
		content: "\e654";
	}

	.icon-saomiao:before {
		content: "\e60d";
	}

	.icon-shezhi:before {
		content: "\e60f";
	}

	.icon-shouhoutuikuan:before {
		content: "\e631";
	}

	.icon-gouwuche:before {
		content: "\e609";
	}

	.icon-dizhi:before {
		content: "\e614";
	}

	.icon-fenlei:before {
		content: "\e706";
	}

	.icon-xingxing:before {
		content: "\e70b";
	}

	.icon-tuandui:before {
		content: "\e633";
	}

	.icon-zuanshi:before {
		content: "\e615";
	}

	.icon-zuo:before {
		content: "\e63c";
	}

	.icon-shoucang2:before {
		content: "\e62e";
	}

	.icon-shouhuodizhi:before {
		content: "\e712";
	}

	.icon-yishouhuo:before {
		content: "\e71a";
	}

	.icon-dianzan-ash:before {
		content: "\e617";
	}





	view,
	scroll-view,
	swiper,
	swiper-item,
	cover-view,
	cover-image,
	icon,
	text,
	rich-text,
	progress,
	button,
	checkbox,
	form,
	input,
	label,
	radio,
	slider,
	switch,
	textarea,
	navigator,
	audio,
	camera,
	image,
	video {
		box-sizing: border-box;
	}

	/* 骨架屏替代方案 */
	.Skeleton {
		background: #f3f3f3;
		padding: 20upx 0;
		border-radius: 8upx;
	}

	/* 图片载入替代方案 */
	.image-wrapper {
		font-size: 0;
		background: #f3f3f3;
		border-radius: 4px;

		image {
			width: 100%;
			height: 100%;
			transition: .6s;
			opacity: 0;

			&.loaded {
				opacity: 1;
			}
		}
	}

	.clamp {
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
		display: block;
	}

	.common-hover {
		background: #f5f5f5;
	}

	/*边框*/
	.b-b:after,
	.b-t:after {
		position: absolute;
		z-index: 3;
		left: 0;
		right: 0;
		height: 0;
		content: '';
		transform: scaleY(.5);
		border-bottom: 1px solid $border-color-base;
	}

	.b-b:after {
		bottom: 0;
	}

	.b-t:after {
		top: 0;
	}

	/* button样式改写 */
	uni-button,
	button {
		height: 80upx;
		line-height: 80upx;
		font-size: $font-lg + 2upx;
		font-weight: normal;

		&.no-border:before,
		&.no-border:after {
			border: 0;
		}
	}

	uni-button[type=default],
	button[type=default] {
		color: $font-color-dark;
	}

	/* input 样式 */
	.input-placeholder {
		color: #999999;
	}

	.placeholder {
		color: #999999;
	}
</style>


================================================
FILE: 前端商城/README.md
================================================
## 如花商城单商户-1.233

1、请全局搜索 “如花” 自行替换为你的商城名称
2、common/config.js 替换Api_url为API网址,公众号打包时设置为/../
3、app.vue中可屏蔽公众号登陆,实现浏览器访问便于调试
4、小程序注意修改manifest.json中的小程序appid

 

================================================
FILE: 前端商城/common/app.css
================================================
/*app.wxss*/

page {
	background: #fafafa;
	font-size: 32rpx;
}

.container {
	display: flex;
	flex-direction: column;
	box-sizing: border-box;
}

.phcolor {
	color: #ccc;
	font-size: 32rpx;
}

button::after {
	border: none;
}

.opcity {
	opacity: 0.5;
}

.hover {
	background: #f7f7f9 !important;
}

.ellipsis {
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

/*列表统一样式 */

.list-item {
	position: relative;
}

.list-item::after {
	content: '';
	position: absolute;
	border-bottom: 1upx solid #eaeef1;
	-webkit-transform: scaleY(0.5);
	transform: scaleY(0.5);
	bottom: 0;
	right: 0;
	left: 30rpx;
}

.last::after {
	border-bottom: 0 !important;
}

/*按钮样式*/

.btn-primary {
	width: 100%;
	height: 90rpx;
	line-height: 90rpx;
	background: linear-gradient(-90deg, #5677fc, #5c8dff);
	border-radius: 45rpx;
	color: #fff;
	font-size: 36rpx;
}

.btn-hover {
	color: #d5d4d9;
	background: linear-gradient(-90deg, #4a67d6, #4e77d9);
}

.btn-gray {
	background: #ededed;
	color: #999 !important;
}

.btn-gray-hover {
	background: #d5d5d5 !important;
	color: #898989;
}

.btn-white {
	background: #fff;
	color: #333 !important;
}

.tui-white-hover {
	background: #e5e5e5 !important;
	color: #2e2e2e !important;
}

.btn-disabled {
	color: #fafbfc !important;
	background: linear-gradient(-90deg, #cad8fb, #c9d3fb);
}


================================================
FILE: 前端商城/common/app_token.js
================================================
import {Api_url} from './config'
import http from './axios.js'

class AppToken {
	constructor() { 
		this.verifyUrl = Api_url + 'auth/token_verify'; 
	}

	//初始化登陆
	verify() { 
		console.log("app验证token") 
		var token = uni.getStorageSync('token'); //获取缓存2
		if (!token) { 
			this.login_page();
		} else {
			this._veirfyFromServer(token); //验证token是否过期,过期调用.getTokenFromServer函数获取
		} 
	}
	//验证token
	_veirfyFromServer(token) {
		var that = this;
		uni.request({
			url: that.verifyUrl,
			method: 'POST',
			data: {
				token: token
			},
			success: function(res) {
				var valid = res.data.isValid;
				if (!valid) {
					that.login_page();
				}
			}
		})
	}
	 
	login_page(){
		let gl=1
		http.get("index/user/sys_config").then(res=>{
			for (let k in res.data) { 
				let v = res.data[k]
				if(v.key=="merge_mode"){
					gl=v.value
				} 
			} 
			if (gl == 1) {
				uni.redirectTo({
					url: '/pages/login/login'
				})
			} else if (gl == 2) {
				uni.redirectTo({
					url: '/pages/login/loginA/loginA'
				})
			} else{
				uni.redirectTo({
					url: '/pages/login/loginB/loginB'
				}) 
			} 
		})    
	}
	
	
}
export {
	AppToken
};




================================================
FILE: 前端商城/common/axios.js
================================================
import {Api_url} from './config'
// import {Token} from './token.js'
// var token = new Token();

export default { 
	async post(url, param,yanci=false) {
		if(yanci){ 
			uni.showLoading({
				title:'加载中'
			})
			setTimeout(()=>{
				uni.hideLoading()
			},3000)			
		}
		const res = await this.uni_request(url,param,'post')  
		if(yanci){
			setTimeout(()=>{
				uni.hideLoading()
			},200)	
		}
		return res;
	},
	async get(url, param,yanci=false) {
		if(yanci){ 
			uni.showLoading({
				title:'加载中'
			})
			setTimeout(()=>{
				uni.hideLoading()
			},3000)			
		}
		const res = await this.uni_request(url,param,'get') 
		if(yanci){
			setTimeout(()=>{
				uni.hideLoading()
			},200)
		}
		return res;
	}, 
	async put(url, param) {
		const res = await this.uni_request(url,param,'put') 
		return res;
	}, 
	uni_request(url,param,method,again_quest=false) {
		const that=this
	    return new Promise((cback, reject) => {
	    	uni.request({
	    		url: Api_url + url,
	    		data: param,
	    		method:method,
	    		header: {
					token:uni.getStorageSync("token")  	    		 	    			
	    		},
	    	}).then(data => { //data为一个数组,数组第一项为错误信息,第二项为返回数据
	    		var [error, res] = data;
	    		var res_code = res.statusCode.toString(); 
	    		if (res_code.charAt(0) == 2) { 
	    			if(res_code==200){
	    				console.log('200',url)
	    				cback(res.data); 
	    			}else{
						console.log('201',url)
						uni.showToast({
							title:res.data.msg,
							icon:'none'
						})
					}
				}else{
					if(res_code==401){
						//登录失效
						console.log('401',url) 
						if(again_quest){
							// token.getTokenFromServer(()=>{
							// 	const again_res=that.uni_request(url,param,method,false)	
							// 	//注意这里需要cback,因为是上一个promis的cback
							// 	cback(again_res); 
							// });				
						}else{
							console.log('再次登陆仍然失败',url)
						} 
					}else{
						console.log('400/500',url,error,res)
						uni.showToast({
							title:res.data.msg?res.data.msg:'请求异常',
							icon:'none'
						})
					}
				}	
			}).catch(err => { 
				console.log('catch:',err);					 
			})
		})	
	}, 

}


================================================
FILE: 前端商城/common/cache/user.js
================================================
//  用户的缓存数据 
import http from '../axios.js'

var time = Date.parse(new Date()) / 1000

class CUser { 
	constructor() {  
		
	}
	
	info(){   
		const token=uni.getStorageSync('token')
		if(!token) return; 
		const my=uni.getStorageSync('my')
		if(my && (my.save_time+3600*2)>time){
			return my.data
		}
		return http.get('/user/info').then(res => { 
			let arr={}
			arr['data'] = res.data
			arr['save_time']=time
			uni.setStorageSync('my', arr);//放入缓存
			return res.data			
		})
	}
	
	async info_wait(){ 
		const my=uni.getStorageSync('my')
		if(my.data && my.data.headpic && (my.save_time+3600*2)>time){
			return my.data
		}
		
		return http.get('/user/info').then(res => { 
			let arr={}
			arr['data'] = res.data
			arr['save_time']=time
			uni.setStorageSync('my', arr);//放入缓存
			return res.data			
		})
	}
	
	async reset_storage(){ 
			return http.get('/user/info').then(res => { 
				let arr={}
				arr['data'] = res.data
				arr['save_time']=time
				uni.setStorageSync('my', arr);//放入缓存
				return res.data			
			})
		
	}
} 


export { CUser };

================================================
FILE: 前端商城/common/cache.js
================================================

import productModel from "@/model/product.js"
var time = Date.parse(new Date()) / 1000

export default { 
	_set_home_cache(res){  
		console.log('11')
		console.log(res[0])
		let arr={}
		arr['data'] = res
		arr['cache_time']=time
		uni.setStorageSync('home', arr);//放入缓存
		console.log('set')
	},
	//第一次设置缓存
	_set_product_cache(res){
		console.log("productCache")
		uni.removeStorageSync('product')
		let goods={
			data:{},
			pro_time:time+60*20
		}
		goods.data[res.goods_id]=res 
		uni.setStorageSync('product',goods)
	},
	
	
	async get_pro_detail(id,xiala){
		let cache=uni.getStorageSync('product')
		if(cache.pro_time && time < cache.pro_time){ // 时间戳是否过期
			if(cache.data[id] && xiala==false){ // 查询缓存,存在就返回
				return {
					data:cache.data[id]
				};
			}else{ // 查询缓存,不存在就进行请求加入缓存再返回				
				return productModel.getProduct(id).then(res=>{
					const pro =res.data
					cache.data[pro.goods_id]=pro
					uni.removeStorageSync('product')
					uni.setStorageSync('product',cache)
					return res;
				})
			}
			return
		}else{
			const pro_data=await productModel.getProduct(id).then(res=>{
				this._set_product_cache(res.data)
				return res				
			})
			return pro_data;
		}	
	},
}  

================================================
FILE: 前端商城/common/check.js
================================================
import {
	Api_url
} from '@/common/config.js'
import Vue from 'vue'
var x = 0
export default {
	GetUrlParame(parameName) {
		/// 获取地址栏指定参数的值
		/// <param name="parameName">参数名</param>
		// 获取url中跟在问号后面的部分
		var parames = window.location.search
		// 检测参数是否存在
		if (parames.indexOf(parameName) > -1) {
			var parameValue = ''
			parameValue = parames.substring(parames.indexOf(parameName), parames.length)
			// 检测后面是否还有参数
			if (parameValue.indexOf('&') > -1) {
				// 去除后面多余的参数, 得到最终 parameName=parameValue 形式的值
				parameValue = parameValue.substring(0, parameValue.indexOf('&'))
				// 去掉参数名, 得到最终纯值字符串
				parameValue = parameValue.replace(parameName + '=', '')
				return parameValue
			}
			return ''
		}
	},
	check_login_xcx() {
		let token = uni.getStorageSync('token')
		var that = this; 
		return uni.request({
			url: Api_url + 'auth/token_verify',
			method: 'POST',
			data: {
				token: token
			},
			success: function(res) {
				var valid = res.data.isValid;
				console.log(res)
				if (!valid || res.data.statusCode == 401) {
					console.log('token不存在')
					x = 0
				} else {
					x = 1
				}
				console.log(x)
				return x 
				
			}
		})
		

	},
	
	check_login_h5(e=''){ 
			let type=''
			if(e=='userinfo'){ 
				type='userinfo'
			}  
			const code = this.GetUrlParame('code') // 截取code  
			var domine = window.location.href.split("#")[0]; // 微信会自动识别#    并且清除#后面的内容 
			var domine = domine.split("?code")[0]; 
			if (!code) {
				console.log('获取code')		
				var token = uni.getStorageSync('token'); //获取缓存
				// var token = 'db6e572e7ac70c20b4ec91cabaaa' //获取缓存
				if (!token) { 
					console.log('token不存在')
					return x = 0
				}else{
					return x = 1
				}
				
			} 
	},
	
	check_login_APP(){
		var token = uni.getStorageSync('token');
		if (!token) {
			console.log('token不存在')
			return  0
		}else{
			return  1
		}
	},
	
	async judge_gl() {
		//1 微信    2 微信+手机    3 手机
		const swtich=await Vue.prototype.promise_switch.then(res=>{
			return res;
		})
		console.log("xxa:",swtich)
		let gl =  swtich.merge_mode
		if (gl == 1) {
			uni.redirectTo({
				url: '/pages/login/login'
			})
		} else if (gl == 2) {
			console.log('开始跳转')
			uni.redirectTo({
				url: '/pages/login/loginA/loginA'
			})
		} else if (gl == 3) {
			uni.redirectTo({
				url: '/pages/login/loginB/loginB'
			}) 
		}

	},

	async a() {
		const that = this
		
		// #ifdef MP-WEIXIN
			let is_login =await that.check_login_xcx()
			console.log('xcx', is_login)
		// #endif
		
		// #ifdef H5
			let is_login =await that.check_login_h5()
			console.log('h5', is_login)
		// #endif
		
		// #ifdef APP-PLUS
		let is_login =await that.check_login_APP()
		console.log('App', is_login)
		// #endif
		
		
		
		if (is_login == 0) {
			that.judge_gl()
			return false
		}
		if (is_login == 1) {
			return true
		}
	}
}


================================================
FILE: 前端商城/common/config.js
================================================
const Api_url='/../'
export {
	Api_url
}


================================================
FILE: 前端商城/common/filters/filters.js
================================================
const new_price = (price) => {
	if(price > 1){
		price = Math.floor(price)
	}else{
		price = price
	}
	return price
}
const count_price = (price)=>{
	price = Math.floor(price * 100)/100
	return price.toFixed(2)
}
const date_filter = (v,new_date) => {
	let date = new Date(v * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
	var Y = date.getFullYear() + '-';
	var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
	var D = date.getDate() + ' ';
	var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
	var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes());
	var s = date.getSeconds();
	if(new_date == "M-D h-m"){
		return M + D + h + m
	}
	if(!new_date){
		return Y + M + D + h + m + s
	}
	
}
export{
	new_price,
	count_price,
	date_filter
}


================================================
FILE: 前端商城/common/h5_pay.js
================================================
!function(e,n){"function"==typeof define&&(define.amd||define.cmd)?define(function(){return n(e)}):n(e,!0)}(window,function(o,e){if(!o.jWeixin){var n,c={config:"preVerifyJSAPI",onMenuShareTimeline:"menu:share:timeline",onMenuShareAppMessage:"menu:share:appmessage",onMenuShareQQ:"menu:share:qq",onMenuShareWeibo:"menu:share:weiboApp",onMenuShareQZone:"menu:share:QZone",previewImage:"imagePreview",getLocation:"geoLocation",openProductSpecificView:"openProductViewWithPid",addCard:"batchAddCard",openCard:"batchViewCard",chooseWXPay:"getBrandWCPayRequest",openEnterpriseRedPacket:"getRecevieBizHongBaoRequest",startSearchBeacons:"startMonitoringBeacons",stopSearchBeacons:"stopMonitoringBeacons",onSearchBeacons:"onBeaconsInRange",consumeAndShareCard:"consumedShareCard",openAddress:"editAddress"},a=function(){var e={};for(var n in c)e[c[n]]=n;return e}(),i=o.document,t=i.title,r=navigator.userAgent.toLowerCase(),s=navigator.platform.toLowerCase(),d=!(!s.match("mac")&&!s.match("win")),u=-1!=r.indexOf("wxdebugger"),l=-1!=r.indexOf("micromessenger"),p=-1!=r.indexOf("android"),f=-1!=r.indexOf("iphone")||-1!=r.indexOf("ipad"),m=(n=r.match(/micromessenger\/(\d+\.\d+\.\d+)/)||r.match(/micromessenger\/(\d+\.\d+)/))?n[1]:"",g={initStartTime:L(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},h={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:f?1:p?2:-1,clientVersion:m,url:encodeURIComponent(location.href)},v={},S={_completes:[]},y={state:0,data:{}};O(function(){g.initEndTime=L()});var I=!1,_=[],w={config:function(e){B("config",v=e);var t=!1!==v.check;O(function(){if(t)M(c.config,{verifyJsApiList:C(v.jsApiList),verifyOpenTagList:C(v.openTagList)},function(){S._complete=function(e){g.preVerifyEndTime=L(),y.state=1,y.data=e},S.success=function(e){h.isPreVerifyOk=0},S.fail=function(e){S._fail?S._fail(e):y.state=-1};var t=S._completes;return t.push(function(){!function(){if(!(d||u||v.debug||m<"6.0.2"||h.systemType<0)){var i=new Image;h.appId=v.appId,h.initTime=g.initEndTime-g.initStartTime,h.preVerifyTime=g.preVerifyEndTime-g.preVerifyStartTime,w.getNetworkType({isInnerInvoke:!0,success:function(e){h.networkType=e.networkType;var n="https://open.weixin.qq.com/sdk/report?v="+h.version+"&o="+h.isPreVerifyOk+"&s="+h.systemType+"&c="+h.clientVersion+"&a="+h.appId+"&n="+h.networkType+"&i="+h.initTime+"&p="+h.preVerifyTime+"&u="+h.url;i.src=n}})}}()}),S.complete=function(e){for(var n=0,i=t.length;n<i;++n)t[n]();S._completes=[]},S}()),g.preVerifyStartTime=L();else{y.state=1;for(var e=S._completes,n=0,i=e.length;n<i;++n)e[n]();S._completes=[]}}),w.invoke||(w.invoke=function(e,n,i){o.WeixinJSBridge&&WeixinJSBridge.invoke(e,x(n),i)},w.on=function(e,n){o.WeixinJSBridge&&WeixinJSBridge.on(e,n)})},ready:function(e){0!=y.state?e():(S._completes.push(e),!l&&v.debug&&e())},error:function(e){m<"6.0.2"||(-1==y.state?e(y.data):S._fail=e)},checkJsApi:function(e){M("checkJsApi",{jsApiList:C(e.jsApiList)},(e._complete=function(e){if(p){var n=e.checkResult;n&&(e.checkResult=JSON.parse(n))}e=function(e){var n=e.checkResult;for(var i in n){var t=a[i];t&&(n[t]=n[i],delete n[i])}return e}(e)},e))},onMenuShareTimeline:function(e){P(c.onMenuShareTimeline,{complete:function(){M("shareTimeline",{title:e.title||t,desc:e.title||t,img_url:e.imgUrl||"",link:e.link||location.href,type:e.type||"link",data_url:e.dataUrl||""},e)}},e)},onMenuShareAppMessage:function(n){P(c.onMenuShareAppMessage,{complete:function(e){"favorite"===e.scene?M("sendAppMessage",{title:n.title||t,desc:n.desc||"",link:n.link||location.href,img_url:n.imgUrl||"",type:n.type||"link",data_url:n.dataUrl||""}):M("sendAppMessage",{title:n.title||t,desc:n.desc||"",link:n.link||location.href,img_url:n.imgUrl||"",type:n.type||"link",data_url:n.dataUrl||""},n)}},n)},onMenuShareQQ:function(e){P(c.onMenuShareQQ,{complete:function(){M("shareQQ",{title:e.title||t,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},onMenuShareWeibo:function(e){P(c.onMenuShareWeibo,{complete:function(){M("shareWeiboApp",{title:e.title||t,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},onMenuShareQZone:function(e){P(c.onMenuShareQZone,{complete:function(){M("shareQZone",{title:e.title||t,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},updateTimelineShareData:function(e){M("updateTimelineShareData",{title:e.title,link:e.link,imgUrl:e.imgUrl},e)},updateAppMessageShareData:function(e){M("updateAppMessageShareData",{title:e.title,desc:e.desc,link:e.link,imgUrl:e.imgUrl},e)},startRecord:function(e){M("startRecord",{},e)},stopRecord:function(e){M("stopRecord",{},e)},onVoiceRecordEnd:function(e){P("onVoiceRecordEnd",e)},playVoice:function(e){M("playVoice",{localId:e.localId},e)},pauseVoice:function(e){M("pauseVoice",{localId:e.localId},e)},stopVoice:function(e){M("stopVoice",{localId:e.localId},e)},onVoicePlayEnd:function(e){P("onVoicePlayEnd",e)},uploadVoice:function(e){M("uploadVoice",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},downloadVoice:function(e){M("downloadVoice",{serverId:e.serverId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},translateVoice:function(e){M("translateVoice",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},chooseImage:function(e){M("chooseImage",{scene:"1|2",count:e.count||9,sizeType:e.sizeType||["original","compressed"],sourceType:e.sourceType||["album","camera"]},(e._complete=function(e){if(p){var n=e.localIds;try{n&&(e.localIds=JSON.parse(n))}catch(e){}}},e))},getLocation:function(e){},previewImage:function(e){M(c.previewImage,{current:e.current,urls:e.urls},e)},uploadImage:function(e){M("uploadImage",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},downloadImage:function(e){M("downloadImage",{serverId:e.serverId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},getLocalImgData:function(e){!1===I?(I=!0,M("getLocalImgData",{localId:e.localId},(e._complete=function(e){if(I=!1,0<_.length){var n=_.shift();wx.getLocalImgData(n)}},e))):_.push(e)},getNetworkType:function(e){M("getNetworkType",{},(e._complete=function(e){e=function(e){var n=e.errMsg;e.errMsg="getNetworkType:ok";var i=e.subtype;if(delete e.subtype,i)e.networkType=i;else{var t=n.indexOf(":"),o=n.substring(t+1);switch(o){case"wifi":case"edge":case"wwan":e.networkType=o;break;default:e.errMsg="getNetworkType:fail"}}return e}(e)},e))},openLocation:function(e){M("openLocation",{latitude:e.latitude,longitude:e.longitude,name:e.name||"",address:e.address||"",scale:e.scale||28,infoUrl:e.infoUrl||""},e)},getLocation:function(e){M(c.getLocation,{type:(e=e||{}).type||"wgs84"},(e._complete=function(e){delete e.type},e))},hideOptionMenu:function(e){M("hideOptionMenu",{},e)},showOptionMenu:function(e){M("showOptionMenu",{},e)},closeWindow:function(e){M("closeWindow",{},e=e||{})},hideMenuItems:function(e){M("hideMenuItems",{menuList:e.menuList},e)},showMenuItems:function(e){M("showMenuItems",{menuList:e.menuList},e)},hideAllNonBaseMenuItem:function(e){M("hideAllNonBaseMenuItem",{},e)},showAllNonBaseMenuItem:function(e){M("showAllNonBaseMenuItem",{},e)},scanQRCode:function(e){M("scanQRCode",{needResult:(e=e||{}).needResult||0,scanType:e.scanType||["qrCode","barCode"]},(e._complete=function(e){if(f){var n=e.resultStr;if(n){var i=JSON.parse(n);e.resultStr=i&&i.scan_code&&i.scan_code.scan_result}}},e))},openAddress:function(e){M(c.openAddress,{},(e._complete=function(e){e=function(e){return e.postalCode=e.addressPostalCode,delete e.addressPostalCode,e.provinceName=e.proviceFirstStageName,delete e.proviceFirstStageName,e.cityName=e.addressCitySecondStageName,delete e.addressCitySecondStageName,e.countryName=e.addressCountiesThirdStageName,delete e.addressCountiesThirdStageName,e.detailInfo=e.addressDetailInfo,delete e.addressDetailInfo,e}(e)},e))},openProductSpecificView:function(e){M(c.openProductSpecificView,{pid:e.productId,view_type:e.viewType||0,ext_info:e.extInfo},e)},addCard:function(e){for(var n=e.cardList,i=[],t=0,o=n.length;t<o;++t){var r=n[t],a={card_id:r.cardId,card_ext:r.cardExt};i.push(a)}M(c.addCard,{card_list:i},(e._complete=function(e){var n=e.card_list;if(n){for(var i=0,t=(n=JSON.parse(n)).length;i<t;++i){var o=n[i];o.cardId=o.card_id,o.cardExt=o.card_ext,o.isSuccess=!!o.is_succ,delete o.card_id,delete o.card_ext,delete o.is_succ}e.cardList=n,delete e.card_list}},e))},chooseCard:function(e){M("chooseCard",{app_id:v.appId,location_id:e.shopId||"",sign_type:e.signType||"SHA1",card_id:e.cardId||"",card_type:e.cardType||"",card_sign:e.cardSign,time_stamp:e.timestamp+"",nonce_str:e.nonceStr},(e._complete=function(e){e.cardList=e.choose_card_info,delete e.choose_card_info},e))},openCard:function(e){for(var n=e.cardList,i=[],t=0,o=n.length;t<o;++t){var r=n[t],a={card_id:r.cardId,code:r.code};i.push(a)}M(c.openCard,{card_list:i},e)},consumeAndShareCard:function(e){M(c.consumeAndShareCard,{consumedCardId:e.cardId,consumedCode:e.code},e)},chooseWXPay:function(e){M(c.chooseWXPay,V(e),e)},openEnterpriseRedPacket:function(e){M(c.openEnterpriseRedPacket,V(e),e)},startSearchBeacons:function(e){M(c.startSearchBeacons,{ticket:e.ticket},e)},stopSearchBeacons:function(e){M(c.stopSearchBeacons,{},e)},onSearchBeacons:function(e){P(c.onSearchBeacons,e)},openEnterpriseChat:function(e){M("openEnterpriseChat",{useridlist:e.userIds,chatname:e.groupName},e)},launchMiniProgram:function(e){M("launchMiniProgram",{targetAppId:e.targetAppId,path:function(e){if("string"==typeof e&&0<e.length){var n=e.split("?")[0],i=e.split("?")[1];return n+=".html",void 0!==i?n+"?"+i:n}}(e.path),envVersion:e.envVersion},e)},openBusinessView:function(e){M("openBusinessView",{businessType:e.businessType,queryString:e.queryString||"",envVersion:e.envVersion},(e._complete=function(n){if(p){var e=n.extraData;if(e)try{n.extraData=JSON.parse(e)}catch(e){n.extraData={}}}},e))},miniProgram:{navigateBack:function(e){e=e||{},O(function(){M("invokeMiniProgramAPI",{name:"navigateBack",arg:{delta:e.delta||1}},e)})},navigateTo:function(e){O(function(){M("invokeMiniProgramAPI",{name:"navigateTo",arg:{url:e.url}},e)})},redirectTo:function(e){O(function(){M("invokeMiniProgramAPI",{name:"redirectTo",arg:{url:e.url}},e)})},switchTab:function(e){O(function(){M("invokeMiniProgramAPI",{name:"switchTab",arg:{url:e.url}},e)})},reLaunch:function(e){O(function(){M("invokeMiniProgramAPI",{name:"reLaunch",arg:{url:e.url}},e)})},postMessage:function(e){O(function(){M("invokeMiniProgramAPI",{name:"postMessage",arg:e.data||{}},e)})},getEnv:function(e){O(function(){e({miniprogram:"miniprogram"===o.__wxjs_environment})})}}},T=1,k={};return i.addEventListener("error",function(e){if(!p){var n=e.target,i=n.tagName,t=n.src;if("IMG"==i||"VIDEO"==i||"AUDIO"==i||"SOURCE"==i)if(-1!=t.indexOf("wxlocalresource://")){e.preventDefault(),e.stopPropagation();var o=n["wx-id"];if(o||(o=T++,n["wx-id"]=o),k[o])return;k[o]=!0,wx.ready(function(){wx.getLocalImgData({localId:t,success:function(e){n.src=e.localData}})})}}},!0),i.addEventListener("load",function(e){if(!p){var n=e.target,i=n.tagName;n.src;if("IMG"==i||"VIDEO"==i||"AUDIO"==i||"SOURCE"==i){var t=n["wx-id"];t&&(k[t]=!1)}}},!0),e&&(o.wx=o.jWeixin=w),w}function M(n,e,i){o.WeixinJSBridge?WeixinJSBridge.invoke(n,x(e),function(e){A(n,e,i)}):B(n,i)}function P(n,i,t){o.WeixinJSBridge?WeixinJSBridge.on(n,function(e){t&&t.trigger&&t.trigger(e),A(n,e,i)}):B(n,t||i)}function x(e){return(e=e||{}).appId=v.appId,e.verifyAppId=v.appId,e.verifySignType="sha1",e.verifyTimestamp=v.timestamp+"",e.verifyNonceStr=v.nonceStr,e.verifySignature=v.signature,e}function V(e){return{timeStamp:e.timestamp+"",nonceStr:e.nonceStr,package:e.package,paySign:e.paySign,signType:e.signType||"SHA1"}}function A(e,n,i){"openEnterpriseChat"!=e&&"openBusinessView"!==e||(n.errCode=n.err_code),delete n.err_code,delete n.err_desc,delete n.err_detail;var t=n.errMsg;t||(t=n.err_msg,delete n.err_msg,t=function(e,n){var i=e,t=a[i];t&&(i=t);var o="ok";if(n){var r=n.indexOf(":");"confirm"==(o=n.substring(r+1))&&(o="ok"),"failed"==o&&(o="fail"),-1!=o.indexOf("failed_")&&(o=o.substring(7)),-1!=o.indexOf("fail_")&&(o=o.substring(5)),"access denied"!=(o=(o=o.replace(/_/g," ")).toLowerCase())&&"no permission to execute"!=o||(o="permission denied"),"config"==i&&"function not exist"==o&&(o="ok"),""==o&&(o="fail")}return n=i+":"+o}(e,t),n.errMsg=t),(i=i||{})._complete&&(i._complete(n),delete i._complete),t=n.errMsg||"",v.debug&&!i.isInnerInvoke&&alert(JSON.stringify(n));var o=t.indexOf(":");switch(t.substring(o+1)){case"ok":i.success&&i.success(n);break;case"cancel":i.cancel&&i.cancel(n);break;default:i.fail&&i.fail(n)}i.complete&&i.complete(n)}function C(e){if(e){for(var n=0,i=e.length;n<i;++n){var t=e[n],o=c[t];o&&(e[n]=o)}return e}}function B(e,n){if(!(!v.debug||n&&n.isInnerInvoke)){var i=a[e];i&&(e=i),n&&n._complete&&delete n._complete,console.log('"'+e+'",',n||"")}}function L(){return(new Date).getTime()}function O(e){l&&(o.WeixinJSBridge?e():i.addEventListener&&i.addEventListener("WeixinJSBridgeReady",e,!1))}});

================================================
FILE: 前端商城/common/mixin.js
================================================
import Check from '@/common/check.js'
export const common = {
	onLoad(){
		//优先顺序:mixin——onload > page_onload > mixin_onshow > page_onshow
		this.check_login()
	},
	onShow() { 
		
	},
	methods: {
		check_login() { 
			console.log('检查登录')
			if (!Check.a()) {
				return
			}
			this._load()
		},
		
	}
}


================================================
FILE: 前端商城/common/switch.js
================================================
 
import http from './axios.js'
		
export default {
	set_storage(){ 
		return http.get("index/user/sys_config").then(res=>{ 
			let arr = {}
			for (let k in res.data) { 
				let v = res.data[k]
				arr[v.key] = v.value
			}
			console.log("arr:",arr)
			uni.setStorageSync('switch',arr)
			return arr
		})
		
	}
	//获取开关列表
	// get_switch_list(){
	// 	uni.request({
	// 		url:"",
	// 		method::"",
	// 		success(res) {
	// 			console.log(res.data)
	// 			uni.setStorageSync(res)
	// 		}
	// 	})
	// }
}


================================================
FILE: 前端商城/common/uni.css
================================================
@font-face {
	font-family: uniicons;
	font-weight: normal;
	font-style: normal;
	src: url('~@/common/uni.ttf') format('truetype');
} 
.uni-flex {
	display: flex;
	flex-direction: row;
}
.uni-flex-item {
	flex: 1;
}
.uni-row {
	flex-direction: row;
}
.uni-column {
	flex-direction: column;
}
.uni-link{
	color:#576B95;
	font-size:26upx;
}
.uni-center{
	text-align:center;
}
.uni-inline-item{
	display: flex;
	flex-direction: row;
	align-items:center;
}
.uni-inline-item text{
	margin-right: 20upx;
}
.uni-inline-item text:last-child{
	margin-right: 0upx;
	margin-left: 20upx;
}

/* page */
.uni-page-head{
	padding:35upx; 
	text-align: center;
}
.uni-page-head-title {
	display: inline-block;
	padding: 0 40upx;
	font-size: 30upx;
	height: 88upx;
	line-height: 88upx;
	color: #BEBEBE;
	box-sizing: border-box;
	border-bottom: 2upx solid #D8D8D8;
}
.uni-page-body {
	width: 100%;
	flex-grow: 1;
	overflow-x: hidden;
}
.uni-padding-wrap{
	width:690upx;
	padding:0 30upx;
}
.uni-word {
	text-align: center;
	padding:200upx 100upx;
}
.uni-title {
	font-size:30upx;
	font-weight:500;
	padding:20upx 0;
	line-height:1.5;
}
.uni-text{
	font-size:28upx;
}
.uni-title text{
	font-size:24upx; 
	color:#888;
}

.uni-text-gray{
	color: #ccc;
}
.uni-text-small {
	font-size:24upx;
}
.uni-common-mb{
	margin-bottom:30upx;
}
.uni-common-pb{
	padding-bottom:30upx;
}
.uni-common-pl{
	padding-left:30upx;
}
.uni-common-mt{
	margin-top:30upx;
}
/* 背景色 */
.uni-bg-red{
	background:#F76260; color:#FFF;
}
.uni-bg-green{
	background:#09BB07; color:#FFF;
}
.uni-bg-blue{
	background:#007AFF; color:#FFF;
}
/* 标题 */
.uni-h1 {font-size: 80upx; font-weight:700;}
.uni-h2 {font-size: 60upx; font-weight:700;}
.uni-h3 {font-size: 48upx; font-weight:700;}
.uni-h4 {font-size: 36upx; font-weight:700;}
.uni-h5 {font-size: 28upx; color: #8f8f94;}
.uni-h6 {font-size: 24upx; color: #8f8f94;}
.uni-bold{font-weight:bold;}

/* 文本溢出隐藏 */
.uni-ellipsis {overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}

/* 竖向百分百按钮 */
.uni-btn-v{
	padding:10upx 0;
}
.uni-btn-v button{margin:20upx 0;}

/* 表单 */
.uni-form-item{
	display:flex;
	width:100%;
	padding:10upx 0;
}
.uni-form-item .title{
	padding:10upx 25upx;
}
.uni-label {
	width: 210upx;
	word-wrap: break-word;
	word-break: break-all;
	text-indent:20upx;
}
 .uni-input {
	/* height: 50upx;
	padding: 15upx 25upx;
	line-height:50upx; */
	text-indent:20upx;
	/* font-size:28upx; */
	background:#FCFAED;
	flex: 1;
} 
.uni-form-item .with-fun{
	display:flex; 
	flex-wrap:nowrap; 
	background:#FFFFFF;
}
.uni-form-item .with-fun .uni-icon{
	width:40px; 
	height:80upx; 
	line-height:80upx; 
	flex-shrink:0;
}

/* loadmore */
.uni-loadmore{
	height:80upx;
	line-height:80upx;
	text-align:center;
	padding-bottom:30upx;
}
/*数字角标*/
.uni-badge,
.uni-badge-default {
	font-family: 'Helvetica Neue', Helvetica, sans-serif;
	font-size: 12px;
	line-height: 1;
	display: inline-block;
	padding: 3px 6px;
	color: #333;
	border-radius: 100px;
	background-color: rgba(0, 0, 0, .15);
}
.uni-badge.uni-badge-inverted {
	padding: 0 5px 0 0;
	color: #929292;
	background-color: transparent
}
.uni-badge-primary {
	color: #fff;
	background-color: #007aff
}
.uni-badge-blue.uni-badge-inverted,
.uni-badge-primary.uni-badge-inverted {
	color: #007aff;
	background-color: transparent
}
.uni-badge-green,
.uni-badge-success {
	color: #fff;
	background-color: #4cd964;
}
.uni-badge-green.uni-badge-inverted,
.uni-badge-success.uni-badge-inverted {
	color: #4cd964;
	background-color: transparent
}
.uni-badge-warning,
.uni-badge-yellow {
	color: #fff;
	background-color: #f0ad4e
}
.uni-badge-warning.uni-badge-inverted,
.uni-badge-yellow.uni-badge-inverted {
	color: #f0ad4e;
	background-color: transparent
}
.uni-badge-danger,
.uni-badge-red {
	color: #fff;
	background-color: #dd524d
}
.uni-badge-danger.uni-badge-inverted,
.uni-badge-red.uni-badge-inverted {
	color: #dd524d;
	background-color: transparent
}
.uni-badge-purple,
.uni-badge-royal {
	color: #fff;
	background-color: #8a6de9
}
.uni-badge-purple.uni-badge-inverted,
.uni-badge-royal.uni-badge-inverted {
	color: #8a6de9;
	background-color: transparent
}

/*折叠面板 */
.uni-collapse-content {
	height: 0;
	width: 100%;
	overflow: hidden;
}
.uni-collapse-content.uni-active {
	height: auto;
}

/*卡片视图 */
.uni-card {
	background: #fff;
	border-radius: 8upx;
	margin:20upx 0;
	position: relative;
	box-shadow: 0 2upx 4upx rgba(0, 0, 0, .3);
}
.uni-card-content {
	font-size: 30upx;
}
.uni-card-content.image-view{
    width: 100%;
    margin: 0;
}
.uni-card-content-inner {
	position: relative;
	padding: 30upx;
}
.uni-card-footer,
.uni-card-header {
	position: relative;
	display: flex;
	min-height: 50upx;
	padding: 20upx 30upx;
	justify-content: space-between;
	align-items: center;
}
.uni-card-header {
	font-size: 36upx;
}
.uni-card-footer {
	color: #6d6d72;
}
.uni-card-footer:before,
.uni-card-header:after {
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 2upx;
	content: '';
	-webkit-transform: scaleY(.5);
	transform: scaleY(.5);
	background-color: #c8c7cc;
}
.uni-card-header:after {
	top: auto;
	bottom: 0;
}
.uni-card-media {
	justify-content: flex-start;
}
.uni-card-media-logo {
	height: 84upx;
	width: 84upx;
	margin-right: 20upx;
}
.uni-card-media-body {
	height: 84upx;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	align-items: flex-start;
}
.uni-card-media-text-top {
	line-height: 36upx;
	font-size: 34upx;
}
.uni-card-media-text-bottom {
	line-height: 30upx;
	font-size: 28upx;
	color: #8f8f94;
}
.uni-card-link {
	color: #007AFF;
}

/* 列表 */
/*
.uni-list {
	background-color: #FFFFFF;
	position: relative;
	width: 100%;
	display: flex;
	flex-direction: column;
}
.uni-list:after {
	position: absolute;
	z-index: 10;
	right: 0;
	bottom: 0;
	left: 0;
	height: 1upx;
	content: '';
	-webkit-transform: scaleY(.5);
	transform: scaleY(.5);
	background-color: #c8c7cc;
}
.uni-list:before {
	position: absolute;
	z-index: 10;
	right: 0;
	top: 0;
	left: 0;
	height: 1upx;
	content: '';
	-webkit-transform: scaleY(.5);
	transform: scaleY(.5);
	background-color: #c8c7cc;
}
.uni-list-cell {
	position: relative;
	display: flex;
	flex-direction: row;
	justify-content: space-between;
	align-items: center;
}
.uni-list-cell-hover {
	background-color: #eee;
}
.uni-list-cell-pd {
	padding: 22upx 30upx;
}
.uni-list-cell-left {
	font-size:28upx;
	padding: 0 30upx;
}
.uni-list-cell-db,
.uni-list-cell-right {
	flex: 1;
}
.uni-list-cell:after {
	position: absolute;
  z-index: 3;
	right: 0;
	bottom: 0;
	left: 30upx;
	height: 1upx;
	content: '';
	-webkit-transform: scaleY(.5);
	transform: scaleY(.5);
	background-color: #c8c7cc;
}
.uni-list .uni-list-cell:last-child:after {
	height: 0upx;
}
.uni-list-cell-last.uni-list-cell:after {
	height: 0upx;
}
.uni-list-cell-divider {
	position: relative;
	display: flex;
	color: #999;
	background-color: #f7f7f7;
	padding:15upx 20upx;
}
.uni-list-cell-divider:before {
	position: absolute;
	right: 0;
	top: 0;
	left: 0upx;
	height: 1upx;
	content: '';
	-webkit-transform: scaleY(.5);
	transform: scaleY(.5);
	background-color: #c8c7cc;
}
.uni-list-cell-divider:after {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0upx;
	height: 1upx;
	content: '';
	-webkit-transform: scaleY(.5);
	transform: scaleY(.5);
	background-color: #c8c7cc;
}
.uni-list-cell-navigate {
	font-size:30upx;
	padding: 22upx 30upx;
	line-height: 48upx;
	position: relative;
	display: flex;
	box-sizing: border-box;
	width: 100%;
	flex: 1;
	justify-content: space-between;
	align-items: center;
}
.uni-list-cell-navigate {
	padding-right: 36upx;
}
.uni-navigate-badge {
	padding-right: 50upx;
}
.uni-list-cell-navigate.uni-navigate-right:after {
	font-family: uniicons;
	content: '\e583';
	position: absolute;
	right: 24upx;
	top: 50%;
	color: #bbb;
	-webkit-transform: translateY(-50%);
	transform: translateY(-50%);
}
.uni-list-cell-navigate.uni-navigate-bottom:after {
	font-family: uniicons;
	content: '\e581';
	position: absolute;
	right: 24upx;
	top: 50%;
	color: #bbb;
	-webkit-transform: translateY(-50%);
	transform: translateY(-50%);
}
.uni-list-cell-navigate.uni-navigate-bottom.uni-active:after {
	font-family: uniicons;
	content: '\e580';
	position: absolute;
	right: 24upx;
	top: 50%;
	color: #bbb;
	-webkit-transform: translateY(-50%);
	transform: translateY(-50%);
}
.uni-collapse.uni-list-cell {
	flex-direction: column;
}
.uni-list-cell-navigate.uni-active {
	background: #eee;
}
.uni-list.uni-collapse {
	box-sizing: border-box;
	height: 0;
	overflow: hidden;
}
.uni-collapse .uni-list-cell {
	padding-left: 20upx;
}
.uni-collapse .uni-list-cell:after {
	left: 52upx;
}
.uni-list.uni-active {
	height: auto;
}
*/


/* 三行列表 */
.uni-triplex-row {
	display: flex;
	flex: 1;
	width: 100%;
	box-sizing: border-box;
	flex-direction: row;
	padding: 22upx 30upx;
}
.uni-triplex-right,
.uni-triplex-left {
	display: flex;
	flex-direction: column;
}
.uni-triplex-left {
	width: 84%;
}
.uni-triplex-left .uni-title{
	padding:8upx 0;
}
.uni-triplex-left .uni-text, .uni-triplex-left .uni-text-small{color:#999999;}
.uni-triplex-right {
	width: 16%;
	text-align: right;
}

/* 图文列表 */
.uni-media-list {
	padding: 22upx 30upx;
	box-sizing: border-box;
	display: flex;
	width: 100%;
	flex-direction: row;
}
.uni-navigate-right.uni-media-list {
	padding-right: 74upx;
}
.uni-pull-right {
	flex-direction: row-reverse;
}
.uni-pull-right>.uni-media-list-logo {
	margin-right: 0upx;
	margin-left: 20upx;
}
.uni-media-list-logo {
	height: 84upx;
	width: 84upx;
	margin-right: 20upx;
}
.uni-media-list-logo image {
	height: 100%;
	width: 100%;
}
.uni-media-list-body {
	height: 84upx;
	display: flex;
	flex: 1;
	flex-direction: column;
	justify-content: space-between;
	align-items: flex-start;
	overflow: hidden;
}
.uni-media-list-text-top {
	width: 100%;
	line-height: 36upx;
	font-size: 30upx;
}
.uni-media-list-text-bottom {
	width: 100%;
	line-height: 30upx;
	font-size: 26upx;
	color: #8f8f94;
}

/* 九宫格 */
.uni-grid-9 {
	background: #f2f2f2;
	width: 750upx;
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	border-top: 2upx solid #eee;
}
.uni-grid-9-item {
	width: 250upx;
	height: 200upx;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	border-bottom: 2upx solid;
	border-right: 2upx solid;
	border-color: #eee;
	box-sizing: border-box;
}
.no-border-right {
	border-right: none;
}
.uni-grid-9-image {
	width: 100upx;
	height: 100upx;
}
.uni-grid-9-text {
	width: 250upx;
	line-height: 4upx;
	height: 40upx;
	text-align: center;
	font-size: 30upx;
}
.uni-grid-9-item-hover {
	background: rgba(0, 0, 0, 0.1);
}

/* 上传 */
.uni-uploader {
	flex: 1;
	flex-direction: column;
}
.uni-uploader-head {
	display: flex;
	flex-direction: row;
	justify-content: space-between;
}
.uni-uploader-info {
	color: #B2B2B2;
}
.uni-uploader-body {
	margin-top: 16upx;
}
.uni-uploader__files {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
}
.uni-uploader__file {
	margin: 10upx;
	width: 210upx;
	height: 210upx;
}
.uni-uploader__img {
	display: block;
	width: 210upx;
	height: 210upx;
}
.uni-uploader__input-box {
	position: relative;
	margin:10upx;
	width: 208upx;
	height: 208upx;
	border: 2upx solid #D9D9D9;
}
.uni-uploader__input-box:before,
.uni-uploader__input-box:after {
	content: " ";
	position: absolute;
	top: 50%;
	left: 50%;
	-webkit-transform: translate(-50%, -50%);
	transform: translate(-50%, -50%);
	background-color: #D9D9D9;
}
.uni-uploader__input-box:before {
	width: 4upx;
	height: 79upx;
}
.uni-uploader__input-box:after {
	width: 79upx;
	height: 4upx;
}
.uni-uploader__input-box:active {
	border-color: #999999;
}
.uni-uploader__input-box:active:before,
.uni-uploader__input-box:active:after {
	background-color: #999999;
}
.uni-uploader__input {
	position: absolute;
	z-index: 1;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
}

/*问题反馈*/
.feedback-title {
	display: flex;
	flex-direction: row;
	justify-content: space-between;
	align-items: center;
	padding: 20upx;
	color: #8f8f94;
	font-size: 28upx;
}
.feedback-star-view.feedback-title {
	justify-content: flex-start;
	margin: 0;
}
.feedback-quick {
	position: relative;
	padding-right: 40upx;
}
.feedback-quick:after {
	font-family: uniicons;
	font-size: 40upx;
	content: '\e581';
	position: absolute;
	right: 0;
	top: 50%;
	color: #bbb;
	-webkit-transform: translateY(-50%);
	transform: translateY(-50%);
}
.feedback-body {
	background: #fff;
}
.feedback-textare {
	height: 200upx;
	font-size: 34upx;
	line-height: 50upx;
	width: 100%;
	box-sizing: border-box;
	padding: 20upx 30upx 0;
}
.feedback-input {
	font-size: 34upx;
	height: 50upx;
	min-height: 50upx;
	padding: 15upx 20upx;
	line-height: 50upx;
}
.feedback-uploader {
	padding: 22upx 20upx;
}
.feedback-star {
	font-family: uniicons;
	font-size: 40upx;
	margin-left: 6upx;
}
.feedback-star-view {
	margin-left: 20upx;
}
.feedback-star:after {
	content: '\e408';
}
.feedback-star.active {
	color: #FFB400;
}
.feedback-star.active:after {
	content: '\e438';
}
.feedback-submit {
	background: #007AFF;
	color: #FFFFFF;
	margin: 20upx;
}

/* input group */
.uni-input-group {
	position: relative;
	padding: 0;
	border: 0;
	background-color: #fff;
}

.uni-input-group:before {
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 2upx;
	content: '';
	transform: scaleY(.5);
	background-color: #c8c7cc;
}
.margin{
	margin: 20upx;
}
.margin-height{
	margin-bottom: 20upx;
	margin-top: 20upx;
}
.margin-width{
	margin-left: 20upx;
	margin-right: 20upx;
}
.uni-input-group:after {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 2upx;
	content: '';
	transform: scaleY(.5);
	background-color: #c8c7cc;
}

.uni-input-row {
	position: relative;
	display: flex;
	flex-direction: row;
	font-size:28upx;
	padding: 22upx 30upx;
	justify-content: space-between;
}

.uni-input-group .uni-input-row:after {
	position: absolute;
	right: 0upx;
	bottom: 0;
	left: 20upx;
	height: 2upx;
	content: '';
	transform: scaleY(.5);
	background-color: #c8c7cc;
}

.uni-input-row label {
	line-height: 70upx;
}

/* textarea */
.uni-textarea{
	width:100%;
	background:#FFF;
}
.uni-textarea textarea{
	width:96%;
	padding:18upx 2%;
	line-height:1.6;
	font-size:28upx;
	height:150upx;
}

/* tab bar */
.uni-tab-bar {
	display: flex;
	flex: 1;
	flex-direction: column;
	overflow: hidden;
	height: 100%;
}

.uni-tab-bar .list {
	width: 750upx;
	height: 100%;
}

.uni-swiper-tab {
	width: 100%;
	white-space: nowrap;
	line-height: 100upx;
	height: 100upx;
	border-bottom: 1px solid #c8c7cc;
}

.swiper-tab-list {
	font-size: 30upx;
	width: 150upx;
	display: inline-block;
	text-align: center;
	color: #555;
}

.uni-tab-bar .active {
	color: #007AFF;
}

.uni-tab-bar .swiper-box {
	flex: 1;
	width: 100%;
	height: calc(100% - 100upx);
}

.uni-tab-bar-loading{
	padding:20upx 0;
}

/* steps */
.uni-steps{padding:20upx 30upx; flex-grow: 1; display:flex; flex-wrap:wrap;}
.uni-steps view{display:flex; flex-wrap:wrap; float:none;}
.uni-steps .step{width:31.3%; margin:0 1%; flex-wrap:nowrap;}
.uni-steps .step-circle{width:50upx; height:50upx; border-radius:50upx; background:#F1F1F3; justify-content:center; line-height:50upx; flex-shrink:0; margin-right:15upx; color:#666; font-size:28upx;}
.uni-steps .step-content{width:100%; height:22upx; border-bottom:1px solid #F1F2F3;}
.uni-steps .step-title{line-height:50upx; height:50upx; background:#FFFFFF; width:auto; overflow:hidden; padding-right:8upx;}
.uni-steps .current .step-circle{background:#00B26A; color:#FFFFFF;}
.uni-steps .current .step-content{border-color:#00B26A;}
.uni-steps .current .step-title{color:#00B26A;}

/* comment */
.uni-comment{padding:5upx 0; display: flex; flex-grow:1; flex-direction: column;}
.uni-comment-list{flex-wrap:nowrap; padding:10upx 0; margin:10upx 0; width:100%; display: flex;}
.uni-comment-face{width:70upx; height:70upx; border-radius:100%; margin-right:20upx; flex-shrink:0; overflow:hidden;}
.uni-comment-face image{width:100%; border-radius:100%;}
.uni-comment-body{width:100%;}
.uni-comment-top{line-height:1.5em; justify-content:space-between;}
.uni-comment-top text{color:#0A98D5; font-size:24upx;}
.uni-comment-date{line-height:38upx; flex-direction:row; justify-content:space-between; display:flex !important; flex-grow:1;}
.uni-comment-date view{color:#666666; font-size:24upx; line-height:38upx;}
.uni-comment-content{line-height:1.6em; font-size:28upx; padding:8upx 0;}
.uni-comment-replay-btn{background:#FFF; font-size:24upx; line-height:28upx; padding:5upx 20upx; border-radius:30upx; color:#333 !important; margin:0 10upx;}

/* swiper msg */
.uni-swiper-msg{width:100%; padding:12upx 0; flex-wrap:nowrap; display:flex;}
.uni-swiper-msg-icon{width:50upx; margin-right:20upx;}
.uni-swiper-msg-icon image{width:100%; flex-shrink:0;}
.uni-swiper-msg swiper{width:100%; height:50upx;}
.uni-swiper-msg swiper-item{line-height:50upx;}

/* product */
.uni-product-list {
    display: flex;
    width: 100%;
    flex-wrap: wrap;
    flex-direction: row;
}

.uni-product {
    padding: 20upx;
    display: flex;
    flex-direction: column;
}

.image-view {
    height: 330upx;
    width: 330upx;
	margin:12upx 0;
}

.uni-product-image {
    height: 330upx;
    width: 330upx;
}

.uni-product-title {
    width: 300upx;
    word-break: break-all;
    display: -webkit-box;
    overflow: hidden;
	line-height:1.5;
    text-overflow: ellipsis;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.uni-product-price {
	margin-top:10upx;
    font-size: 28upx;
	line-height:1.5;
    position: relative;
}

.uni-product-price-original {
    color: #e80080;
}

.uni-product-price-favour {
    color: #888888;
    text-decoration: line-through;
    margin-left: 10upx;
}

.uni-product-tip {
    position: absolute;
    right: 10upx;
    background-color: #ff3333;
    color: #ffffff;
    padding: 0 10upx;
    border-radius: 5upx;
}

/* timeline */
.uni-timeline {
		margin: 35upx 0;
		display: flex;
		flex-direction: column;
		position: relative;
	}


	.uni-timeline-item {
		display: flex;
		flex-direction: row;
		position: relative;
		padding-bottom: 20upx;
		box-sizing: border-box;
		overflow: hidden;

	}

	.uni-timeline-item .uni-timeline-item-keynode {
		width: 160upx;
		flex-shrink: 0;
		box-sizing: border-box;
		padding-right: 20upx;
		text-align: right;
		line-height: 65upx;
	}

	.uni-timeline-item .uni-timeline-item-divider {
		flex-shrink: 0;
		position: relative;
		width: 30upx;
		height: 30upx;
		top: 15upx;
		border-radius: 50%;
		background-color: #bbb;
	}



	.uni-timeline-item-divider::before,
	.uni-timeline-item-divider::after {
		position: absolute;
		left: 15upx;
		width: 1upx;
		height: 100vh;
		content: '';
		background: inherit;
	}

	.uni-timeline-item-divider::before {
		bottom: 100%;
	}

	.uni-timeline-item-divider::after {
		top: 100%;
	}


	.uni-timeline-last-item .uni-timeline-item-divider:after {
		display: none;
	}

	.uni-timeline-first-item .uni-timeline-item-divider:before {
		display: none;
	}

	.uni-timeline-item .uni-timeline-item-content {
		padding-left: 20upx;
	}
	
	.uni-timeline-last-item .bottom-border::after{
		display: none;
	}
	
	.uni-timeline-item-content .datetime{
		color: #CCCCCC;
	}
	
	/* 自定义节点颜色 */
	.uni-timeline-last-item .uni-timeline-item-divider{
		background-color: #1AAD19;
	}
  
  
/* uni-icon */

.uni-icon {
	font-family: uniicons;
	font-size: 24px;
	font-weight: normal;
	font-style: normal;
	line-height: 1;
	display: inline-block;
	text-decoration: none;
	-webkit-font-smoothing: antialiased;
}

.uni-icon.uni-active {
	color: #007aff;
}

.uni-icon-contact:before {
	content: '\e100';
}

.uni-icon-person:before {
	content: '\e101';
}

.uni-icon-personadd:before {
	content: '\e102';
}

.uni-icon-contact-filled:before {
	content: '\e130';
}

.uni-icon-person-filled:before {
	content: '\e131';
}

.uni-icon-personadd-filled:before {
	content: '\e132';
}

.uni-icon-phone:before {
	content: '\e200';
}

.uni-icon-email:before {
	content: '\e201';
}

.uni-icon-chatbubble:before {
	content: '\e202';
}

.uni-icon-chatboxes:before {
	content: '\e203';
}

.uni-icon-phone-filled:before {
	content: '\e230';
}

.uni-icon-email-filled:before {
	content: '\e231';
}

.uni-icon-chatbubble-filled:before {
	content: '\e232';
}

.uni-icon-chatboxes-filled:before {
	content: '\e233';
}

.uni-icon-weibo:before {
	content: '\e260';
}

.uni-icon-weixin:before {
	content: '\e261';
}

.uni-icon-pengyouquan:before {
	content: '\e262';
}

.uni-icon-chat:before {
	content: '\e263';
}

.uni-icon-qq:before {
	content: '\e264';
}

.uni-icon-videocam:before {
	content: '\e300';
}

.uni-icon-camera:before {
	content: '\e301';
}

.uni-icon-mic:before {
	content: '\e302';
}

.uni-icon-location:before {
	content: '\e303';
}

.uni-icon-mic-filled:before,
.uni-icon-speech:before {
	content: '\e332';
}

.uni-icon-location-filled:before {
	content: '\e333';
}

.uni-icon-micoff:before {
	content: '\e360';
}

.uni-icon-image:before {
	content: '\e363';
}

.uni-icon-map:before {
	content: '\e364';
}

.uni-icon-compose:before {
	content: '\e400';
}

.uni-icon-trash:before {
	content: '\e401';
}

.uni-icon-upload:before {
	content: '\e402';
}

.uni-icon-download:before {
	content: '\e403';
}

.uni-icon-close:before {
	content: '\e404';
}

.uni-icon-redo:before {
	content: '\e405';
}

.uni-icon-undo:before {
	content: '\e406';
}

.uni-icon-refresh:before {
	content: '\e407';
}

.uni-icon-star:before {
	content: '\e408';
}

.uni-icon-plus:before {
	content: '\e409';
}

.uni-icon-minus:before {
	content: '\e410';
}

.uni-icon-circle:before,
.uni-icon-checkbox:before {
	content: '\e411';
}

.uni-icon-close-filled:before,
.uni-icon-clear:before {
	content: '\e434';
}

.uni-icon-refresh-filled:before {
	content: '\e437';
}

.uni-icon-star-filled:before {
	content: '\e438';
}

.uni-icon-plus-filled:before {
	content: '\e439';
}

.uni-icon-minus-filled:before {
	content: '\e440';
}

.uni-icon-circle-filled:before {
	content: '\e441';
}

.uni-icon-checkbox-filled:before {
	content: '\e442';
}

.uni-icon-closeempty:before {
	content: '\e460';
}

.uni-icon-refreshempty:before {
	content: '\e461';
}

.uni-icon-reload:before {
	content: '\e462';
}

.uni-icon-starhalf:before {
	content: '\e463';
}

.uni-icon-spinner:before {
	content: '\e464';
}

.uni-icon-spinner-cycle:before {
	content: '\e465';
}

.uni-icon-search:before {
	content: '\e466';
}

.uni-icon-plusempty:before {
	content: '\e468';
}

.uni-icon-forward:before {
	content: '\e470';
}

.uni-icon-back:before,
.uni-icon-left-nav:before {
	content: '\e471';
}

.uni-icon-checkmarkempty:before {
	content: '\e472';
}

.uni-icon-home:before {
	content: '\e500';
}

.uni-icon-navigate:before {
	content: '\e501';
}

.uni-icon-gear:before {
	content: '\e502';
}

.uni-icon-paperplane:before {
	content: '\e503';
}

.uni-icon-info:before {
	content: '\e504';
}

.uni-icon-help:before {
	content: '\e505';
}

.uni-icon-locked:before {
	content: '\e506';
}

.uni-icon-more:before {
	content: '\e507';
}

.uni-icon-flag:before {
	content: '\e508';
}

.uni-icon-home-filled:before {
	content: '\e530';
}

.uni-icon-gear-filled:before {
	content: '\e532';
}

.uni-icon-info-filled:before {
	content: '\e534';
}

.uni-icon-help-filled:before {
	content: '\e535';
}

.uni-icon-more-filled:before {
	content: '\e537';
}

.uni-icon-settings:before {
	content: '\e560';
}

.uni-icon-list:before {
	content: '\e562';
}

.uni-icon-bars:before {
	content: '\e563';
}

.uni-icon-loop:before {
	content: '\e565';
}

.uni-icon-paperclip:before {
	content: '\e567';
}

.uni-icon-eye:before {
	content: '\e568';
}

.uni-icon-arrowup:before {
	content: '\e580';
}

.uni-icon-arrowdown:before {
	content: '\e581';
}

.uni-icon-arrowleft:before {
	content: '\e582';
}

.uni-icon-arrowright:before {
	content: '\e583';
}

.uni-icon-arrowthinup:before {
	content: '\e584';
}

.uni-icon-arrowthindown:before {
	content: '\e585';
}

.uni-icon-arrowthinleft:before {
	content: '\e586';
}

.uni-icon-arrowthinright:before {
	content: '\e587';
}

.uni-icon-pulldown:before {
	content: '\e588';
}

.uni-icon-scan:before {
    content: "\e612";
}

================================================
FILE: 前端商城/common/wx_token.js
================================================
import {Api_url} from './config' 
import http from './axios.js'
import Vue from 'vue'

const Wxcode_url= Api_url+"/auth/wxcode_url"
const Token_url= Api_url+"/auth/gzh_token"
const VerifyUrl = Api_url + '/auth/token_verify';

// 获取openid需到公众号平台设置:IP白名单 和 授权域名;
// ip是服务器IP,域名是前端域名

class WxToken { 	
	constructor() { 
		
	}	
	 
	
	//初始化登陆
	async verify(e) { 		
		console.log("H5验证登陆")
		// 判断是否是微信浏览器打开
		var ua = navigator.userAgent.toLowerCase();
		var isWeixin = ua.indexOf('micromessenger') != -1;
		if (!isWeixin) { 
			console.log("非公众号-暂不登陆")
		    return false;
		} 
		console.log("微信浏览器访问中")
		
		var token = uni.getStorageSync('token'); //获取缓存
		let type = e=='userinfo'?'userinfo':'';
		
		if(token){		
			console.log("验证token")	
			this._veirfyFromServer(token,type)	//验证token是否失效
		}else{
			console.log("进行登陆中")
			this.login(type)	//登陆
		}
		 
	}	
	
	login(type){		
		const code = this.GetUrlParame('code') // 截取code		
		
		if (!code) {
			this.get_code(type)
		}else{
			this.get_token()
		}	
	}	
	
	get_code(type){		 
		console.log("获取code")
		
		var domine = window.location.href.split("#")[0]; // 微信会自动识别#    并且清除#后面的内容
		domine = domine.split("?code")[0]; 
		uni.request({
		  	url: Wxcode_url,
		  	method: 'GET',  
			data:{
				url:domine,
				type
			},
		  	success: function (res) {   	
				console.log('codes:',res)
				const err=res.data.indexOf('object')//错误的url会包含object
				if(res.data && err<0){ 
					window.location.href = res.data;
				}
		  	}
		}); 
	}
	
	get_token(e){
		const code = this.GetUrlParame('code') // 截取code		
		uni.request({
		  	url: Token_url,
		  	method: 'GET',
			data:{code},
		  	success: function (res) {	 
				console.log(res)
		  		if (res.data.token) { 
					console.log(res)
		  			uni.setStorageSync("token", res.data.token);						
		  			window.location.href =domine 		 
		  		}
		  	}
		});  	
	}	
	
	 
	//验证token
	_veirfyFromServer(token,type) {
		var that = this;
		uni.request({
			url: VerifyUrl,
			method: 'POST',
			data: {
				token: token
			},
			success: function(res) {
				var valid = res.data.isValid;
				if (!valid) {
					that.login(type);
				}else{
					console.log("token有效")
				}
			}
		})
	}
	 
	//截取code
	GetUrlParame(parameName) {  
		/// 获取地址栏指定参数的值
		/// <param name="parameName">参数名</param>
		// 获取url中跟在问号后面的部分
		var parames = window.location.search
		// 检测参数是否存在
		if (parames.indexOf(parameName) > -1) {
			var parameValue = ''
			parameValue = parames.substring(parames.indexOf(parameName), parames.length)
			// 检测后面是否还有参数
			if (parameValue.indexOf('&') > -1) {
				// 去除后面多余的参数, 得到最终 parameName=parameValue 形式的值
				parameValue = parameValue.substring(0, parameValue.indexOf('&'))
				// 去掉参数名, 得到最终纯值字符串
				parameValue = parameValue.replace(parameName + '=', '')
				return parameValue
			}
			return ''
		}
	}

} 


export { WxToken };

================================================
FILE: 前端商城/common/xcx_token.js
================================================
import {Api_url} from './config'
import Vue from 'vue'

class XcxToken {
	constructor() {
		this.tokenUrl = Api_url + 'auth/get_xcx_token';
		this.verifyUrl = Api_url + 'auth/token_verify';
		this.getInfo = Api_url + 'user/info';
	}
	
	//初始化登陆
	async verify() { 
		const swtich=await Vue.prototype.promise_switch.then(res=>{
			return res;
		})
		if(swtich==3){
			//手机登陆不属于初始化登陆
			return;
		} 
		var that = this;
		var token = uni.getStorageSync('token'); //获取缓存
		if (!token) {
			//向微信api拿code,再向tp的api拿token
			this.getTokenFromServer();
		} else {
			this._veirfyFromServer(token); //验证token是否过期,过期调用.getTokenFromServer函数获取
		}
	}
	//验证token
	_veirfyFromServer(token) {
		var that = this;
		uni.request({
			url: that.verifyUrl,
			method: 'POST',
			data: {
				token: token
			},
			success: function(res) {
				var valid = res.data.isValid;
				if (!valid) {
					that.getTokenFromServer();
				}
			}
		})
	}
	//获取Token
	getTokenFromServer() {
		var that = this;
		console.log('x1')
		uni.login({
			provider: 'weixin',
			success: function(res) {
				console.log('login:',res)
				uni.request({
					url: that.tokenUrl,
					method: 'POST',
					data: {
						code: res.code
					},
					success: function(res) {
						console.log(res)
						uni.setStorageSync('token', res.data.token);
					}
				})
			}
		})
	}
}
export {
	XcxToken
};




================================================
FILE: 前端商城/components/actionsheet/actionsheet.vue
================================================
<template>
	<view>
		<view class="tui-actionsheet-class tui-actionsheet" :class="[show?'tui-actionsheet-show':'']">
			<view class="tui-tips" :style="{fontSize:px(size),color:color}" v-if="tips">
				{{tips}}
			</view>
			<view :class="[isCancel?'tui-operate-box':'']">
				<block v-for="(item,index) in itemList" :key="index">
					<view class="tui-actionsheet-btn tui-actionsheet-divider" :class="[(!isCancel && index==itemList.length-1)?'tui-btn-last':'']"
					 hover-class="tui-actionsheet-hover" :hover-stay-time="150" :data-index="index" :style="{color:item.color || '#1a1a1a'}"
					 @tap="handleClickItem">{{item.text}}</view>
				</block>
			</view>
			<view class="tui-actionsheet-btn tui-actionsheet-cancel" hover-class="tui-actionsheet-hover" :hover-stay-time="150"
			 v-if="isCancel" @tap="handleClickCancel">取消</view>
		</view>
		<view class="tui-actionsheet-mask" :class="[show?'tui-mask-show':'']" @tap="handleClickMask"></view>
	</view>
</template>

<script>
	export default {
		name: "tuiActionsheet",
		props: {
			//点击遮罩 是否可关闭
			maskClosable: {
				type: Boolean,
				default: true
			},
			//显示操作菜单
			show: {
				type: Boolean,
				default: false
			},
			//菜单按钮数组,自定义文本颜色,红色参考色:#e53a37
			itemList: {
				type: Array,
				default: function() {
					return [{
						text: "确定",
						color: "#1a1a1a"
					}]
				}
			},
			//提示文字
			tips: {
				type: String,
				default: ""
			},
			//提示文字颜色
			color: {
				type: String,
				default: "#9a9a9a"
			},
			////提示文字大小
			size: {
				type: Number,
				default: 26
			},
			//是否需要取消按钮
			isCancel: {
				type: Boolean,
				default: true
			}
		},
		methods: {
			px(num) {
				return uni.upx2px(num) + "px"
			},
			handleClickMask() {
				if (!this.maskClosable) return;
				this.handleClickCancel();
			},
			handleClickItem(e) {
				if (!this.show) return;
				const dataset = e.currentTarget.dataset;
				this.$emit('click', {
					index: dataset.index
				});
			},
			handleClickCancel() {
				this.$emit('cancel');
			}
		}
	}
</script>

<style>
	.tui-actionsheet {
		width: 100%;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 9999;
		visibility: hidden;
		transform: translate3d(0, 100%, 0);
		transform-origin: center;
		transition: all 0.3s ease-in-out;
		background: #eaeaec;
		min-height: 100upx;
	}

	.tui-actionsheet-show {
		transform: translate3d(0, 0, 0);
		visibility: visible;
	}

	.tui-tips {
		width: 100%;
		/* font-size: 26upx; */
		padding: 30upx 60upx;
		box-sizing: border-box;
		text-align: center;
		background: #fff;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.tui-operate-box {
		padding-bottom: 12upx;
	}

	.tui-actionsheet-btn {
		width: 100%;
		height: 100upx;
		background: #fff;
		/* box-sizing: border-box;
		padding: 0 30upx; */
		display: flex;
		align-items: center;
		justify-content: center;
		text-align: center;
		font-size: 36upx;
		position: relative;
	}

	.tui-btn-last {
		padding-bottom: env(safe-area-inset-bottom);
	}

	.tui-actionsheet-divider::before {
		content: '';
		width: 100%;
		border-top: 1upx solid #d9d9d9;
		position: absolute;
		top: 0;
		left: 0;
		-webkit-transform: scaleY(0.5);
		transform: scaleY(0.5);
	}

	.tui-actionsheet-cancel {
		color: #1a1a1a;
		padding-bottom: env(safe-area-inset-bottom);
	}

	.tui-actionsheet-hover {
		background: #f7f7f9;
	}

	.tui-actionsheet-mask {
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		background: rgba(0, 0, 0, 0.6);
		z-index: 9996;
		transition: all 0.3s ease-in-out;
		opacity: 0;
		visibility: hidden;
	}

	.tui-mask-show {
		opacity: 1;
		visibility: visible;
	}
</style>


================================================
FILE: 前端商城/components/badge/badge.vue
================================================
<template>
	<view class="tui-badge-class" :class="[dot?'tui-badge-dot':'tui-badge','tui-'+type, size?'tui-badge-small':'']" v-if="visible">
		<slot></slot>
	</view>
</template>

<script>
	export default {
		name: "tuiBadge",
		props: {
			//primary,warning,green,danger,white,black,gray
			type: {
				type: String,
				default: 'primary'
			},
			// '', small
			size: {
				type: String,
				default: ''
			},
			//是否是圆点
			dot: {
				type: Boolean,
				default: false
			},
			//是否可见
			visible: {
				type: Boolean,
				default: true
			}
		}
	}
</script>

<style>
	/* color start*/

	.tui-primary {
		background: #5677fc;
		color: #fff;
	}

	.tui-danger {
		background: #ed3f14;
		color: #fff;
	}

	.tui-red {
		background: #ff201f;
		color: #fff;
	}

	.tui-warning {
		background: #ff7900;
		color: #fff;
	}

	.tui-green {
		background: #19be6b;
		color: #fff;
	}

	.tui-white {
		background: #fff;
		color: #333;
	}

	.tui-black {
		background: #000;
		color: #fff;
	}

	.tui-gray {
		background: #ededed !important;
		color: #999 !important;
	}

	/* color end*/

	/* badge start*/

	.tui-badge-dot {
		height: 8px;
		width: 8px;
		border-radius: 4px;
		line-height: 1;
	}

	.tui-badge {
		font-size: 12px;
		line-height: 1;
		padding: 3px 6px;
		border-radius: 50px;
	}

	.tui-badge-small {
		transform: scale(0.8);
		transform-origin: center center;
	}

	/* badge end*/
</style>


================================================
FILE: 前端商城/components/bottom-popup/bottom-popup.vue
================================================
<template>
	<view>
		<view class="tui-popup-class tui-bottom-popup" :class="{'tui-popup-show':show}" :style="{background:bgcolor,height:height?px(height):'auto'}">
			<slot></slot>
		</view>
		<view class="tui-popup-mask" :class="[show?'tui-mask-show':'']" v-if="mask" @tap="handleClose"></view>
	</view>
</template>

<script>
	export default {
		name:"tuiBottomPopup",
		props: {
			//是否需要mask
			mask: {
				type: Boolean,
				default: true
			},
			//控制显示
			show: {
				type: Boolean,
				default: false
			},
			//背景颜色
			bgcolor: {
				type: String,
				default: "#fff"
			},
			//高度 upx
			height: {
				type: Number,
				default: 0
			}
		},
		methods: {
			handleClose() {
				if (!this.show) {
					return;
				}
				this.$emit('close', {});
			},
			px(num){
				return uni.upx2px(num) + 'px'
			}
		}
	}
</script>

<style>
	.tui-bottom-popup {
		width: 100%;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 99999;
		visibility: hidden;
		transform: translate3d(0, 100%, 0);
		transform-origin: center;
		transition: all 0.3s ease-in-out;
		min-height: 20upx;
	}

	.tui-popup-show {
		transform: translate3d(0, 0, 0);
		visibility: visible;
	}

	.tui-popup-mask {
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		background: rgba(0, 0, 0, 0.6);
		z-index: 99996;
		transition: all 0.3s ease-in-out;
		opacity: 0;
		visibility: hidden;
	}

	.tui-mask-show {
		opacity: 1;
		visibility: visible;
	}
</style>


================================================
FILE: 前端商城/components/button/button.vue
================================================
<template>
	<button class="tui-btn-class tui-btn" :class="['tui-btn-'+size,plain?'tui-'+type+'-outline':'tui-'+(type || 'gradual'),getDisabledClass(disabled,type),getShapeClass(shape,plain)]"
	 :hover-class="getHoverClass(disabled,type,plain)" :loading="loading" :disabled="disabled" :open-type="openType" @tap="handleClick"
	 @getuserinfo="bindgetuserinfo" :form-type="formType" v-if="!hidden">
		<slot></slot>
	</button>
</template>

<script>
	export default {
		name: "tuiButton",
		props: {
			// primary, white, danger, warning, green, gray,gradual
			type: {
				type: String,
				default: 'gradual'
			},
			// block, mini, small
			size: {
				type: String,
				default: 'block'
			},
			// circle, square,rightAngle
			shape: {
				type: String,
				default: 'square'
			},
			plain: {
				type: Boolean,
				default: false
			},
			disabled: {
				type: Boolean,
				default: false
			},
			loading: {
				type: Boolean,
				default: false
			},
			openType: {
				type: String,
				default: ''
			},
			formType: {
				type: String,
				default: ''
			},
			hidden: {
				type: Boolean,
				default: false
			},
			bottom: {
				type: Boolean,
				default: false
			}
		},
		methods: {
			handleClick() {
				if (this.disabled) {
					return false;
				}
				this.$emit('click', {})
			},
			bindgetuserinfo({
				detail = {}
			} = {}) {
				this.$emit('getuserinfo', detail);
			},
			getDisabledClass: function(disabled, type) {
				let className = '';
				if (disabled && type != 'white' && type != 'gray') {
					className = type == 'gradual' ? 'btn-gradual-disabled' : 'tui-dark-disabled';
				}
				return className;
			},
			getShapeClass: function(shape, plain) {
				let className = '';
				if (shape == 'circle') {
					className = plain ? 'tui-outline-fillet' : 'tui-fillet';
				} else if (shape == "rightAngle") {
					className = plain ? 'tui-outline-rightAngle' : 'tui-rightAngle';
				}
				return className;
			},
			getHoverClass: function(disabled, type, plain) {
				let className = '';
				if (!disabled) {
					className = plain ? 'tui-outline-hover' : ('tui-' + (type || 'gradual') + '-hover');
				}
				return className;
			}
		}
	}
</script>

<style>
	/* color start*/

	.tui-primary {
		background: #5677fc !important;
		color: #fff;
	}

	.tui-danger {
		background: #ed3f14 !important;
		color: #fff;
	}

	.tui-red {
		background: #e41f19 !important;
		color: #fff;
	}

	.tui-warning {
		background: #ff7900 !important;
		color: #fff;
	}

	.tui-green {
		background: #19be6b !important;
		color: #fff;
	}

	.tui-white {
		background: #fff !important;
		color: #333 !important;
	}

	.tui-gray {
		background: #ededed !important;
		color: #999 !important;
	}

	.tui-hover-gray {
		background: #f7f7f9 !important;
	}

	/* color end*/

	/* button start*/

	.tui-btn {
		width: 100%;
		position: relative;
		border: 0 !important;
		border-radius: 10rpx;
		display: inline-block;
	}

	.tui-btn::after {
		content: "";
		position: absolute;
		width: 200%;
		height: 200%;
		-webkit-transform-origin: 0 0;
		transform-origin: 0 0;
		-webkit-transform: scale(0.5, 0.5);
		transform: scale(0.5, 0.5);
		-webkit-box-sizing: border-box;
		box-sizing: border-box;
		left: 0;
		top: 0;
		border-radius: 20rpx;
	}

	.tui-btn-block {
		font-size: 36rpx;
		height: 90rpx;
		line-height: 90rpx;
	}

	.tui-white::after {
		border: 1px solid #eaeef1;
	}

	.tui-white-hover {
		background: #e5e5e5 !important;
		color: #2e2e2e !important;
	}

	.tui-dark-disabled {
		opacity: 0.6 !important;
		color: #fafbfc !important;
	}

	.tui-outline-hover {
		opacity: 0.5;
	}

	.tui-primary-hover {
		background: #4a67d6 !important;
		color: #e5e5e5 !important;
	}

	.tui-primary-outline::after {
		border: 1px solid #5677fc !important;
	}

	.tui-primary-outline {
		color: #5677fc !important;
		background: none;
	}

	.tui-danger-hover {
		background: #d53912 !important;
		color: #e5e5e5 !important;
	}

	.tui-danger-outline {
		color: #ed3f14 !important;
		background: none;
	}

	.tui-danger-outline::after {
		border: 1px solid #ed3f14 !important;
	}

	.tui-red-hover {
		background: #c51a15 !important;
		color: #e5e5e5 !important;
	}

	.tui-red-outline {
		color: #e41f19 !important;
		background: none;
	}

	.tui-red-outline::after {
		border: 1px solid #e41f19 !important;
	}

	.tui-warning-hover {
		background: #e56d00 !important;
		color: #e5e5e5 !important;
	}

	.tui-warning-outline {
		color: #ff7900 !important;
		background: none;
	}

	.tui-warning-outline::after {
		border: 1px solid #ff7900 !important;
	}

	.tui-green-hover {
		background: #16ab60 !important;
		color: #e5e5e5 !important;
	}

	.tui-green-outline {
		color: #44cf85 !important;
		background: none;
	}

	.tui-green-outline::after {
		border: 1px solid #44cf85 !important;
	}

	.tui-gray-hover {
		background: #d5d5d5 !important;
		color: #898989;
	}

	.tui-gray-outline,
	.tui-white-outline {
		color: #999 !important;
		background: none !important;
	}

	.tui-gray-outline::after,
	.tui-white-outline::after {
		border: 1px solid #ccc !important;
	}

	/*圆角 */

	.tui-fillet {
		border-radius: 45rpx;
	}

	.tui-white.tui-fillet::after {
		border-radius: 90rpx;
	}

	.tui-outline-fillet::after {
		border-radius: 90rpx;
	}

	/*平角*/
	.tui-rightAngle {
		border-radius: 0;
	}

	.tui-white.tui-rightAngle::after {
		border-radius: 0;
	}

	.tui-outline-rightAngle::after {
		border-radius: 0;
	}

	/*渐变 */

	.tui-gradual {
		background: linear-gradient(-90deg, #5677fc, #5c8dff);
		border-radius: 45rpx;
		color: #fff;
	}

	.tui-gradual-hover {
		color: #d5d4d9 !important;
		background: linear-gradient(-90deg, #4a67d6, #4e77d9);
	}

	.btn-gradual-disabled {
		color: #fafbfc !important;
		border-radius: 45rpx;
		background: linear-gradient(-90deg, #cad8fb, #c9d3fb);
	}

	/*不同尺寸 */

	.tui-btn-mini {
		width: auto;
		font-size: 30rpx;
		height: 70rpx;
		line-height: 70rpx;
	}

	.tui-btn-small {
		width: auto;
		font-size: 30rpx;
		height: 60rpx;
		line-height: 60rpx;
	}

	/* button end*/
</style>


================================================
FILE: 前端商城/components/dateTime/dateTime.vue
================================================
<template>
	<view class="tui-datetime-picker">
		<view class="tui-mask" :class="{ 'tui-mask-show': isShow }" @touchmove.stop.prevent="stop" catchtouchmove="stop" @tap="hide"></view>
		<view class="tui-header" :class="{ 'tui-show': isShow }">
			<view class="tui-picker-header" @touchmove.stop.prevent="stop" catchtouchmove="stop">
				<view class="tui-btn-picker" :style="{ color: cancelColor }" hover-class="tui-opacity" :hover-stay-time="150"
				 @click="hide">取消</view>
				<view class="tui-btn-picker" :style="{ color: color }" hover-class="tui-opacity" :hover-stay-time="150" @click="btnFix">确定</view>
			</view>
			<view class="tui-picker-body">
				<picker-view :value="value" @change="change" class="tui-picker-view">
					<picker-view-column v-if="!reset && type!=4">
						<view class="tui-column-item" v-for="(item,index) in years" :key="index">
							{{ item }}<text class="tui-text">年</text>
						</view>
					</picker-view-column>
					<picker-view-column v-if="!reset && type!=4">
						<view class="tui-column-item" v-for="(item,index) in months" :key="index">
							{{ formatNum(item)}}<text class="tui-text">月</text>
						</view>
					</picker-view-column>
					<picker-view-column v-if="!reset && (type==1 || type==2)">
						<view class="tui-column-item" v-for="(item,index) in days" :key="index">
							{{ formatNum(item) }}<text class="tui-text">日</text>
						</view>
					</picker-view-column>
					<picker-view-column v-if="!reset && (type==1 || type==4)">
						<view class="tui-column-item" v-for="(item,index) in hours" :key="index">
							{{ formatNum(item) }}<text class="tui-text">时</text>
						</view>
					</picker-view-column>
					<picker-view-column v-if="!reset && (type==1 || type==4)">
						<view class="tui-column-item" v-for="(item,index) in minutes" :key="index">
							{{ formatNum(item) }}<text class="tui-text">分</text>
						</view>
					</picker-view-column>
				</picker-view>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		name: "tuiDatetime",
		props: {
			//1-日期+时间(年月日+时分) 2-日期(年月日) 3-日期(年月) 4-时间(时分)
			type: {
				type: Number,
				default: 1
			},
			//年份区间
			startYear: {
				type: Number,
				default: 1980
			},
			//年份区间
			endYear: {
				type: Number,
				default: 2050
			},
			//"取消"字体颜色
			cancelColor: {
				type: String,
				default: "#888"
			},
			//"确定"字体颜色
			color: {
				type: String,
				default: "#5677fc"
			},
			//设置默认显示日期 2019-08-01 || 2019-08-01 17:01 || 2019/08/01 
			setDateTime: {
				type: String,
				default: ""
			}
		},
		data() {
			return {
				isShow: false,
				years: [],
				months: [],
				days: [],
				hours: [],
				minutes: [],
				year: 0,
				month: 0,
				day: 0,
				hour: 0,
				minute: 0,
				startDate: "",
				endDate: "",
				value: [0, 0, 0, 0, 0],
				reset: false
			};
		},
		mounted() {
			this.initData();
		},
		computed: {
			yearOrMonth() {
				return `${this.year}-${this.month}`
			},
			propsChange() {
				return `${this.setDateTime}-${this.type}-${this.startYear}-${this.endYear}`
			}
		},
		watch: {
			yearOrMonth() {
				this.setDays();
			},
			propsChange() {
				this.reset = true
				setTimeout(() => {
					this.initData()
				}, 10);
			}
		},
		methods: {
			stop() {},
			formatNum: function(num) {
				return num < 10 ? "0" + num : num + "";
			},
			generateArray: function(start, end) {
				return Array.from(new Array(end + 1).keys()).slice(start)
			},
			getIndex: function(arr, val) {
				let index = arr.indexOf(val);
				return ~index ? index : 0
			},
			//日期时间处理
			initSelectValue() {
				let fdate = this.setDateTime.replace(/\-/g, '/');
				fdate = fdate && fdate.indexOf("/") == -1 ? `2020/01/01 ${fdate}` : fdate
				let time = null;
				if (fdate)
					time = new Date(fdate);
				else
					time = new Date();
				this.year = time.getFullYear()
				this.month = time.getMonth() + 1;
				this.day = time.getDate();
				this.hour = time.getHours();
				this.minute = time.getMinutes();
			},
			initData() {
				this.initSelectValue()
				this.reset = false
				switch (this.type) {
					case 1:
						this.value = [0, 0, 0, 0, 0];
						this.setYears();
						this.setMonths();
						this.setDays();
						this.setHours();
						this.setMinutes();
						break;
					case 2:
						this.value = [0, 0, 0];
						this.setYears();
						this.setMonths();
						this.setDays();
						break;
					case 3:
						this.value = [0, 0];
						this.setYears();
						this.setMonths();
						break;
					case 4:
						this.value = [0, 0];
						this.setHours();
						this.setMinutes();
						break;
					default:
						break;
				}
			},
			setYears() {
				this.years = this.generateArray(this.startYear, this.endYear);
				setTimeout(()=> {
					this.$set(this.value, 0, this.getIndex(this.years, this.year));
				}, 8);
			},
			setMonths() {
				this.months = this.generateArray(1, 12);
				setTimeout(()=> {
					this.$set(this.value, 1, this.getIndex(this.months, this.month));
				}, 8);
			},
			setDays() {
				if (this.type == 3 || this.type == 4) return;
				let totalDays = new Date(this.year, this.month, 0).getDate();
				this.days = this.generateArray(1, totalDays);
				setTimeout(()=> {
					this.$set(this.value, 2, this.getIndex(this.days, this.day));
				}, 8);
			},
			setHours() {
				this.hours = this.generateArray(0, 23);
				setTimeout(()=> {
					this.$set(this.value, this.value.length - 2, this.getIndex(this.hours, this.hour));
				}, 8);
				
			},
			setMinutes() {
				this.minutes = this.generateArray(0, 59);
				setTimeout(()=> {
					this.$set(this.value, this.value.length - 1, this.getIndex(this.minutes, this.minute));
				}, 8);
			},
			show() {
				setTimeout(() => {
					this.isShow = true;
				}, 50);
			},
			hide() {
				this.isShow = false;
			},
			change(e) {
				this.value = e.detail.value;
				switch (this.type) {
					case 1:
						this.year = this.years[this.value[0]];
						this.month = this.months[this.value[1]];
						this.day = this.days[this.value[2]];
						this.hour = this.hours[this.value[3]];
						this.minute = this.minutes[this.value[4]];
						break;
					case 2:
						this.year = this.years[this.value[0]];
						this.month = this.months[this.value[1]];
						this.day = this.days[this.value[2]];
						break;
					case 3:
						this.year = this.years[this.value[0]];
						this.month = this.months[this.value[1]];
						break;
					case 4:
						this.hour = this.hours[this.value[0]];
						this.minute = this.minutes[this.value[1]];
						break;
					default:
						break;
				}

			},
			btnFix() {
				let result = {};
				let year = this.year;
				let month = this.formatNum(this.month || 0);
				let day = this.formatNum(this.day || 0);
				let hour = this.formatNum(this.hour || 0);
				let minute = this.formatNum(this.minute || 0);
				switch (this.type) {
					case 1:
						result = {
							year: year,
							month: month,
							day: day,
							hour: hour,
							minute: minute,
							result: `${year}-${month}-${day} ${hour}:${minute}`
						}
						break;
					case 2:
						result = {
							year: year,
							month: month,
							day: day,
							result: `${year}-${month}-${day}`
						}
						break;
					case 3:
						result = {
							year: year,
							month: month,
							result: `${year}-${month}`
						}
						break;
					case 4:
						result = {
							hour: hour,
							minute: minute,
							result: `${hour}:${minute}`
						}
						break;
					default:
						break;
				}
				this.$emit("confirm", result);
				this.hide();
			}
		}
	};
</script>

<style>
	.tui-datetime-picker {
		position: relative;
		z-index: 999;
	}

	.tui-picker-view {
		height: 100%;
		box-sizing: border-box;
	}

	.tui-mask {
		position: fixed;
		z-index: 9998;
		top: 0;
		right: 0;
		bottom: 0;
		left: 0;
		background-color: rgba(0, 0, 0, 0.6);
		visibility: hidden;
		opacity: 0;
		transition: all 0.3s ease-in-out;
	}

	.tui-mask-show {
		visibility: visible !important;
		opacity: 1 !important;
	}

	.tui-header {
		z-index: 9999;
		position: fixed;
		bottom: 0;
		left: 0;
		width: 100%;
		transition: all 0.3s ease-in-out;
		transform: translateY(100%);
	}

	.tui-show {
		transform: translateY(0);
	}

	.tui-picker-header {
		width: 100%;
		height: 90rpx;
		padding: 0 40rpx;
		display: flex;
		justify-content: space-between;
		align-items: center;
		box-sizing: border-box;
		font-size: 32rpx;
		background: #fff;
		position: relative;
	}

	.tui-picker-header::after {
		content: '';
		position: absolute;
		border-bottom: 1rpx solid #eaeef1;
		-webkit-transform: scaleY(0.5);
		transform: scaleY(0.5);
		bottom: 0;
		right: 0;
		left: 0;
	}

	.tui-picker-body {
		width: 100%;
		height: 500rpx;
		overflow: hidden;
		background-color: #fff;
	}

	.tui-column-item {
		display: flex;
		align-items: center;
		justify-content: center;
		font-size: 36rpx;
		color: #333;
	}

	.tui-text {
		font-size: 24rpx;
		padding-left: 8rpx;
	}

	.tui-btn-picker {
		padding: 16rpx;
		box-sizing: border-box;
		text-align: center;
		text-decoration: none;
	}

	.tui-opacity {
		opacity: 0.5;
	}
</style>


================================================
FILE: 前端商城/components/discount/discount.vue
================================================
<template>
	<view class="discount">
		
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			};
		}
	}
</script>

<style lang="scss">
.discount{
	
}
</style>


================================================
FILE: 前端商城/components/drawer/drawer.vue
================================================
<template>
	<view class="tui-drawer-class tui-drawer" :class="[visible ? 'tui-drawer-show' : '','tui-drawer-' + mode]">
		<view v-if="mask" class="tui-drawer-mask" @tap="handleMaskClick"></view>
		<view class="tui-drawer-container">
			<slot></slot>
		</view>
	</view>

</template>

<script>
	export default {
		name:"tuiDrawer",
		props: {
			visible: {
				type: Boolean,
				default: false
			},
			mask: {
				type: Boolean,
				default: true
			},
			maskClosable: {
				type: Boolean,
				default: true
			},
			mode: {
				type: String,
				default: 'left' // left right
			}
		},
		methods: {
			handleMaskClick() {
				if (!this.maskClosable) {
					return;
				}
				this.$emit('close', {});
			}
		}
	}
</script>

<style>
	.tui-drawer {
		visibility: hidden;
	}

	.tui-drawer-show {
		visibility: visible;
	}

	.tui-drawer-show .tui-drawer-mask {
		display: block;
		opacity: 1;
	}

	.tui-drawer-show .tui-drawer-container {
		opacity: 1;
	}

	.tui-drawer-show.tui-drawer-left .tui-drawer-container,
	.tui-drawer-show.tui-drawer-right .tui-drawer-container {
		transform: translate3d(0, -50%, 0);
	}

	.tui-drawer-mask {
		opacity: 0;
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 8888;
		background: rgba(0, 0, 0, 0.6);
		transition: all 0.3s ease-in-out;
	}

	.tui-drawer-container {
		position: fixed;
		left: 50%;
		height: 100%;
		top: 0;
		transform: translate3d(-50%, -50%, 0);
		transform-origin: center;
		transition: all 0.3s ease-in-out;
		z-index: 99999;
		opacity: 0;
		overflow-y: scroll;
		background: #fff;
		-webkit-overflow-scrolling: touch;
		-ms-touch-action: pan-y cross-slide-y;
		-ms-scroll-chaining: none;
		-ms-scroll-limit: 0 50 0 50;
	}

	.tui-drawer-left .tui-drawer-container {
		left: 0;
		top: 50%;
		transform: translate3d(-100%, -50%, 0);
	}

	.tui-drawer-right .tui-drawer-container {
		right: 0;
		top: 50%;
		left: auto;
		transform: translate3d(100%, -50%, 0);
	}
</style>


================================================
FILE: 前端商城/components/empty.vue
================================================
<template>
	<view class="empty-content">
		<image class="empty-content-image" :src="setSrc" mode="aspectFit"></image>
	</view>
</template>

<script>
	export default {
		props: {
			src: {
				type: String,
				default: 'empty'
			},
		},

		data() {
			return {
				typeSrc: {
					empty: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMMAAACtCAYAAAANgcuAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Rjk5MjI3NjM1NUJGMTFFOThGRTZGQUIxMjY1ODk1QTkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Rjk5MjI3NjQ1NUJGMTFFOThGRTZGQUIxMjY1ODk1QTkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGOTkyMjc2MTU1QkYxMUU5OEZFNkZBQjEyNjU4OTVBOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGOTkyMjc2MjU1QkYxMUU5OEZFNkZBQjEyNjU4OTVBOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvBPHdgAAEY/SURBVHja7H3bkiTH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'
				},
			}
		},

		computed: {
			setSrc() {
				return this.typeSrc[this.src];
			},
		}
	}
</script>

<style lang="scss">
	.empty-content {
		display: flex;
		align-items: center;
		justify-content: center;
		flex-direction: column;
		
		position: fixed;
		left: 0;
		top: 0;
		right: 0;
		bottom: 0;
		background: $page-color-base;
		padding-bottom: 120upx;

		&-image {
			width: 200upx;
			height: 200upx;
		}
	}
</style>


================================================
FILE: 前端商城/components/form_data/form_data.vue
================================================
<template>
	<view class="form">
		<view v-for="(item,index) of data_form" :key="index">
			<view class="biao" v-if="item.type=='radio'">
				<view class="biao-l">{{item.desc}}:</view>
				<view class="biao-r">
					<radio-group class="radio-group" name="sex" @change="radioChange($event,item.name)">
						<label class="tui-radio" v-for="option of item.options">
							<radio :value="option.value" :checked="item.value==1?true:false" style="zoom: 90%;" /> {{option.name}}<span></span>
						</label>
					</radio-group>
				</view>
			</view>
			<view class="biao" v-if="item.type=='input'">
				<view class="biao-l">{{item.desc}}:</view>
				<view class="biao-r">
					<input @blur="input_get($event,item.name)" placeholder="请输入.." />
				</view>
			</view>
			<view class="biao" v-if="item.type=='textarea'">
				<view class="biao-l">{{item.desc}}:</view>
				<view class="biao-r">
					<textarea name="msg" v-model="arr.msg" placeholder="请输入.."></textarea>
				</view>
			</view>
			<view class="biao" v-if="item.type=='switch'" style="">
				<view class="biao-l" style="padding-top: 3px;">{{item.desc}}:</view>
				<view class="biao-r">
					<switch name="switch" @change="switch1Change($event,item.name)" style="transform:scale(0.7)" />
				</view>
			</view>
			<view class="biao" v-if="item.type=='check'">
				<view class="biao-l">{{item.desc}}:</view>
				<view class="biao-r">
					<checkbox-group @change="checkboxChange($event,item.name)">
						<label v-for="it of item.options" :key="it.value">
							<checkbox :value="it.value+''" :checked="it.checked" />{{it.name}}<span></span>
						</label>
					</checkbox-group>
				</view>
			</view>
			<!-- <view class="biao" v-if="item.type=='date'">
				<view class="biao-l">{{item.desc}}:</view> 
				<input class="biao-r" disabled="disabled" v-model="form[index].default" :placeholder="item.default?item.default:'请选择'" @click="show_date(1,index,item.name)"></input>
			</view>
			<view class="biao" v-if="item.type=='time'">
				<view class="biao-l">{{item.desc}}:</view>
				<input class="biao-r" disabled="disabled" v-model="form[index].default" :placeholder="item.default?item.default:'请选择'" @click="show_time(3,index,item.name)"></input>
			</view> -->
			<view class="biao" v-if="item.type=='address'">
				<view class="biao-l">{{item.desc}}:</view>
				<view class="biao-r" @click="toggleTab">
					{{resultInfo.result}}
				</view>
			</view>
			<view class="biao" v-if="item.type=='country'">
				<view class="biao-l">{{item.desc}}:</view>
				<view class="biao-r">
					<picker @change="bindPickerChange($event,item.type,index,item.name)" :value="ind" :range="item.options">
						<view class="uni-input">{{item.options[ind]}}</view>
					</picker>
				</view>
			</view>
			<view class="biao" v-if="item.type=='select'">
				<view class="biao-l">{{item.desc}}:</view>
				<view class="biao-r">
					<!-- <view class="uni-list-cell-db">
						<picker @change="bindPickerChange($event,item.type,index,item.name)" :value="i" :range="item.options">

							<view class="uni-input">{{form[index].default?form[index].default:'点击选择'}}</view>
						</picker>
					</view> -->
				</view>
			</view>
		</view>
		<!-- <view class="btn">
			<button class="tui-btn tui-btn-block tui-danger tui-fillet" hover-class="tui-danger-hover" @click="submit">
				提交</button>
		</view> -->
		<tui-datetime ref="dateData" :type="type" :startYear="startYear" :endYear="endYear" :cancelColor="cancelColor" :color="color"
		 :setDateTime="setDateTime" @confirm="change_date"></tui-datetime>
		<tui-datetime ref="dateTime" :type="type" :startYear="startYear" :endYear="endYear" :cancelColor="cancelColor" :color="color"
		 :setDateTime="setDateTime" @confirm="change_time"></tui-datetime>
		<w-picker mode="region" :defaultVal="['北京市','市辖区','东城区']" @confirm="onConfirm" ref="region"></w-picker>
	</view>

</template>

<script>
	import wPicker from "@/components/w-picker/w-picker.vue";
	import tuiButton from "@/components/button/button"
	import tuiDatetime from "@/components/dateTime/dateTime"
	export default {
		components: {
			tuiButton,
			tuiDatetime,
			wPicker
		},
		data() {

			return {
				i: '',
				select_data: '点击选择',
				form: [],
				indexx: '',
				input: '',
				ind: 0,
				resultInfo: {
					result: '请选择地区'
				},
				text: "选择城市",
				type: 1,
				startYear: 1980,
				endYear: 2030,
				cancelColor: "#888",
				color: "#5677fc",
				setDateTime: "",
				result: "选择日期",
				time: "选择时间",
				arr: {},

				data: [{
						type: "radio",
						name: "sex",
						desc: "性别",
						value: "",
						option: [{
							value: 0,
							name: "女",
							default: 1
						}, {
							value: 1,
							name: "男"
						}]
					},
					{
						type: "input",
						name: "name",
						desc: "姓名",
						value: ""
					},
					{
						type: "textarea",
						name: "msg",
						desc: "留言",
						value: ""
					},
					{
						type: "date",
						name: "date",
						desc: "日期",
						value: ""
					},
					{
						type: "switch",
						name: "switch",
						desc: "开关",
						value: ""
					},
					{
						type: "check",
						name: "check",
						desc: "套餐",
						value: "",
						option: [{
							value: 0,
							name: "A"
						}, {
							value: 1,
							name: "B"
						}],
					},
					{
						type: "city",
						name: "city",
						desc: "城市",
						value: ""
					},
					{
						type: "time",
						name: "time",
						desc: "时间",
						value: ""
					},
					{
						type: "country",
						name: "country",
						desc: "国家",
						value: "",
						option: ["中国",

							"美国",


							"巴西"
						]
					}
				],
			}
		},
		// props:['data_form','farther_fun'],
		props: {
			data_form: Array,
			
			kg: ''
		},
		created() {
			
			// const data = this.data
			// let arr = {}
			// for (let k in data) {
			// 	const v = data[k]
			// 	arr[v.name] = v.value + ''
			// }
			// this.arr = arr

		},
		watch: {
			
		},

		methods: {
			get_form(){
				this.$emit('get_data',this.arr)
			},
			input_get(e, name) {
				console.log(e, name)
				this.arr[name] = e.detail.value
			},
			bindPickerChange: function(e, type, index, name) {
				if (type == 'country') {
					console.log('picker发送选择改变,携带值为', e.target.value)
					this.ind = e.target.value
					this.arr.country = e.target.value
				}
				if (type == 'select') {
					console.log(e)
					this.i = e.detail.value
					this.form[index].default = this.form[index].options[e.detail.value]
					this.arr[name] = this.form[index].options[e.detail.value]
				}

			},
			toggleTab() {
				this.$refs['region'].show();
			},
			onConfirm(val) {
				console.log(val);
				//如果页面需要调用多个mode类型,可以根据mode处理结果渲染到哪里;
				// switch(this.mode){
				// 	case "date":
				// 		break;
				// }
				this.resultInfo = val;
				this.arr.city = this.resultInfo.result
			},

			checkboxChange: function(e, name) {
				this.arr[name] = e.detail.value

			},
			switch1Change: function(e, name) {
				this.arr[name] = e.target.value
			},
			submit() {
				console.log(this.arr)
			},

			radioChange(e, name) {
				this.arr[name] = e.detail.value
			},
			show_date: function(type, index, name) {
				this.cancelColor = "#888";
				this.color = "#5677fc";
				this.setDateTime = "";
				this.startYear = 1980;
				this.endYear = 2030;
				switch (type) {
					case 1:
						//this.setDateTime = "2019-10-12";
						this.type = 2;
						this.indexx = index
						this.date_name = name
						break;
					case 3:
						// this.setDateTime = "18:01";
						this.type = 4;
						this.indexx = index
						this.date_name = name
						break;
					default:
						break;
				}
				this.$refs.dateData.show()
			},
			change_date: function(e) {
				const that = this
				console.log(e)
				this.data_form[this.indexx].default = e.result
				this.form[this.indexx].default = e.result
				console.log(this.form[this.indexx])
				this.arr[this.date_name] = e.result

				// this.result = e.result
			},
			show_time: function(type, index, name) {
				this.cancelColor = "#888";
				this.color = "#5677fc";
				this.setDateTime = "";
				this.startYear = 1980;
				this.endYear = 2030;
				switch (type) {
					case 1:
						//this.setDateTime = "2019-10-12";
						this.type = 2;
						this.indexx = index
						this.time_name = name
						break;
					case 3:
						// this.setDateTime = "18:01";
						this.type = 4;
						this.indexx = index
						this.time_name = name
						break;
					default:
						break;
				}
				this.$refs.dateTime.show()
			},
			change_time: function(e) {
				console.log(e)
				this.data_form[this.indexx].default = e.result
				this.arr[this.time_name] = e.result
			}
		}
	}
</script>

<style lang="scss">
	@import '../../static/style/thorui.css';

	input::-webkit-input-placeholder {
		/* placeholder颜色  */
		
		/* placeholder字体大小  */
		font-size: 26upx;
		/* placeholder位置  */
		text-align: right;
	}
	.uni-input-placeholder{
		font-size: 26upx;
	}
	.form {
		font-size: 26upx;
		color: $font-color-light;

		.biao {
			display: flex;
			border-bottom: 1px solid #EDECE8;
			padding: 10upx 30upx 10upx 40upx;
			align-items: center;
			line-height: 70upx;
			position: relative;
			justify-content: space-between;

			.biao-l {

				text-align: right;
				flex-shrink: 0;
				font-size: 26upx;
				color: $font-color-light;
			}

			.biao-r {
				input::-webkit-input-placeholder {
					font-size: 20px;
					color: $font-color-light;
				}

				font-size: 26upx;
				padding-left: 25px;
				// flex-grow: 1;
				text-align: right;

				textarea {
					width: 90%;
					height: 80px;
				}

				span {
					padding-left: 10px;
				}
			}
		}

		.btn {
			padding: 50px 10px 0;
		}

		.uni-input {
			background-color: #fff;
		}
	}
</style>


================================================
FILE: 前端商城/components/hch-poster/hch-poster - 副本.vue
================================================
<template>
	<!-- 海报(想让海报显示隐藏要用hidden,v-if关闭后没办法在完整的出来海报) 保存海报按钮和关闭按钮 在html代码中写出来 绑定点击方法然后透明 再用canvas 覆盖 -->
	<view class="canvas_box" :hidden="canvasFlag">
		<view class="canvas_box_mask"></view><!-- 遮罩 -->
		<icon type="cancel" class="canvas_close_btn" size="60" @tap="canvasCancelEvn"
		 color="transparent" />
		<view class="button-wrapper" @tap="saveCanvasImage">
			<!-- 保存海报按钮 -->
			<cover-view class="save_btn" ></cover-view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {

			}
		},
		props: {
			canvasFlag: {
				type: Boolean,
				default: true,
			},
			posterObj: {
				type: Object,
				default: {
					url: '', //商品主图
					icon: '', //会员价图标
					title: "", //标题
					discountPrice: "", //折后价格
					orignPrice: "", //原价
					code: '', //小程序码
					code: '', //小程序码
				}
			}
		},
		methods: {
			// 海报
			// 画圆角矩形 ctx、x起点、y起点、w宽度、h高度、r圆角半径、fillColor填充颜色、strokeColor边框颜色
			roundRect(ctx, x, y, w, h, r, fillColor, strokeColor, btn) {
				// 开始绘制
				ctx.beginPath()
				// 绘制左上角圆弧 Math.PI = 180度
				// 圆心x起点、圆心y起点、半径、以3点钟方向顺时针旋转后确认的起始弧度、以3点钟方向顺时针旋转后确认的终止弧度
				ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5)
				// 绘制border-top
				// 移动起点位置 x终点、y终点
				ctx.moveTo(x + r, y)
				// 画一条线 x终点、y终点
				ctx.lineTo(x + w - r, y)
				// 绘制右上角圆弧
				ctx.arc(x + w - r, y + r, r, Math.PI * 1.5, Math.PI * 2)
				// 绘制border-right
				ctx.lineTo(x + w, y + h - r)
				// 绘制右下角圆弧

				ctx.arc(x + w - r, y + h - r, r, 0, Math.PI * 0.5)

				// 绘制左下角圆弧

				ctx.arc(x + r, y + h - r, r, Math.PI * 0.5, Math.PI)

				// 绘制border-left
				ctx.lineTo(x, y + r)
				if (btn == 'btn') {
					const grd = ctx.createLinearGradient(0, 0, 200, 0) //渐变色
					grd.addColorStop(0, fillColor)
					grd.addColorStop(1, strokeColor)
					// 因为边缘描边存在锯齿,最好指定使用 transparent 填充
					ctx.setFillStyle(grd)
					// 对绘画区域填充
					ctx.fill()
				} else {

					if (fillColor) {
						// 因为边缘描边存在锯齿,最好指定使用 transparent 填充
						ctx.setFillStyle(fillColor)
						// 对绘画区域填充
						ctx.fill()
					}
					if (strokeColor) {
						// 因为边缘描边存在锯齿,最好指定使用 transparent 填充
						ctx.setStrokeStyle(strokeColor)
						// 画出当前路径的边框
						ctx.stroke()
					}
				}
				// 关闭一个路径
				ctx.closePath()
				// 剪切,剪切之后的绘画绘制剪切区域内进行,需要save与restore 这个很重要 不然没办法保存
				ctx.clip()
			},

			/**
			 * canvas绘图相关,把文字转化成只能行数,多余显示省略号
			 * ctx: 当前的canvas
			 * text: 文本
			 * contentWidth: 文本最大宽度
			 * lineNumber: 显示几行
			 */
			canvasMultiLineText(ctx, text, contentWidth, lineNumber) {
				var textArray = text.split(""); // 分割成字符串数组
				var temp = "";
				var row = [];
				for (let i = 0; i < textArray.length; i++) {
					if (ctx.measureText(temp).width < contentWidth) {
						temp += textArray[i];
					} else {
						i--; // 这里添加i--是为了防止字符丢失
						row.push(temp);
						temp = "";
					}
				}
				row.push(temp);

				// 如果数组长度大于2,则截取前两个
				if (row.length > lineNumber) {
					var rowCut = row.slice(0, lineNumber);
					var rowPart = rowCut[1];
					var test = "";
					var empty = [];
					for (var a = 0; a < rowPart.length; a++) {
						if (ctx.measureText(test).width < contentWidth) {
							test += rowPart[a];
						} else {
							break;
						}
					}
					empty.push(test); // 处理后面加省略号
					var group = empty[0] + '...'
					rowCut.splice(lineNumber - 1, 1, group);
					row = rowCut;
				}
				return row;
			},
			  
			
			// 生成海报
			createCanvasImage() {
				console.log('posterObj:',this.posterObj) 
				// this.canvasFlag=false;
				// this.deliveryFlag = false;//关闭分享的弹窗
				console.log("海报生成中")
				wx.showLoading({
					title: '海报生成中...'
				})
				let _this = this;
				let phoneData = wx.getSystemInfoSync();
				this.phoneH = phoneData.windowHeight;
				this.phoneW = phoneData.windowWidth;
				let scaleW = this.phoneW / 375; //按照苹果留 375*667比例 其他型号手机等比例缩放 显示
				let scaleH = this.phoneH / 667; //按照苹果留 375*667比例 其他型号手机等比例缩放 显示
				console.log(this.phoneH, this.phoneW)
				const ctx = wx.createCanvasContext('myCanvas');
				let url = this.posterObj.url; //商品主图
				let zpPriceIcon = this.posterObj.icon //图标
				let code = this.posterObj.code
				let closeBtn = this.posterObj.closeBtn
				console.log("aa:",closeBtn) 

				ctx.draw() //清空原来的画图内容
				ctx.save();
				this.roundRect(ctx, 50, 100, (this.phoneW - 100), (this.phoneH-230), 10, '#fff', '#fff'); //绘制海报圆角背景白色的
				ctx.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图上下午即状态 可以继续绘制
				ctx.save();
				this.roundRect(ctx, 50, 100, (this.phoneW - 100), (370) * scaleH, 10, '#f7f7f7', '#f7f7f7'); //绘制海报圆角背景 上半截灰色的
				ctx.restore();
				//将网络图片转成本地路径 商品图片
				wx.getImageInfo({
					src: url,
					success(res) {
						ctx.save();
						//覆盖绘制
						//问题:在微信小程序使用canvas绘制圆角图片时,微信调试工具正常显示,android真机都不显示。
						// 原因:因为ctx.clip()剪切区域使用的填充颜色是透明的,所以图片没出来。
						// 解决方案:将剪切区域设置成实体颜色就好了。
						_this.roundRect(ctx, (_this.phoneW - ((_this.phoneW - 130))) / 2, 120,
						 (_this.phoneW - 130),230 * scaleH, 10,
							'#f7f7f7', '#f7f7f7') //绘制图片圆角背景
						ctx.drawImage(res.path, (_this.phoneW - ((_this.phoneW - 130))) / 2, 120, (_this.phoneW - 130), 230 * scaleH, 10); //绘制图
						ctx.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图上下午即状态 可以继续绘制
						ctx.draw(true)
					},
					fail() {
						_this.canvasFlag = true;
						uni.showToast({
							title: '海报生成失败',
							duration: 2000,
							icon: 'none'
						});
					}
				})
				// 关闭按钮
				wx.getImageInfo({
					src: closeBtn,
					success(res) {
						ctx.drawImage(res.path, 50 + (_this.phoneW - 100) + 5, 100, 24, 24)
						ctx.draw(true)
					},
					fail() {
						_this.canvasFlag = true;
						uni.showToast({
							title: '海报生成失败',
							duration: 2000,
							icon: 'none'
						});
					}
				})
				// 关闭按钮 end
				// 海报商品title
				setTimeout(() => {
					ctx.setGlobalAlpha(1) //不透明
					ctx.setFillStyle('#1c1c1c') //文字颜色:默认黑色
					ctx.setFontSize(14) //设置字体大小,默认10
					ctx.font = 'normal bold 14px sans-serif';
					let text = this.posterObj.title;
					let row = this.canvasMultiLineText(ctx, text, (this.phoneW - 130), 2); //计算绘制的2行文本
					let contentTextY = 360; // 这段文字起始的y位置
					let leftSpace = 65; // 这段文字起始的X位置
					let textLineHeight = 18; // 一行文字加一行行间距
					for (let b = 0; b < row.length; b++) { //一行一行绘制文本
						ctx.fillText(row[b], leftSpace, (contentTextY + textLineHeight * b - 15) * scaleH+40, (this.phoneW - 130));
						ctx.draw(true)
					}
				}, 500)
				// 海报商品title end
				// 会员价 图标
				wx.getImageInfo({
					src: zpPriceIcon,
					success(res) {
						ctx.drawImage(res.path, 65, 460 * scaleH, 44, 15)
						ctx.draw(true)
					},
					fail() {
						_this.canvasFlag = true;
						uni.showToast({
							title: '海报生成失败',
							duration: 2000,
							icon: 'none'
						});
					}
				})
				// 会员价 图标 end
				//绘制价格
				ctx.setFontSize(12) //设置字体大小,默认10
				ctx.setFillStyle('#c00000') //文字颜色:默认黑色
				ctx.font = 'normal 12px sans-serif';
				ctx.fillText('¥', 110, 476 * scaleH, 60);
				ctx.setFontSize(16) //设置字体大小,默认10
				let zpPrice = this.posterObj.discountPrice; //会员价格
				let orignPrice = this.posterObj.orignPrice; //市场价

				let zpPriceW = ctx.measureText(zpPrice).width; //文本的宽度
				ctx.fillText(zpPrice, 120, 476 * scaleH, zpPriceW);

				ctx.beginPath(); //开始一个新的路径
				ctx.setFontSize(10) //设置字体大小,默认10
				ctx.setFillStyle('#999') //文字颜色:默认黑色
				let orignPriceW = ctx.measureText(orignPrice).width //去掉市场价
				ctx.fillText(`¥${orignPrice}`, 120 + zpPriceW + 5, 475 * scaleH, orignPriceW); //5价格间距
				ctx.moveTo(120 + zpPriceW + 5, 470 * scaleH); //设置线条的起始路径坐标
				ctx.lineTo(120 + zpPriceW + 5 + orignPriceW, 470 * scaleH); //设置线条的终点路径坐标
				ctx.setStrokeStyle('#999')
				ctx.stroke(); //对当前路径进行描边
				ctx.closePath(); //关闭当前路径
				//绘制价格 end 
				// 小程序码
				wx.getImageInfo({
					src: code,
					success(res) {
						ctx.drawImage(res.path, (_this.phoneW - 70) / 2, 500 * scaleH, 70, 70)
						ctx.draw(true)
					},
					fail() {
						_this.canvasFlag = true;
						uni.showToast({
							title: '海报生成失败',
							duration: 2000,
							icon: 'none'
						});

					}
				})
				// });

				// 小程序码end
				// 小程序的名称
				ctx.setFontSize(14)
				ctx.setFillStyle('#2f1709') //文字颜色:默认黑色
				ctx.font = 'normal bold 14px sans-serif';
				ctx.fillText('小程序的名称', (_this.phoneW - 90) / 2, 610 * scaleH, 90);
				// 小程序的名称end
				// 长按/扫描识别查看商品
				// ctx.setFontSize(14)
				// ctx.setFillStyle('#ff5f33') //文字颜色:默认黑色
				// ctx.font = 'normal 14px sans-serif';
				// ctx.fillText('长按/扫描识别查看商品', (_this.phoneW - 140) / 2, 550 * scaleH, 140);
				// 长按/扫描识别查看商品end
				//绘制保存按钮
				ctx.save();
				this.roundRect(ctx, (this.phoneW - 160) / 2, (this.phoneH - 55)+60, 160, 36, 18, '#ff3600', '#ff6a00', 'btn')
				ctx.restore();
				ctx.setFontSize(14)
				ctx.setFillStyle('#fff') //文字颜色:默认黑色
				ctx.font = 'normal bold 14px sans-serif';
				ctx.fillText('保存图片', (_this.phoneW - 58) / 2, (this.phoneH - 33)+60, 58);
				//绘制保存按钮 end
				wx.hideLoading();
			},

			// 保存到系统相册
			saveCanvasImage() {
				console.log('点击了保存')
				wx.showLoading({
					title: '保存中...'
				})
				let _this = this;
				// 1-把画布转化成临时文件
				uni.canvasToTempFilePath({
					x: 50,
					y: 40,
					width: (this.phoneW - 100), // 画布的宽
					height: (this.phoneH - 120), // 画布的高
					destWidth: (this.phoneW - 100) * 5,
					destHeight: (this.phoneH - 120) * 5,
					canvasId: 'myCanvas',
					success(res) {
						// 2-保存图片至相册
						uni.saveImageToPhotosAlbum({
							filePath: res.tempFilePath,
							success(res2) {
								wx.hideLoading();
								uni.showToast({
									title: '图片保存成功,可以去分享啦~',
									duration: 2000
								})
								_this.canvasCancelEvn();
							},
							fail() {
								uni.showToast({
									title: '保存失败,稍后再试',
									duration: 2000,
									icon: 'none'
								})
								wx.hideLoading();
							}
						})
					},
					fail() {
						uni.showToast({
							title: '保存失败,稍后再试',
							duration: 2000,
							icon: 'none'
						})
						wx.hideLoading();
					}
				})
			},
			// 取消海报
			canvasCancelEvn() {
				console.log('关闭海报')
				this.$emit('cancel', true)
			}
		}
	}
</script>

<style lang="scss">
	.content {
		text-align: center;
		height: 100%;
	}

	.canvas_box {
		.canvas_box_mask {
			width: 100%;
			height: 100%;
			position: fixed;
			top: 0;
			right: 0;
			bottom: 0;
			left: 0;
			background: rgba(0, 0, 0, 0.5);
			z-index: 9;
		}

		.canvas {
			position: fixed !important;
			top: 0 !important;
			left: 0 !important;
			display: block !important;
			width: 100% !important;
			height: 100% !important;
			z-index: 9;
		}

		.button-wrapper { 
			width: 320rpx;
			height: 120rpx;
			position: absolute;
			bottom: 100rpx;
			left: 215rpx;
			z-index: 16; 
		}

		.save_btn {
			font-size: 30rpx;
			line-height: 72rpx;
			color: #fff;
			width: 100%;
			height: 100%;
			text-align: center;
			border-radius: 45rpx;
			border-radius: 36rpx;
			z-index: 10;
		}

		.canvas_close_btn { 
			position: fixed;
			top: 140rpx;
			right: 0;
			z-index: 12; 

		}
	}
</style>


================================================
FILE: 前端商城/components/hch-poster/hch-poster.vue
================================================
<template>
	<!-- 海报(想让海报显示隐藏要用hidden,v-if关闭后没办法在完整的出来海报) 保存海报按钮和关闭按钮 在html代码中写出来 绑定点击方法然后透明 再用canvas 覆盖 -->
	<view class="canvas_box" :hidden="canvasFlag">
		<view class="canvas_box_mask"></view><!-- 遮罩 -->
		<icon type="cancel" class="canvas_close_btn" size="60" @tap="canvasCancelEvn"
		 color="transparent" />
		<view class="button-wrapper" @tap="saveCanvasImage">
			<!-- 保存海报按钮 -->
			<cover-view class="save_btn" ></cover-view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {

			}
		},
		props: {
			canvasFlag: {
				type: Boolean,
				default: true,
			},
			posterObj: {
				type: Object,
				default: {
					url: '', //商品主图
					icon: '', //会员价图标
					title: "", //标题
					discountPrice: "", //折后价格
					orignPrice: "", //原价
					code: '', //小程序码
					code: '', //小程序码
				}
			}
		},
		methods: {
			// 海报
			// 画圆角矩形 ctx、x起点、y起点、w宽度、h高度、r圆角半径、fillColor填充颜色、strokeColor边框颜色
			roundRect(ctx, x, y, w, h, r, fillColor, strokeColor, btn) {
				// 开始绘制
				ctx.beginPath()
				// 绘制左上角圆弧 Math.PI = 180度
				// 圆心x起点、圆心y起点、半径、以3点钟方向顺时针旋转后确认的起始弧度、以3点钟方向顺时针旋转后确认的终止弧度
				ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5)
				// 绘制border-top
				// 移动起点位置 x终点、y终点
				ctx.moveTo(x + r, y)
				// 画一条线 x终点、y终点
				ctx.lineTo(x + w - r, y)
				// 绘制右上角圆弧
				ctx.arc(x + w - r, y + r, r, Math.PI * 1.5, Math.PI * 2)
				// 绘制border-right
				ctx.lineTo(x + w, y + h - r)
				// 绘制右下角圆弧

				ctx.arc(x + w - r, y + h - r, r, 0, Math.PI * 0.5)

				// 绘制左下角圆弧

				ctx.arc(x + r, y + h - r, r, Math.PI * 0.5, Math.PI)

				// 绘制border-left
				ctx.lineTo(x, y + r)
				if (btn == 'btn') {
					const grd = ctx.createLinearGradient(0, 0, 200, 0) //渐变色
					grd.addColorStop(0, fillColor)
					grd.addColorStop(1, strokeColor)
					// 因为边缘描边存在锯齿,最好指定使用 transparent 填充
					ctx.setFillStyle(grd)
					// 对绘画区域填充
					ctx.fill()
				} else {

					if (fillColor) {
						// 因为边缘描边存在锯齿,最好指定使用 transparent 填充
						ctx.setFillStyle(fillColor)
						// 对绘画区域填充
						ctx.fill()
					}
					if (strokeColor) {
						// 因为边缘描边存在锯齿,最好指定使用 transparent 填充
						ctx.setStrokeStyle(strokeColor)
						// 画出当前路径的边框
						ctx.stroke()
					}
				}
				// 关闭一个路径
				ctx.closePath()
				// 剪切,剪切之后的绘画绘制剪切区域内进行,需要save与restore 这个很重要 不然没办法保存
				ctx.clip()
			},

			/**
			 * canvas绘图相关,把文字转化成只能行数,多余显示省略号
			 * ctx: 当前的canvas
			 * text: 文本
			 * contentWidth: 文本最大宽度
			 * lineNumber: 显示几行
			 */
			canvasMultiLineText(ctx, text, contentWidth, lineNumber) {
				var textArray = text.split(""); // 分割成字符串数组
				var temp = "";
				var row = [];
				for (let i = 0; i < textArray.length; i++) {
					if (ctx.measureText(temp).width < contentWidth) {
						temp += textArray[i];
					} else {
						i--; // 这里添加i--是为了防止字符丢失
						row.push(temp);
						temp = "";
					}
				}
				row.push(temp);

				// 如果数组长度大于2,则截取前两个
				if (row.length > lineNumber) {
					var rowCut = row.slice(0, lineNumber);
					var rowPart = rowCut[1];
					var test = "";
					var empty = [];
					for (var a = 0; a < rowPart.length; a++) {
						if (ctx.measureText(test).width < contentWidth) {
							test += rowPart[a];
						} else {
							break;
						}
					}
					empty.push(test); // 处理后面加省略号
					var group = empty[0] + '...'
					rowCut.splice(lineNumber - 1, 1, group);
					row = rowCut;
				}
				return row;
			},
			  
			
			// 生成海报
			createCanvasImage() {
				console.log('posterObj:',this.posterObj) 
				// this.canvasFlag=false;
				// this.deliveryFlag = false;//关闭分享的弹窗
				console.log("海报生成中")
				wx.showLoading({
					title: '海报生成中...'
				})
				let _this = this;
				let phoneData = wx.getSystemInfoSync();
				this.phoneH = phoneData.windowHeight-100;
				this.phoneW = phoneData.windowWidth;
				let scaleW = this.phoneW / 375; //按照苹果留 375*667比例 其他型号手机等比例缩放 显示
				let scaleH = this.phoneH / 667; //按照苹果留 375*667比例 其他型号手机等比例缩放 显示
				console.log(this.phoneH, this.phoneW)
				const ctx = wx.createCanvasContext('myCanvas');
				let url = this.posterObj.url; //商品主图
				let zpPriceIcon = this.posterObj.icon //图标
				let code = this.posterObj.code
				let closeBtn = this.posterObj.closeBtn
				console.log("aa:",closeBtn) 

				ctx.draw() //清空原来的画图内容
				ctx.save();
				this.roundRect(ctx, 50, 40, (this.phoneW - 100), (this.phoneH - 80), 10, '#fff', '#fff'); //绘制海报圆角背景白色的
				ctx.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图上下午即状态 可以继续绘制
				ctx.save();
				this.roundRect(ctx, 50, 40, (this.phoneW - 100), (360) * scaleH, 10, '#f7f7f7', '#f7f7f7'); //绘制海报圆角背景 上半截灰色的
				ctx.restore();
				//将网络图片转成本地路径 商品图片
				wx.getImageInfo({
					src: url,
					success(res) {
						ctx.save();
						//覆盖绘制
						//问题:在微信小程序使用canvas绘制圆角图片时,微信调试工具正常显示,android真机都不显示。
						// 原因:因为ctx.clip()剪切区域使用的填充颜色是透明的,所以图片没出来。
						// 解决方案:将剪切区域设置成实体颜色就好了。
						_this.roundRect(ctx, (_this.phoneW - ((_this.phoneW - 130))) / 2, 55,
						 (_this.phoneW - 130),240 * scaleH, 10,
							'#f7f7f7', '#f7f7f7') //绘制图片圆角背景
						ctx.drawImage(res.path, (_this.phoneW - ((_this.phoneW - 130))) / 2, 0, (_this.phoneW - 130), 350 * scaleH, 10); //绘制图
						ctx.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图上下午即状态 可以继续绘制
						ctx.draw(true)
					},
					fail() {
						_this.canvasFlag = true;
						uni.showToast({
							title: '海报生成失败',
							duration: 2000,
							icon: 'none'
						});
					}
				})
				// 关闭按钮
				wx.getImageInfo({
					src: closeBtn,
					success(res) {
						ctx.drawImage(res.path, 50 + (_this.phoneW - 100) + 5, 100, 24, 24)
						ctx.draw(true)
					},
					fail() {
						_this.canvasFlag = true;
						uni.showToast({
							title: '海报生成失败',
							duration: 2000,
							icon: 'none'
						});
					}
				})
				// 关闭按钮 end
				// 海报商品title
				setTimeout(() => {
					ctx.setGlobalAlpha(1) //不透明
					ctx.setFillStyle('#1c1c1c') //文字颜色:默认黑色
					ctx.setFontSize(14) //设置字体大小,默认10
					ctx.font = 'normal bold 14px sans-serif';
					let text = this.posterObj.title;
					let row = this.canvasMultiLineText(ctx, text, (this.phoneW - 130), 2); //计算绘制的2行文本
					let contentTextY = 320; // 这段文字起始的y位置
					let leftSpace = 65; // 这段文字起始的X位置
					let textLineHeight = 18; // 一行文字加一行行间距
					for (let b = 0; b < row.length; b++) { //一行一行绘制文本
						ctx.fillText(row[b], leftSpace, (contentTextY + textLineHeight * b - 15) * scaleH+40, (this.phoneW - 130));
						ctx.draw(true)
					}
				}, 500)
				// 海报商品title end
				// 会员价 图标
				wx.getImageInfo({
					src: zpPriceIcon,
					success(res) {
						ctx.drawImage(res.path, 65, 415 * scaleH, 44, 15)
						ctx.draw(true)
					},
					fail() {
						_this.canvasFlag = true;
						uni.showToast({
							title: '海报生成失败',
							duration: 2000,
							icon: 'none'
						});
					}
				})
				// 会员价 图标 end
				//绘制价格
				ctx.setFontSize(12) //设置字体大小,默认10
				ctx.setFillStyle('#c00000') //文字颜色:默认黑色
				ctx.font = 'normal 12px sans-serif';
				ctx.fillText('¥', 110, 431 * scaleH, 60);
				ctx.setFontSize(16) //设置字体大小,默认10
				let zpPrice = this.posterObj.discountPrice; //会员价格
				let orignPrice = this.posterObj.orignPrice; //市场价

				let zpPriceW = ctx.measureText(zpPrice).width; //文本的宽度
				ctx.fillText(zpPrice, 120, 431 * scaleH, zpPriceW);

				ctx.beginPath(); //开始一个新的路径
				ctx.setFontSize(10) //设置字体大小,默认10
				ctx.setFillStyle('#999') //文字颜色:默认黑色
				let orignPriceW = ctx.measureText(orignPrice).width //去掉市场价
				ctx.fillText(`¥${orignPrice}`, 120 + zpPriceW + 5, 431 * scaleH, orignPriceW); //5价格间距
				ctx.moveTo(120 + zpPriceW + 5, 426 * scaleH); //设置线条的起始路径坐标
				ctx.lineTo(120 + zpPriceW + 5 + orignPriceW, 426 * scaleH); //设置线条的终点路径坐标
				ctx.setStrokeStyle('#999')
				ctx.stroke(); //对当前路径进行描边
				ctx.closePath(); //关闭当前路径
				//绘制价格 end 
				// 小程序码
				wx.getImageInfo({
					src: code,
					success(res) {
						ctx.drawImage(res.path, (_this.phoneW - 70) / 2, 500 * scaleH, 70, 70)
						ctx.draw(true)
					},
					fail() {
						_this.canvasFlag = true;
						uni.showToast({
							title: '海报生成失败',
							duration: 2000,
							icon: 'none'
						});

					}
				})
				// });

				// 小程序码end
				// 小程序的名称
				ctx.setFontSize(14)
				ctx.setFillStyle('#2f1709') //文字颜色:默认黑色
				ctx.font = 'normal bold 14px sans-serif';
				console.log('标题长度',this.shop_name.length)
				ctx.fillText(this.shop_name, ((_this.phoneW - this.shop_name.length*1*14) / 2), 605 * scaleH, 90);
				// 小程序的名称end
				// 长按/扫描识别查看商品
				// ctx.setFontSize(14)
				// ctx.setFillStyle('#ff5f33') //文字颜色:默认黑色
				// ctx.font = 'normal 14px sans-serif';
				// ctx.fillText('长按/扫描识别查看商品', (_this.phoneW - 140) / 2, 550 * scaleH, 140);
				// 长按/扫描识别查看商品end
				//绘制保存按钮
				ctx.save();
				this.roundRect(ctx, (this.phoneW - 160) / 2, (this.phoneH - 55)+30, 160, 36, 18, '#ff3600', '#ff6a00', 'btn')
				ctx.restore();
				ctx.setFontSize(14)
				ctx.setFillStyle('#fff') //文字颜色:默认黑色
				ctx.font = 'normal bold 14px sans-serif';
				ctx.fillText('保存图片', (_this.phoneW - 58) / 2, (this.phoneH - 33)+30, 58);
				//绘制保存按钮 end
				wx.hideLoading();
			},

			// 保存到系统相册
			saveCanvasImage() {
				console.log('点击了保存')
				wx.showLoading({
					title: '保存中...'
				})
				let _this = this;
				// 1-把画布转化成临时文件
				uni.canvasToTempFilePath({
					x: 50,
					y: 40,
					width: (this.phoneW - 100), // 画布的宽
					height: (this.phoneH - 80), // 画布的高
					destWidth: (this.phoneW - 100) * 5,
					destHeight: (this.phoneH - 80) * 5,
					canvasId: 'myCanvas',
					success(res) {
						// 2-保存图片至相册
						uni.saveImageToPhotosAlbum({
							filePath: res.tempFilePath,
							success(res2) {
								wx.hideLoading();
								uni.showToast({
									title: '图片保存成功,可以去分享啦~',
									duration: 2000
								})
								_this.canvasCancelEvn();
							},
							fail() {
								uni.showToast({
									title: '保存失败,稍后再试',
									duration: 2000,
									icon: 'none'
								})
								wx.hideLoading();
							}
						})
					},
					fail() {
						uni.showToast({
							title: '保存失败,稍后再试',
							duration: 2000,
							icon: 'none'
						})
						wx.hideLoading();
					}
				})
			},
			// 取消海报
			canvasCancelEvn() {
				console.log('关闭海报')
				this.$emit('cancel', true)
			}
		}
	}
</script>

<style lang="scss">
	.content {
		text-align: center;
		height: 100%;
	}

	.canvas_box {
		.canvas_box_mask {
			width: 100%;
			height: 100%;
			position: fixed;
			top: 0;
			right: 0;
			bottom: 0;
			left: 0;
			background: rgba(0, 0, 0, 0.5);
			z-index: 9;
		}

		.canvas {
			position: fixed !important;
			top: 0 !important;
			left: 0 !important;
			display: block !important;
			width: 100% !important;
			height: 100% !important;
			z-index: 9;
		}

		.button-wrapper { 
			width: 320rpx;
			height: 120rpx;
			position: absolute;
			bottom: 140rpx;
			left: 215rpx;
			z-index: 16; 
		}

		.save_btn {  
			font-size: 30rpx;
			line-height: 72rpx;
			color: #fff;
			width: 100%;
			height: 100%;
			text-align: center;
			border-radius: 45rpx;
			border-radius: 36rpx; 
			z-index: 10; 
		}

		.canvas_close_btn { 
			position: fixed;
			top: 140rpx;
			right: 0;
			z-index: 12; 

		}
	}
</style>


================================================
FILE: 前端商城/components/icon/icon.vue
================================================
<template>
	<view class="tui-icon-class tui-icon" :class="'tui-icon-'+name" :style="{ color: color, fontSize: size + 'px',fontWeight:bold?'bold':'normal'}"
	 @tap="handleClick(index)"></view>
</template>

<script>
	export default {
		name: "tuiIcon",
		props: {
			name: {
				type: String,
				default: ''
			},
			size: {
				type: Number,
				default: 32
			},
			color: {
				type: String,
				default: ''
			},
			bold: {
				type: Boolean,
				default: false
			},
			visible: {
				type: Boolean,
				default: true
			},
			index: {
				type: Number,
				default: 0
			}
		},
		methods: {
			handleClick(index) {
				this.$emit('click', {
					index
				})
			}
		}
	}
</script>

<style>
	@charset "UTF-8";

	@font-face {
		font-family: 'iconfont';
		src: url(data:application/font-woff;charset=utf-8;base64,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
Download .txt
gitextract_wa8ztkhb/

├── LICENSE
├── README.md
├── 前端商城/
│   ├── .gitignore
│   ├── App.vue
│   ├── README.md
│   ├── common/
│   │   ├── app.css
│   │   ├── app_token.js
│   │   ├── axios.js
│   │   ├── cache/
│   │   │   └── user.js
│   │   ├── cache.js
│   │   ├── check.js
│   │   ├── config.js
│   │   ├── filters/
│   │   │   └── filters.js
│   │   ├── h5_pay.js
│   │   ├── mixin.js
│   │   ├── switch.js
│   │   ├── uni.css
│   │   ├── wx_token.js
│   │   └── xcx_token.js
│   ├── components/
│   │   ├── actionsheet/
│   │   │   └── actionsheet.vue
│   │   ├── badge/
│   │   │   └── badge.vue
│   │   ├── bottom-popup/
│   │   │   └── bottom-popup.vue
│   │   ├── button/
│   │   │   └── button.vue
│   │   ├── dateTime/
│   │   │   └── dateTime.vue
│   │   ├── discount/
│   │   │   └── discount.vue
│   │   ├── drawer/
│   │   │   └── drawer.vue
│   │   ├── empty.vue
│   │   ├── form_data/
│   │   │   └── form_data.vue
│   │   ├── hch-poster/
│   │   │   ├── hch-poster - 副本.vue
│   │   │   └── hch-poster.vue
│   │   ├── icon/
│   │   │   └── icon.vue
│   │   ├── jing-swiper/
│   │   │   └── jing-swiper.vue
│   │   ├── linnian-CountDown/
│   │   │   ├── readme.md
│   │   │   └── uni-countdown.vue
│   │   ├── loadmore/
│   │   │   └── loadmore.vue
│   │   ├── mix-list-cell.vue
│   │   ├── modal/
│   │   │   └── modal.vue
│   │   ├── new_HB/
│   │   │   ├── index/
│   │   │   │   └── index.vue
│   │   │   └── mg-h5hb/
│   │   │       └── common/
│   │   │           ├── canvas_x.js
│   │   │           ├── myUtil.js
│   │   │           ├── qrCode.js
│   │   │           └── style.scss
│   │   ├── nomore/
│   │   │   └── nomore.vue
│   │   ├── numberbox/
│   │   │   └── numberbox.vue
│   │   ├── plan-image-upload/
│   │   │   ├── index.vue
│   │   │   ├── up_img.vue
│   │   │   └── work_log - 副本.vue
│   │   ├── qy/
│   │   │   ├── Black.vue
│   │   │   ├── Coupon.vue
│   │   │   ├── FenX.vue
│   │   │   ├── List-d.vue
│   │   │   ├── List-f.vue
│   │   │   ├── Tan.vue
│   │   │   ├── Title-c.vue
│   │   │   ├── list/
│   │   │   │   └── h.vue
│   │   │   ├── none.vue
│   │   │   ├── shopProduct.vue
│   │   │   ├── xianshi.vue
│   │   │   └── xieyi.vue
│   │   ├── rate/
│   │   │   └── rate.vue
│   │   ├── share.vue
│   │   ├── tag/
│   │   │   └── tag.vue
│   │   ├── top-dropdown/
│   │   │   └── top-dropdown.vue
│   │   ├── tui-tabs/
│   │   │   └── tui-tabs.vue
│   │   ├── tui-upload/
│   │   │   └── tui-upload.vue
│   │   ├── uni/
│   │   │   ├── uni-badge/
│   │   │   │   └── uni-badge.vue
│   │   │   ├── uni-countdown/
│   │   │   │   └── uni-countdown.vue
│   │   │   ├── uni-icon/
│   │   │   │   └── uni-icon.vue
│   │   │   ├── uni-icons/
│   │   │   │   └── uni-icons.vue
│   │   │   ├── uni-list/
│   │   │   │   └── uni-list.vue
│   │   │   ├── uni-list-item/
│   │   │   │   └── uni-list-item.vue
│   │   │   ├── uni-load-more/
│   │   │   │   └── uni-load-more.vue
│   │   │   ├── uni-notice-bar/
│   │   │   │   └── uni-notice-bar.vue
│   │   │   ├── uni-popup/
│   │   │   │   └── uni-popup.vue
│   │   │   ├── uni-rate/
│   │   │   │   ├── uni-rate.vue
│   │   │   │   └── uni-rates.vue
│   │   │   ├── uni-segmented-control/
│   │   │   │   └── uni-segmented-control.vue
│   │   │   ├── uni-steps/
│   │   │   │   └── uni-steps.vue
│   │   │   └── uni-swipe-action/
│   │   │       └── uni-swipe-action.vue
│   │   ├── uni-icons/
│   │   │   ├── icons.js
│   │   │   └── uni-icons.vue
│   │   ├── uni-number-box.vue
│   │   ├── w-picker/
│   │   │   ├── city-data/
│   │   │   │   ├── area.js
│   │   │   │   ├── city.js
│   │   │   │   └── province.js
│   │   │   ├── w-picker.js
│   │   │   └── w-picker.vue
│   │   └── wx_auth/
│   │       ├── app_auth.vue
│   │       └── xcx_auth.vue
│   ├── main.js
│   ├── manifest.json
│   ├── means/
│   │   ├── coupon/
│   │   │   └── coupon.vue
│   │   ├── discount/
│   │   │   └── discount.vue
│   │   ├── notice/
│   │   │   └── notice.vue
│   │   ├── onebuy/
│   │   │   └── onebuy.vue
│   │   ├── pin/
│   │   │   └── pin.vue
│   │   ├── play/
│   │   │   ├── activity/
│   │   │   │   ├── draw.vue
│   │   │   │   └── draw加密.vue
│   │   │   ├── sherpa-jiugongge/
│   │   │   │   ├── sherpa-jiugongge.vue
│   │   │   │   └── sherpa-jiugongge加密.vue
│   │   │   └── watering/
│   │   │       ├── watering.vue
│   │   │       └── watering加密.vue
│   │   └── qiandao/
│   │       └── qiandao.vue
│   ├── model/
│   │   ├── category.js
│   │   ├── order.js
│   │   └── product.js
│   ├── pages/
│   │   ├── address/
│   │   │   ├── address.vue
│   │   │   └── addressManage.vue
│   │   ├── article/
│   │   │   └── article.vue
│   │   ├── cart/
│   │   │   └── cart.vue
│   │   ├── cartnone/
│   │   │   └── cartnone.vue
│   │   ├── category/
│   │   │   ├── category.1.vue
│   │   │   └── category.vue
│   │   ├── cms/
│   │   │   ├── coupon/
│   │   │   │   └── coupon.vue
│   │   │   ├── coupon_VIP/
│   │   │   │   └── coupon_VIP.vue
│   │   │   ├── couponlist/
│   │   │   │   └── couponlist.vue
│   │   │   ├── couponxuan/
│   │   │   │   └── couponxuan.vue
│   │   │   ├── edit/
│   │   │   │   ├── pro_manage/
│   │   │   │   │   └── pro_manage.vue
│   │   │   │   ├── product/
│   │   │   │   │   ├── addgroup/
│   │   │   │   │   │   └── addgroup.vue
│   │   │   │   │   ├── product-图片上传ID未解决.vue
│   │   │   │   │   └── product.vue
│   │   │   │   ├── shop/
│   │   │   │   │   └── shop.vue
│   │   │   │   ├── shop_login/
│   │   │   │   │   └── shop_login.vue
│   │   │   │   ├── yanzheng/
│   │   │   │   │   └── yanzheng.vue
│   │   │   │   ├── yfmoban/
│   │   │   │   │   └── yfmoban.vue
│   │   │   │   ├── yfset/
│   │   │   │   │   └── yfset.vue
│   │   │   │   └── yunfei/
│   │   │   │       └── yunfei.vue
│   │   │   ├── index/
│   │   │   │   └── index.vue
│   │   │   ├── kedetail/
│   │   │   │   └── kedetail.vue
│   │   │   ├── kehu/
│   │   │   │   └── kehu.vue
│   │   │   ├── kucun/
│   │   │   │   └── kucun.vue
│   │   │   ├── login/
│   │   │   │   ├── login-old.vue
│   │   │   │   └── login.vue
│   │   │   ├── notice/
│   │   │   │   └── notice.vue
│   │   │   ├── order/
│   │   │   │   ├── detail/
│   │   │   │   │   └── detail.vue
│   │   │   │   ├── detail.vue
│   │   │   │   ├── order.vue
│   │   │   │   ├── send/
│   │   │   │   │   └── send.vue
│   │   │   │   └── yz_order.vue
│   │   │   ├── tag_manage/
│   │   │   │   └── tag_manage.vue
│   │   │   └── user/
│   │   │       ├── agent/
│   │   │       │   └── agent.vue
│   │   │       ├── buy_vip.vue
│   │   │       ├── fenxiao/
│   │   │       │   ├── addcard/
│   │   │       │   │   └── addcard.vue
│   │   │       │   ├── bankcard/
│   │   │       │   │   └── bankcard.vue
│   │   │       │   ├── fenxiao.vue
│   │   │       │   ├── success/
│   │   │       │   │   └── success.vue
│   │   │       │   └── tixian/
│   │   │       │       └── tixian.vue
│   │   │       ├── mingxi/
│   │   │       │   └── mingxi.vue
│   │   │       ├── tongji/
│   │   │       │   └── tongji.vue
│   │   │       └── user.vue
│   │   ├── detail/
│   │   │   └── detail.vue
│   │   ├── evaluate/
│   │   │   └── evaluate.vue
│   │   ├── extend-view/
│   │   │   ├── mall/
│   │   │   │   └── mall.vue
│   │   │   ├── news-search/
│   │   │   │   └── news-search.vue
│   │   │   ├── productDetail/
│   │   │   │   ├── components/
│   │   │   │   │   ├── activity.vue
│   │   │   │   │   ├── bottom.vue
│   │   │   │   │   ├── choose_sku.vue
│   │   │   │   │   ├── coupon.vue
│   │   │   │   │   ├── get_coupon.vue
│   │   │   │   │   └── share.vue
│   │   │   │   ├── productDetail++.vue
│   │   │   │   └── productDetail.vue
│   │   │   └── productList/
│   │   │       └── productList.vue
│   │   ├── form/
│   │   │   └── form.vue
│   │   ├── index/
│   │   │   └── index.vue
│   │   ├── invite/
│   │   │   └── invite.vue
│   │   ├── invoices/
│   │   │   └── invoices.vue
│   │   ├── list/
│   │   │   └── list.vue
│   │   ├── login/
│   │   │   ├── login.vue
│   │   │   ├── loginA/
│   │   │   │   └── loginA.vue
│   │   │   └── loginB/
│   │   │       └── loginB.vue
│   │   ├── order/
│   │   │   ├── components/
│   │   │   │   ├── buy_data.vue
│   │   │   │   ├── coupon.vue
│   │   │   │   ├── drive_type.vue
│   │   │   │   ├── group_buy.vue
│   │   │   │   └── receive_address.vue
│   │   │   ├── createOrder.vue
│   │   │   ├── order.vue
│   │   │   └── pay.vue
│   │   ├── pindetail/
│   │   │   └── pindetail.vue
│   │   ├── public/
│   │   │   └── login.vue
│   │   ├── set/
│   │   │   └── set.vue
│   │   ├── shop/
│   │   │   └── shop.vue
│   │   ├── user/
│   │   │   ├── bind_phone/
│   │   │   │   └── bind_phone.vue
│   │   │   ├── cash/
│   │   │   │   └── cash.vue
│   │   │   ├── like/
│   │   │   │   └── like.vue
│   │   │   ├── mycoupon/
│   │   │   │   └── mycoupon.vue
│   │   │   ├── myorder/
│   │   │   │   ├── drive/
│   │   │   │   │   └── drive.vue
│   │   │   │   ├── grade/
│   │   │   │   │   └── grade.vue
│   │   │   │   ├── myorder.vue
│   │   │   │   └── refund/
│   │   │   │       └── refund.vue
│   │   │   ├── record/
│   │   │   │   └── record.vue
│   │   │   ├── set/
│   │   │   │   └── set.vue
│   │   │   └── user.vue
│   │   ├── wxauth.vue
│   │   ├── xieyi/
│   │   │   └── xieyi.vue
│   │   └── zhibo/
│   │       ├── detail.vue
│   │       └── zhibo.vue
│   ├── pages.json
│   ├── static/
│   │   └── style/
│   │       ├── icon.css
│   │       └── thorui.css
│   └── uni.scss
└── 后台cms/
    ├── .browserslistrc
    ├── .eslintrc.js
    ├── .gitignore
    ├── babel.config.js
    ├── package.json
    ├── postcss.config.js
    ├── public/
    │   ├── index.html
    │   ├── static/
    │   │   └── UEditor/
    │   │       ├── dialogs/
    │   │       │   ├── anchor/
    │   │       │   │   └── anchor.html
    │   │       │   ├── attachment/
    │   │       │   │   ├── attachment.css
    │   │       │   │   ├── attachment.html
    │   │       │   │   └── attachment.js
    │   │       │   ├── background/
    │   │       │   │   ├── background.css
    │   │       │   │   ├── background.html
    │   │       │   │   └── background.js
    │   │       │   ├── charts/
    │   │       │   │   ├── chart.config.js
    │   │       │   │   ├── charts.css
    │   │       │   │   ├── charts.html
    │   │       │   │   └── charts.js
    │   │       │   ├── emotion/
    │   │       │   │   ├── emotion.css
    │   │       │   │   ├── emotion.html
    │   │       │   │   └── emotion.js
    │   │       │   ├── gmap/
    │   │       │   │   └── gmap.html
    │   │       │   ├── help/
    │   │       │   │   ├── help.css
    │   │       │   │   ├── help.html
    │   │       │   │   └── help.js
    │   │       │   ├── image/
    │   │       │   │   ├── image.css
    │   │       │   │   ├── image.html
    │   │       │   │   └── image.js
    │   │       │   ├── insertframe/
    │   │       │   │   └── insertframe.html
    │   │       │   ├── internal.js
    │   │       │   ├── link/
    │   │       │   │   └── link.html
    │   │       │   ├── map/
    │   │       │   │   ├── map.html
    │   │       │   │   └── show.html
    │   │       │   ├── music/
    │   │       │   │   ├── music.css
    │   │       │   │   ├── music.html
    │   │       │   │   └── music.js
    │   │       │   ├── preview/
    │   │       │   │   └── preview.html
    │   │       │   ├── scrawl/
    │   │       │   │   ├── scrawl.css
    │   │       │   │   ├── scrawl.html
    │   │       │   │   └── scrawl.js
    │   │       │   ├── searchreplace/
    │   │       │   │   ├── searchreplace.html
    │   │       │   │   └── searchreplace.js
    │   │       │   ├── snapscreen/
    │   │       │   │   └── snapscreen.html
    │   │       │   ├── spechars/
    │   │       │   │   ├── spechars.html
    │   │       │   │   └── spechars.js
    │   │       │   ├── table/
    │   │       │   │   ├── edittable.css
    │   │       │   │   ├── edittable.html
    │   │       │   │   ├── edittable.js
    │   │       │   │   ├── edittd.html
    │   │       │   │   └── edittip.html
    │   │       │   ├── template/
    │   │       │   │   ├── config.js
    │   │       │   │   ├── template.css
    │   │       │   │   ├── template.html
    │   │       │   │   └── template.js
    │   │       │   ├── video/
    │   │       │   │   ├── video.css
    │   │       │   │   ├── video.html
    │   │       │   │   └── video.js
    │   │       │   ├── webapp/
    │   │       │   │   └── webapp.html
    │   │       │   └── wordimage/
    │   │       │       ├── tangram.js
    │   │       │       ├── wordimage.html
    │   │       │       └── wordimage.js
    │   │       ├── lang/
    │   │       │   ├── en/
    │   │       │   │   └── en.js
    │   │       │   └── zh-cn/
    │   │       │       └── zh-cn.js
    │   │       ├── themes/
    │   │       │   ├── default/
    │   │       │   │   ├── css/
    │   │       │   │   │   └── ueditor.css
    │   │       │   │   └── dialogbase.css
    │   │       │   └── iframe.css
    │   │       ├── third-party/
    │   │       │   ├── SyntaxHighlighter/
    │   │       │   │   ├── shCore.js
    │   │       │   │   └── shCoreDefault.css
    │   │       │   ├── codemirror/
    │   │       │   │   ├── codemirror.css
    │   │       │   │   └── codemirror.js
    │   │       │   ├── highcharts/
    │   │       │   │   ├── adapters/
    │   │       │   │   │   ├── mootools-adapter.js
    │   │       │   │   │   ├── mootools-adapter.src.js
    │   │       │   │   │   ├── prototype-adapter.js
    │   │       │   │   │   ├── prototype-adapter.src.js
    │   │       │   │   │   ├── standalone-framework.js
    │   │       │   │   │   └── standalone-framework.src.js
    │   │       │   │   ├── highcharts-more.js
    │   │       │   │   ├── highcharts-more.src.js
    │   │       │   │   ├── highcharts.js
    │   │       │   │   ├── highcharts.src.js
    │   │       │   │   ├── modules/
    │   │       │   │   │   ├── annotations.js
    │   │       │   │   │   ├── annotations.src.js
    │   │       │   │   │   ├── canvas-tools.js
    │   │       │   │   │   ├── canvas-tools.src.js
    │   │       │   │   │   ├── data.js
    │   │       │   │   │   ├── data.src.js
    │   │       │   │   │   ├── drilldown.js
    │   │       │   │   │   ├── drilldown.src.js
    │   │       │   │   │   ├── exporting.js
    │   │       │   │   │   ├── exporting.src.js
    │   │       │   │   │   ├── funnel.js
    │   │       │   │   │   ├── funnel.src.js
    │   │       │   │   │   ├── heatmap.js
    │   │       │   │   │   ├── heatmap.src.js
    │   │       │   │   │   ├── map.js
    │   │       │   │   │   ├── map.src.js
    │   │       │   │   │   ├── no-data-to-display.js
    │   │       │   │   │   └── no-data-to-display.src.js
    │   │       │   │   └── themes/
    │   │       │   │       ├── dark-blue.js
    │   │       │   │       ├── dark-green.js
    │   │       │   │       ├── gray.js
    │   │       │   │       ├── grid.js
    │   │       │   │       └── skies.js
    │   │       │   ├── jquery-1.10.2.js
    │   │       │   ├── video-js/
    │   │       │   │   ├── video-js.css
    │   │       │   │   ├── video.dev.js
    │   │       │   │   └── video.js
    │   │       │   ├── webuploader/
    │   │       │   │   ├── webuploader.css
    │   │       │   │   ├── webuploader.custom.js
    │   │       │   │   ├── webuploader.flashonly.js
    │   │       │   │   ├── webuploader.html5only.js
    │   │       │   │   ├── webuploader.js
    │   │       │   │   └── webuploader.withoutimage.js
    │   │       │   └── zeroclipboard/
    │   │       │       └── ZeroClipboard.js
    │   │       ├── ueditor.all.js
    │   │       ├── ueditor.config.js
    │   │       └── ueditor.parse.js
    │   └── ueditor/
    │       ├── dialogs/
    │       │   ├── anchor/
    │       │   │   └── anchor.html
    │       │   ├── attachment/
    │       │   │   ├── attachment.css
    │       │   │   ├── attachment.html
    │       │   │   └── attachment.js
    │       │   ├── background/
    │       │   │   ├── background.css
    │       │   │   ├── background.html
    │       │   │   └── background.js
    │       │   ├── charts/
    │       │   │   ├── chart.config.js
    │       │   │   ├── charts.css
    │       │   │   ├── charts.html
    │       │   │   └── charts.js
    │       │   ├── emotion/
    │       │   │   ├── emotion.css
    │       │   │   ├── emotion.html
    │       │   │   └── emotion.js
    │       │   ├── gmap/
    │       │   │   └── gmap.html
    │       │   ├── help/
    │       │   │   ├── help.css
    │       │   │   ├── help.html
    │       │   │   └── help.js
    │       │   ├── image/
    │       │   │   ├── image.css
    │       │   │   ├── image.html
    │       │   │   └── image.js
    │       │   ├── insertframe/
    │       │   │   └── insertframe.html
    │       │   ├── internal.js
    │       │   ├── link/
    │       │   │   └── link.html
    │       │   ├── map/
    │       │   │   ├── map.html
    │       │   │   └── show.html
    │       │   ├── music/
    │       │   │   ├── music.css
    │       │   │   ├── music.html
    │       │   │   └── music.js
    │       │   ├── preview/
    │       │   │   └── preview.html
    │       │   ├── scrawl/
    │       │   │   ├── scrawl.css
    │       │   │   ├── scrawl.html
    │       │   │   └── scrawl.js
    │       │   ├── searchreplace/
    │       │   │   ├── searchreplace.html
    │       │   │   └── searchreplace.js
    │       │   ├── snapscreen/
    │       │   │   └── snapscreen.html
    │       │   ├── spechars/
    │       │   │   ├── spechars.html
    │       │   │   └── spechars.js
    │       │   ├── table/
    │       │   │   ├── edittable.css
    │       │   │   ├── edittable.html
    │       │   │   ├── edittable.js
    │       │   │   ├── edittd.html
    │       │   │   └── edittip.html
    │       │   ├── template/
    │       │   │   ├── config.js
    │       │   │   ├── template.css
    │       │   │   ├── template.html
    │       │   │   └── template.js
    │       │   ├── video/
    │       │   │   ├── video.css
    │       │   │   ├── video.html
    │       │   │   └── video.js
    │       │   ├── webapp/
    │       │   │   └── webapp.html
    │       │   └── wordimage/
    │       │       ├── tangram.js
    │       │       ├── wordimage.html
    │       │       └── wordimage.js
    │       ├── index.html
    │       ├── lang/
    │       │   ├── en/
    │       │   │   └── en.js
    │       │   └── zh-cn/
    │       │       └── zh-cn.js
    │       ├── themes/
    │       │   ├── default/
    │       │   │   ├── css/
    │       │   │   │   └── ueditor.css
    │       │   │   └── dialogbase.css
    │       │   └── iframe.css
    │       ├── third-party/
    │       │   ├── SyntaxHighlighter/
    │       │   │   ├── shCore.js
    │       │   │   └── shCoreDefault.css
    │       │   ├── codemirror/
    │       │   │   ├── codemirror.css
    │       │   │   └── codemirror.js
    │       │   ├── highcharts/
    │       │   │   ├── adapters/
    │       │   │   │   ├── mootools-adapter.js
    │       │   │   │   ├── mootools-adapter.src.js
    │       │   │   │   ├── prototype-adapter.js
    │       │   │   │   ├── prototype-adapter.src.js
    │       │   │   │   ├── standalone-framework.js
    │       │   │   │   └── standalone-framework.src.js
    │       │   │   ├── highcharts-more.js
    │       │   │   ├── highcharts-more.src.js
    │       │   │   ├── highcharts.js
    │       │   │   ├── highcharts.src.js
    │       │   │   ├── modules/
    │       │   │   │   ├── annotations.js
    │       │   │   │   ├── annotations.src.js
    │       │   │   │   ├── canvas-tools.js
    │       │   │   │   ├── canvas-tools.src.js
    │       │   │   │   ├── data.js
    │       │   │   │   ├── data.src.js
    │       │   │   │   ├── drilldown.js
    │       │   │   │   ├── drilldown.src.js
    │       │   │   │   ├── exporting.js
    │       │   │   │   ├── exporting.src.js
    │       │   │   │   ├── funnel.js
    │       │   │   │   ├── funnel.src.js
    │       │   │   │   ├── heatmap.js
    │       │   │   │   ├── heatmap.src.js
    │       │   │   │   ├── map.js
    │       │   │   │   ├── map.src.js
    │       │   │   │   ├── no-data-to-display.js
    │       │   │   │   └── no-data-to-display.src.js
    │       │   │   └── themes/
    │       │   │       ├── dark-blue.js
    │       │   │       ├── dark-green.js
    │       │   │       ├── gray.js
    │       │   │       ├── grid.js
    │       │   │       └── skies.js
    │       │   ├── jquery-1.10.2.js
    │       │   ├── video-js/
    │       │   │   ├── video-js.css
    │       │   │   ├── video.dev.js
    │       │   │   └── video.js
    │       │   ├── webuploader/
    │       │   │   ├── webuploader.css
    │       │   │   ├── webuploader.custom.js
    │       │   │   ├── webuploader.flashonly.js
    │       │   │   ├── webuploader.html5only.js
    │       │   │   ├── webuploader.js
    │       │   │   └── webuploader.withoutimage.js
    │       │   └── zeroclipboard/
    │       │       └── ZeroClipboard.js
    │       ├── ueditor.all.js
    │       ├── ueditor.config.js
    │       └── ueditor.parse.js
    ├── src/
    │   ├── App.vue
    │   ├── common/
    │   │   ├── axios.js
    │   │   ├── city.json
    │   │   └── config.js
    │   ├── components/
    │   │   ├── AddCategory.vue
    │   │   ├── Good.vue
    │   │   ├── Pro.vue
    │   │   ├── addnav.vue
    │   │   ├── header.vue
    │   │   ├── list/
    │   │   │   └── List-a.vue
    │   │   ├── navTo.vue
    │   │   ├── sku copy.vue
    │   │   ├── sku.vue
    │   │   └── time_range/
    │   │       └── time_range.vue
    │   ├── main.js
    │   ├── router.js
    │   └── views/
    │       ├── Home.vue
    │       ├── PicList.vue
    │       ├── ad/
    │       │   ├── ad.vue
    │       │   ├── article.vue
    │       │   ├── hot.vue
    │       │   └── nav.vue
    │       ├── backup/
    │       │   └── backup.vue
    │       ├── data/
    │       │   ├── data-old.vue
    │       │   └── data.vue
    │       ├── extend/
    │       │   ├── addcoupon.vue
    │       │   ├── coupon.vue
    │       │   └── extend.vue
    │       ├── login/
    │       │   ├── Login.vue
    │       │   └── lout.vue
    │       ├── money/
    │       │   └── money.vue
    │       ├── order/
    │       │   ├── Details.vue
    │       │   ├── evaluate.vue
    │       │   ├── new_order.vue
    │       │   └── order.vue
    │       ├── product/
    │       │   ├── Good.vue
    │       │   ├── addtemplate.vue
    │       │   ├── category.vue
    │       │   ├── ed.vue
    │       │   ├── edittemplate.vue
    │       │   ├── new_product.vue
    │       │   └── template.vue
    │       ├── set/
    │       │   ├── Set-a.vue
    │       │   ├── Set-b.vue
    │       │   └── set.vue
    │       ├── set_gift/
    │       │   └── set_gift.vue
    │       └── user/
    │           ├── point.vue
    │           └── user.vue
    └── vue.config.js
Download .txt
SYMBOL INDEX (1910 symbols across 104 files)

FILE: 前端商城/common/app_token.js
  class AppToken (line 4) | class AppToken {
    method constructor (line 5) | constructor() {
    method verify (line 10) | verify() {
    method _veirfyFromServer (line 20) | _veirfyFromServer(token) {
    method login_page (line 37) | login_page(){

FILE: 前端商城/common/axios.js
  method post (line 6) | async post(url, param,yanci=false) {
  method get (line 23) | async get(url, param,yanci=false) {
  method put (line 40) | async put(url, param) {
  method uni_request (line 44) | uni_request(url,param,method,again_quest=false) {

FILE: 前端商城/common/cache.js
  method _set_home_cache (line 6) | _set_home_cache(res){
  method _set_product_cache (line 16) | _set_product_cache(res){
  method get_pro_detail (line 28) | async get_pro_detail(id,xiala){

FILE: 前端商城/common/cache/user.js
  class CUser (line 6) | class CUser {
    method constructor (line 7) | constructor() {
    method info (line 11) | info(){
    method info_wait (line 27) | async info_wait(){
    method reset_storage (line 42) | async reset_storage(){

FILE: 前端商城/common/check.js
  method GetUrlParame (line 7) | GetUrlParame(parameName) {
  method check_login_xcx (line 27) | check_login_xcx() {
  method check_login_h5 (line 54) | check_login_h5(e=''){
  method check_login_APP (line 76) | check_login_APP(){
  method judge_gl (line 86) | async judge_gl() {
  method a (line 110) | async a() {

FILE: 前端商城/common/h5_pay.js
  function M (line 1) | function M(n,e,i){o.WeixinJSBridge?WeixinJSBridge.invoke(n,x(e),function...
  function P (line 1) | function P(n,i,t){o.WeixinJSBridge?WeixinJSBridge.on(n,function(e){t&&t....
  function x (line 1) | function x(e){return(e=e||{}).appId=v.appId,e.verifyAppId=v.appId,e.veri...
  function V (line 1) | function V(e){return{timeStamp:e.timestamp+"",nonceStr:e.nonceStr,packag...
  function A (line 1) | function A(e,n,i){"openEnterpriseChat"!=e&&"openBusinessView"!==e||(n.er...
  function C (line 1) | function C(e){if(e){for(var n=0,i=e.length;n<i;++n){var t=e[n],o=c[t];o&...
  function B (line 1) | function B(e,n){if(!(!v.debug||n&&n.isInnerInvoke)){var i=a[e];i&&(e=i),...
  function L (line 1) | function L(){return(new Date).getTime()}
  function O (line 1) | function O(e){l&&(o.WeixinJSBridge?e():i.addEventListener&&i.addEventLis...

FILE: 前端商城/common/mixin.js
  method onLoad (line 3) | onLoad(){
  method onShow (line 7) | onShow() {
  method check_login (line 11) | check_login() {

FILE: 前端商城/common/switch.js
  method set_storage (line 5) | set_storage(){

FILE: 前端商城/common/wx_token.js
  class WxToken (line 12) | class WxToken {
    method constructor (line 13) | constructor() {
    method verify (line 19) | async verify(e) {
    method login (line 43) | login(type){
    method get_code (line 53) | get_code(type){
    method get_token (line 75) | get_token(e){
    method _veirfyFromServer (line 94) | _veirfyFromServer(token,type) {
    method GetUrlParame (line 114) | GetUrlParame(parameName) {

FILE: 前端商城/common/xcx_token.js
  class XcxToken (line 4) | class XcxToken {
    method constructor (line 5) | constructor() {
    method verify (line 12) | async verify() {
    method _veirfyFromServer (line 30) | _veirfyFromServer(token) {
    method getTokenFromServer (line 47) | getTokenFromServer() {

FILE: 前端商城/components/new_HB/mg-h5hb/common/canvas_x.js
  function makeImage (line 9) | function makeImage(options, callback) {
  function renderEditor (line 347) | function renderEditor(container, options, callback) {

FILE: 前端商城/components/new_HB/mg-h5hb/common/myUtil.js
  function globalurl (line 2) | function globalurl(){
  function auth_method (line 6) | function auth_method(){
  function globalajaxByput (line 19) | function globalajaxByput(url,data,fun){
  function globalajax (line 65) | function globalajax(url,data,fun){
  function globalUserId (line 112) | function globalUserId(fun){
  function judgeLevel (line 123) | function judgeLevel(fun){

FILE: 前端商城/components/new_HB/mg-h5hb/common/qrCode.js
  function QR8bitByte (line 29) | function QR8bitByte(data) {
  function QRCodeModel (line 78) | function QRCodeModel(typeNumber, errorCorrectLevel) {
  function QRPolynomial (line 635) | function QRPolynomial(num, shift) {
  function QRRSBlock (line 680) | function QRRSBlock(totalCount, dataCount) {
  function QRBitBuffer (line 878) | function QRBitBuffer() {
  function _isSupportCanvas (line 949) | function _isSupportCanvas() {
  function _getAndroid (line 954) | function _getAndroid() {
  function makeSVG (line 986) | function makeSVG(tag, attrs) {
  function _onMakeImage (line 1097) | function _onMakeImage() {
  function _safeSetDataURI (line 1130) | function _safeSetDataURI(fSuccess, fFail) {
  function _getTypeNumber (line 1290) | function _getTypeNumber(sText, nCorrectLevel) {
  function _getUTF8Length (line 1326) | function _getUTF8Length(sText) {

FILE: 前端商城/components/w-picker/w-picker.js
  method init (line 7) | init(start,end,mode="date",step,value,flag,disabled){
  method init (line 175) | init(dayStep=7){
  method initAreas (line 231) | initAreas(date){
  method initHours (line 266) | initHours(dateCol,hourCol){
  method init (line 299) | init(dayStep=7,startHour=8,endHour=20,minuteStep=1,afterStep=30){
  method initHours (line 355) | initHours(startHour=8,endHour=20,minuteStep=1,afterStep=30,date){
  method initMinutes (line 387) | initMinutes(startHour=8,endHour=20,minuteStep=1,afterStep=30,date,hour){
  method init (line 428) | init(start,end,value,flag){
  method initDays (line 491) | initDays(year,month){

FILE: 前端商城/model/category.js
  method getCategoryAll (line 6) | getCategoryAll(){
  method getCategoryOne (line 14) | getCategoryOne(){
  method getCategoryCid (line 22) | getCategoryCid(index){

FILE: 前端商城/model/order.js
  method postOrderAll (line 6) | postOrderAll(){
  method postOrderWxPay (line 14) | postOrderWxPay(index){
  method postOrderAppPay (line 21) | postOrderAppPay(index){
  method postOrderH5Pay (line 28) | postOrderH5Pay(index){
  method putOrderdel (line 36) | putOrderdel(index){
  method getPtOneItem (line 44) | getPtOneItem(index){
  method postPtCreateItem (line 51) | postPtCreateItem(obj){
  method postPtCreateItems (line 58) | postPtCreateItems(obj){

FILE: 前端商城/model/product.js
  function getProList (line 4) | function getProList(){
  function getProductCate (line 11) | function getProductCate(index){
  function getProductSearch (line 18) | function getProductSearch(key){
  function getProductFx (line 25) | function getProductFx(){
  function postProductEdit (line 32) | function postProductEdit(item){
  function getProduct (line 39) | function getProduct(index){
  function getPtItem (line 48) | function getPtItem(index){
  function getProductHotRecent (line 57) | function getProductHotRecent(){
  function getProductNewRecent (line 64) | function getProductNewRecent(){
  function postProductAllInfo (line 71) | function postProductAllInfo(){
  function putProductUpdate (line 78) | function putProductUpdate(index){
  function putProductDel (line 89) | function putProductDel(index){
  function postProductSimPrice (line 96) | function postProductSimPrice(item){
  function postWxCode (line 104) | function postWxCode(index){
  function postH5Code (line 114) | function postH5Code(index){
  function getEvalutes (line 123) | function getEvalutes(index){
  function getCoupons (line 129) | function getCoupons(){
  function postIsLike (line 136) | function postIsLike(index){
  function getAddCoupons (line 143) | function getAddCoupons(index){
  function putDelFavorite (line 150) | function putDelFavorite(index){
  function postAddFavorite (line 157) | function postAddFavorite(item){

FILE: 后台cms/public/static/UEditor/dialogs/attachment/attachment.js
  function initTabs (line 19) | function initTabs() {
  function setTabFocus (line 32) | function setTabFocus(id) {
  function initButtons (line 56) | function initButtons() {
  function UploadFile (line 87) | function UploadFile(target) {
  function addFile (line 181) | function addFile(file) {
  function removeFile (line 316) | function removeFile(file) {
  function updateTotalProgress (line 323) | function updateTotalProgress() {
  function setState (line 341) | function setState(val, files) {
  function updateStatus (line 417) | function updateStatus() {
  function OnlineFile (line 574) | function OnlineFile(target) {

FILE: 后台cms/public/static/UEditor/dialogs/background/background.js
  function initTabs (line 12) | function initTabs(){
  function initColorSelector (line 35) | function initColorSelector () {
  function initColorPicker (line 77) | function initColorPicker() {
  function initImagePanel (line 116) | function initImagePanel() {
  function updateFormState (line 121) | function updateFormState (radio, color, url, align, x, y) {
  function updateBackground (line 158) | function updateBackground () {
  function OnlineImage (line 184) | function OnlineImage(target) {

FILE: 后台cms/public/static/UEditor/dialogs/charts/charts.js
  function initChartsTypeView (line 49) | function initChartsTypeView () {
  function renderTable (line 64) | function renderTable ( table ) {
  function initUserConfig (line 104) | function initUserConfig ( config ) {
  function initEvent (line 125) | function initEvent () {
  function renderCharts (line 201) | function renderCharts () {
  function updateViewType (line 253) | function updateViewType ( index ) {
  function collectData (line 259) | function collectData () {
  function getUserConfig (line 283) | function getUserConfig () {
  function setUserConfig (line 302) | function setUserConfig ( config ) {
  function getSeriesAndCategories (line 317) | function getSeriesAndCategories () {
  function getTableDataFormat (line 367) | function getTableDataFormat () {
  function disableNotPieConfig (line 379) | function disableNotPieConfig() {
  function enableNotPieConfig (line 388) | function enableNotPieConfig() {
  function updateConfigItem (line 394) | function updateConfigItem ( value ) {
  function getSeriesForPieChart (line 420) | function getSeriesForPieChart () {
  function getTableData (line 445) | function getTableData () {
  function getTableInputValue (line 461) | function getTableInputValue () {
  function getCellValue (line 475) | function getCellValue ( cell ) {
  function syncTableData (line 505) | function syncTableData () {

FILE: 后台cms/public/static/UEditor/dialogs/emotion/emotion.js
  function initImgName (line 14) | function initImgName() {
  function initEvtHandler (line 30) | function initEvtHandler( conId ) {
  function InsertSmiley (line 47) | function InsertSmiley( url, evt ) {
  function switchTab (line 58) | function switchTab( index ) {
  function autoHeight (line 79) | function autoHeight( index ) {
  function createTab (line 117) | function createTab( tabName ) {
  function over (line 157) | function over( td, srcPath, posFlag ) {
  function out (line 164) | function out( td ) {
  function createTabList (line 171) | function createTabList( tabNum ) {
  function createArr (line 179) | function createArr( tabNum ) {

FILE: 后台cms/public/static/UEditor/dialogs/help/help.js
  function clickHandler (line 14) | function clickHandler( tabHeads,tabBodys,obj ) {
  function switchTab (line 41) | function switchTab( tabParentId ) {

FILE: 后台cms/public/static/UEditor/dialogs/image/image.js
  function initTabs (line 22) | function initTabs() {
  function setTabFocus (line 40) | function setTabFocus(id) {
  function initButtons (line 74) | function initButtons() {
  function initAlign (line 115) | function initAlign(){
  function setAlign (line 126) | function setAlign(align){
  function getAlign (line 139) | function getAlign(){
  function RemoteImage (line 146) | function RemoteImage(target) {
  function updatePreview (line 202) | function updatePreview(){
  function UploadImage (line 293) | function UploadImage(target) {
  function addFile (line 404) | function addFile(file) {
  function removeFile (line 534) | function removeFile(file) {
  function updateTotalProgress (line 541) | function updateTotalProgress() {
  function setState (line 559) | function setState(val, files) {
  function updateStatus (line 635) | function updateStatus() {
  function OnlineImage (line 798) | function OnlineImage(target) {
  function SearchImage (line 977) | function SearchImage() {

FILE: 后台cms/public/static/UEditor/dialogs/music/music.js
  function Music (line 1) | function Music() {

FILE: 后台cms/public/static/UEditor/dialogs/scrawl/scrawl.js
  function _appendStyle (line 419) | function _appendStyle() {
  function _getDom (line 441) | function _getDom() {
  function ue_callback (line 570) | function ue_callback(url, state) {
  function removeMaskLayer (line 615) | function removeMaskLayer() {
  function addMaskLayer (line 622) | function addMaskLayer(html) {
  function exec (line 629) | function exec(scrawlObj) {

FILE: 后台cms/public/static/UEditor/dialogs/searchreplace/searchreplace.js
  function clickHandler (line 19) | function clickHandler( tabHeads,tabBodys,obj ) {
  function switchTab (line 43) | function switchTab( tabParentId ) {
  function getMatchCase (line 61) | function getMatchCase(id) {

FILE: 后台cms/public/static/UEditor/dialogs/spechars/spechars.js
  function toArray (line 55) | function toArray(str) {

FILE: 后台cms/public/static/UEditor/dialogs/video/video.js
  function initTabs (line 24) | function initTabs(){
  function initVideo (line 43) | function initVideo(){
  function addOkListener (line 73) | function addOkListener(){
  function updateAlignButton (line 98) | function updateAlignButton( align ) {
  function insertSingle (line 116) | function insertSingle(){
  function insertSearch (line 135) | function insertSearch(id){
  function findFocus (line 156) | function findFocus( id, returnProperty ) {
  function convert_url (line 167) | function convert_url(url){
  function checkNum (line 190) | function checkNum( nodes ) {
  function isNumber (line 207) | function isNumber( value ) {
  function createAlignButton (line 215) | function createAlignButton( ids ) {
  function switchSelect (line 235) | function switchSelect( selectParentId ) {
  function addUrlChangeListener (line 252) | function addUrlChangeListener(url){
  function createPreviewVideo (line 268) | function createPreviewVideo(url){
  function insertUpload (line 286) | function insertUpload(){
  function initUpload (line 312) | function initUpload(){
  function UploadFile (line 318) | function UploadFile(target) {
  function addFile (line 412) | function addFile(file) {
  function removeFile (line 547) | function removeFile(file) {
  function updateTotalProgress (line 554) | function updateTotalProgress() {
  function setState (line 572) | function setState(val, files) {
  function updateStatus (line 648) | function updateStatus() {

FILE: 后台cms/public/static/UEditor/dialogs/wordimage/tangram.js
  function _createString (line 577) | function _createString(){
  function _checkReady (line 587) | function _checkReady(target){
  function _callFn (line 602) | function _callFn(callQueue, target){
  function _createFunName (line 618) | function _createFunName(fun){
  function _render (line 639) | function _render(options){
  function _check (line 728) | function _check(){
  function _call (line 743) | function _call(){
  function getCallBack (line 1197) | function getCallBack(onTimeOut){
  function encodeString (line 1354) | function encodeString(source) {
  function encodeArray (line 1376) | function encodeArray(source) {
  function pad (line 1405) | function pad(source) {
  function encodeDate (line 1413) | function encodeDate(source){

FILE: 后台cms/public/static/UEditor/dialogs/wordimage/wordimage.js
  function hideFlash (line 24) | function hideFlash(){
  function addOkListener (line 28) | function addOkListener() {
  function addUploadListener (line 59) | function addUploadListener() {
  function showLocalPath (line 66) | function showLocalPath(id) {
  function createFlashUploader (line 83) | function createFlashUploader(opt, callbacks) {
  function extendProperty (line 112) | function extendProperty(fromObj, toObj) {
  function getPasteData (line 123) | function getPasteData(id) {
  function createCopyButton (line 131) | function createCopyButton(id, dataFrom) {

FILE: 后台cms/public/static/UEditor/third-party/SyntaxHighlighter/shCore.js
  function clone (line 499) | function clone (regex, additionalFlags) {
  function getNativeFlags (line 513) | function getNativeFlags (regex) {
  function runTokens (line 521) | function runTokens (pattern, index, scope, context) {
  function indexOf (line 550) | function indexOf (array, item, from) {
  function defaultGetHtml (line 801) | function defaultGetHtml(highlighter, name)
  function getValue (line 839) | function getValue(name)
  function hasClass (line 1036) | function hasClass(target, className)
  function addClass (line 1046) | function addClass(target, className)
  function removeClass (line 1057) | function removeClass(target, className)
  function toArray (line 1068) | function toArray(source)
  function splitLines (line 1083) | function splitLines(block)
  function getHighlighterId (line 1093) | function getHighlighterId(id)
  function getHighlighterById (line 1104) | function getHighlighterById(id)
  function getHighlighterDivById (line 1114) | function getHighlighterDivById(id)
  function storeHighlighter (line 1124) | function storeHighlighter(highlighter)
  function findElement (line 1137) | function findElement(target, search, reverse /* optional */)
  function findParentElement (line 1170) | function findParentElement(target, className)
  function indexOf (line 1182) | function indexOf(array, searchElement, fromIndex)
  function guid (line 1196) | function guid(prefix)
  function merge (line 1208) | function merge(obj1, obj2)
  function toBoolean (line 1226) | function toBoolean(value)
  function popup (line 1241) | function popup(url, name, width, height, options)
  function attachEvent (line 1265) | function attachEvent(obj, type, func, scope)
  function alert (line 1297) | function alert(str)
  function findBrush (line 1309) | function findBrush(alias, showAlert)
  function eachLine (line 1352) | function eachLine(str, callback)
  function trimFirstAndLastLines (line 1370) | function trimFirstAndLastLines(str)
  function parseParams (line 1390) | function parseParams(str)
  function wrapLinesWithCode (line 1434) | function wrapLinesWithCode(str, css)
  function padNumber (line 1484) | function padNumber(number, length)
  function processTabs (line 1501) | function processTabs(code, tabSize)
  function processSmartTabs (line 1518) | function processSmartTabs(code, tabSize)
  function fixInputString (line 1566) | function fixInputString(str)
  function trim (line 1585) | function trim(str)
  function unindent (line 1595) | function unindent(str)
  function matchesSortCallback (line 1637) | function matchesSortCallback(m1, m2)
  function getMatches (line 1664) | function getMatches(code, regexInfo)
  function processUrls (line 1695) | function processUrls(code)
  function getSyntaxHighlighterScriptTags (line 1723) | function getSyntaxHighlighterScriptTags()
  function stripCData (line 1742) | function stripCData(original)
  function quickCodeHandler (line 1774) | function quickCodeHandler(e)
  function offsetMatches (line 1880) | function offsetMatches(matches, offset)
  function process (line 1886) | function process(match, info)
  function getBrushNameCss (line 2169) | function getBrushNameCss(match)
  function Brush (line 2388) | function Brush()
  function Brush (line 2432) | function Brush()
  function Brush (line 2491) | function Brush()
  function Brush (line 2534) | function Brush()
  function Brush (line 2618) | function Brush()
  function Brush (line 2699) | function Brush()
  function Brush (line 2748) | function Brush()
  function Brush (line 2823) | function Brush()
  function Brush (line 2862) | function Brush()
  function Brush (line 2887) | function Brush()
  function Brush (line 2923) | function Brush()
  function Brush (line 2974) | function Brush()
  function Brush (line 3015) | function Brush()
  function Brush (line 3057) | function Brush()
  function Brush (line 3093) | function Brush()
  function Brush (line 3170) | function Brush()
  function Brush (line 3242) | function Brush()
  function Brush (line 3259) | function Brush()
  function Brush (line 3318) | function Brush()
  function Brush (line 3366) | function Brush()
  function Brush (line 3405) | function Brush()
  function Brush (line 3483) | function Brush()
  function Brush (line 3518) | function Brush()
  function Brush (line 3568) | function Brush()
  function Brush (line 3608) | function Brush()

FILE: 后台cms/public/static/UEditor/third-party/codemirror/codemirror.js
  function CodeMirror (line 11) | function CodeMirror(place, givenOptions) {
  function lookupKey (line 1870) | function lookupKey(name, extraMap, map) {
  function isModifierKey (line 1885) | function isModifierKey(event) {
  function save (line 1896) | function save() {textarea.value = instance.getValue();}
  function wrappedSubmit (line 1902) | function wrappedSubmit() {
  function copyState (line 1933) | function copyState(mode, state) {
  function startState (line 1945) | function startState(mode, a1, a2) {
  function StringStream (line 1951) | function StringStream(string, tabSize) {
  function cased (line 1990) | function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
  function MarkedText (line 2006) | function MarkedText(from, to, className, set) {
  function Bookmark (line 2036) | function Bookmark(pos) {
  function Line (line 2072) | function Line(text, styles) {
  function span (line 2234) | function span(text, style) {
  function nextMark (line 2259) | function nextMark() {
  function copyStyles (line 2306) | function copyStyles(from, to, source, dest) {
  function LeafChunk (line 2322) | function LeafChunk(lines) {
  function BranchChunk (line 2356) | function BranchChunk(children) {
  function getLineAt (line 2454) | function getLineAt(chunk, n) {
  function lineNo (line 2464) | function lineNo(line) {
  function lineAtHeight (line 2475) | function lineAtHeight(chunk, h) {
  function heightAtLine (line 2493) | function heightAtLine(chunk, n) {
  function History (line 2510) | function History() {
  function stopMethod (line 2541) | function stopMethod() {e_stop(this);}
  function addStop (line 2543) | function addStop(event) {
  function e_preventDefault (line 2548) | function e_preventDefault(e) {
  function e_stopPropagation (line 2552) | function e_stopPropagation(e) {
  function e_stop (line 2556) | function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}
  function e_target (line 2561) | function e_target(e) {return e.target || e.srcElement;}
  function e_button (line 2562) | function e_button(e) {
  function connect (line 2571) | function connect(node, type, handler, disconnect) {
  function Delayed (line 2584) | function Delayed() {this.id = null;}
  function countColumn (line 2610) | function countColumn(string, end, tabSize) {
  function computedStyle (line 2622) | function computedStyle(elt) {
  function eltOffset (line 2629) | function eltOffset(node, screen) {
  function eltText (line 2665) | function eltText(node) {
  function posEq (line 2670) | function posEq(a, b) {return a.line == b.line && a.ch == b.ch;}
  function posLess (line 2671) | function posLess(a, b) {return a.line < b.line || (a.line == b.line && a...
  function copyPos (line 2672) | function copyPos(x) {return {line: x.line, ch: x.ch};}
  function htmlEscape (line 2675) | function htmlEscape(str) {
  function editEnd (line 2697) | function editEnd(from, to) {
  function indexOf (line 2705) | function indexOf(collection, elt) {
  function isWordChar (line 2711) | function isWordChar(ch) {
  function inText (line 2775) | function inText(stream, state) {
  function inTag (line 2821) | function inTag(stream, state) {
  function inAttribute (line 2842) | function inAttribute(quote) {
  function inBlock (line 2854) | function inBlock(style, terminator) {
  function doctype (line 2866) | function doctype(depth) {
  function pass (line 2888) | function pass() {
  function cont (line 2891) | function cont() {
  function pushContext (line 2896) | function pushContext(tagName, startOfLine) {
  function popContext (line 2906) | function popContext() {
  function element (line 2910) | function element(type) {
  function endtag (line 2926) | function endtag(startOfLine) {
  function endclosetag (line 2935) | function endclosetag(err) {
  function attributes (line 2944) | function attributes(type) {
  function attvalue (line 2950) | function attvalue(type) {
  function attvaluemaybe (line 2955) | function attvaluemaybe(type) {
  function kw (line 3021) | function kw(type) {return {type: type, style: "keyword"};}
  function chain (line 3037) | function chain(stream, state, f) {
  function nextUntilUnescaped (line 3042) | function nextUntilUnescaped(stream, end) {
  function ret (line 3055) | function ret(tp, style, cont) {
  function jsTokenBase (line 3060) | function jsTokenBase(stream, state) {
  function jsTokenString (line 3108) | function jsTokenString(quote) {
  function jsTokenComment (line 3116) | function jsTokenComment(stream, state) {
  function JSLexical (line 3132) | function JSLexical(indented, column, type, align, prev, info) {
  function inScope (line 3141) | function inScope(state, varname) {
  function parseJS (line 3146) | function parseJS(state, style, type, content, stream) {
  function pass (line 3170) | function pass() {
  function cont (line 3173) | function cont() {
  function register (line 3177) | function register(varname) {
  function pushcontext (line 3190) | function pushcontext() {
  function popcontext (line 3194) | function popcontext() {
  function pushlex (line 3198) | function pushlex(type, info) {
  function poplex (line 3206) | function poplex() {
  function expect (line 3216) | function expect(wanted) {
  function statement (line 3224) | function statement(type) {
  function expression (line 3242) | function expression(type) {
  function maybeexpression (line 3252) | function maybeexpression(type) {
  function maybeoperator (line 3257) | function maybeoperator(type, value) {
  function maybelabel (line 3265) | function maybelabel(type) {
  function property (line 3269) | function property(type) {
  function objprop (line 3272) | function objprop(type) {
  function commasep (line 3276) | function commasep(what, end) {
  function block (line 3287) | function block(type) {
  function vardef1 (line 3291) | function vardef1(type, value) {
  function vardef2 (line 3295) | function vardef2(type, value) {
  function forspec1 (line 3299) | function forspec1(type) {
  function formaybein (line 3305) | function formaybein(type, value) {
  function forspec2 (line 3309) | function forspec2(type, value) {
  function forspec3 (line 3314) | function forspec3(type) {
  function functiondef (line 3317) | function functiondef(type, value) {
  function funarg (line 3321) | function funarg(type, value) {
  function ret (line 3377) | function ret(style, tp) {type = tp; return style;}
  function tokenBase (line 3379) | function tokenBase(stream, state) {
  function tokenCComment (line 3420) | function tokenCComment(stream, state) {
  function tokenSGMLComment (line 3432) | function tokenSGMLComment(stream, state) {
  function tokenString (line 3444) | function tokenString(quote) {
  function html (line 3504) | function html(stream, state) {
  function maybeBackup (line 3520) | function maybeBackup(stream, pat, style) {
  function javascript (line 3526) | function javascript(stream, state) {
  function css (line 3536) | function css(stream, state) {

FILE: 后台cms/public/static/UEditor/third-party/highcharts/adapters/standalone-framework.js
  function o (line 8) | function o(c){function a(a,b,d){a.removeEventListener(b,d,!1)}function d...

FILE: 后台cms/public/static/UEditor/third-party/highcharts/adapters/standalone-framework.src.js
  function augment (line 29) | function augment(obj) {

FILE: 后台cms/public/static/UEditor/third-party/highcharts/highcharts-more.js
  function J (line 8) | function J(a,b,c){this.init.call(this,a,b,c)}
  function K (line 8) | function K(a,b,c){a.call(this,b,c);if(this.chart.polar)this.closeSegment...
  function L (line 8) | function L(a,b){var c=this.chart,d=this.options.animation,g=this.group,f...

FILE: 后台cms/public/static/UEditor/third-party/highcharts/highcharts-more.src.js
  function Pane (line 42) | function Pane(options, chart, firstAxis) {
  function initArea (line 2028) | function initArea(proceed, chart, options) {
  function polarAnimate (line 2199) | function polarAnimate(proceed, init) {

FILE: 后台cms/public/static/UEditor/third-party/highcharts/highcharts.js
  function r (line 8) | function r(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}
  function x (line 8) | function x(){var a,b=arguments.length,c={},d=function(a,b){var c,h;typeo...
  function C (line 8) | function C(a,b){return parseInt(a,b||10)}
  function ea (line 8) | function ea(a){return typeof a==="string"}
  function T (line 8) | function T(a){return typeof a===
  function Ia (line 9) | function Ia(a){return Object.prototype.toString.call(a)==="[object Array]"}
  function sa (line 9) | function sa(a){return typeof a==="number"}
  function na (line 9) | function na(a){return R.log(a)/R.LN10}
  function fa (line 9) | function fa(a){return R.pow(10,a)}
  function ga (line 9) | function ga(a,b){for(var c=a.length;c--;)if(a[c]===b){a.splice(c,1);break}}
  function u (line 9) | function u(a){return a!==w&&a!==null}
  function v (line 9) | function v(a,b,c){var d,e;if(ea(b))u(c)?a.setAttribute(b,c):a&&a.getAttr...
  function ja (line 9) | function ja(a){return Ia(a)?
  function o (line 10) | function o(){var a=arguments,b,c,d=a.length;for(b=0;b<d;b++)if(c=a[b],ty...
  function K (line 10) | function K(a,b){if(ta&&b&&b.opacity!==w)b.filter="alpha(opacity="+b.opac...
  function U (line 10) | function U(a,b,c,d,e){a=y.createElement(a);b&&r(a,b);e&&K(a,{padding:0,b...
  function ha (line 10) | function ha(a,b){var c=function(){};c.prototype=new a;r(c.prototype,b);r...
  function Aa (line 10) | function Aa(a,b,c,d){var e=M.lang,a=+a||0,f=b===-1?(a.toString().split("...
  function Ba (line 11) | function Ba(a,b){return Array((b||2)+1-String(a).length).join(0)+a}
  function mb (line 11) | function mb(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slic...
  function Ca (line 11) | function Ca(a,b){for(var c="{",d=!1,
  function nb (line 12) | function nb(a){return R.pow(10,P(R.log(a)/R.LN10))}
  function ob (line 12) | function ob(a,b,c,d){var e,c=o(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allo...
  function Cb (line 13) | function Cb(a,b){var c=b||[[Db,[1,2,5,10,20,25,50,100,200,500]],[pb,[1,2...
  function Eb (line 14) | function Eb(a,b,c,d){var e=[],f={},g=M.global.useUTC,h,i=new Date(b),j=a...
  function Jb (line 15) | function Jb(){this.symbol=this.color=0}
  function Kb (line 15) | function Kb(a,b){var c=a.length,d,e;for(e=0;e<c;e++)a[e].ss_i=e;a.sort(f...
  function Ja (line 16) | function Ja(a){for(var b=a.length,c=a[0];b--;)a[b]<c&&(c=a[b]);return c}
  function va (line 16) | function va(a){for(var b=a.length,c=a[0];b--;)a[b]>c&&(c=a[b]);return c}
  function Ka (line 16) | function Ka(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destr...
  function Ta (line 16) | function Ta(a){cb||(cb=U(Ea));a&&cb.appendChild(a);cb.innerHTML=""}
  function ka (line 16) | function ka(a,b){var c="Highcharts error #"+a+": www.highcharts.com/erro...
  function ia (line 16) | function ia(a){return parseFloat(a.toPrecision(14))}
  function La (line 17) | function La(a,b){Fa=o(a,b.animation)}
  function Lb (line 17) | function Lb(){var a=M.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set...
  function wa (line 17) | function wa(){}
  function Ma (line 17) | function Ma(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!...
  function vb (line 17) | function vb(a,b){this.axis=a;if(b)this.options=
  function Mb (line 18) | function Mb(a,b,c,d,e,f){var g=a.chart.inverted;this.axis=a;this.isNegat...
  function db (line 18) | function db(){this.init.apply(this,arguments)}
  function wb (line 18) | function wb(){this.init.apply(this,arguments)}
  function xb (line 19) | function xb(a,b){this.init(a,b)}
  function eb (line 19) | function eb(a,b){this.init(a,b)}
  function yb (line 19) | function yb(){this.init.apply(this,arguments)}
  function j (line 72) | function j(){var a,b;a=o.element.style;L=(Oa===void 0||la===void 0||q.st...
  function k (line 73) | function k(){var a=q.styles,a=a&&a.textAlign,b=kb+da*(1-s),c;c=h?0:v;if(...
  function l (line 73) | function l(a,b){A?A.attr(a,b):lb[a]=b}
  function m (line 73) | function m(){o.add(q);q.attr({text:a,x:b,y:c});A&&u(e)&&q.attr({anchorX:...
  function a (line 93) | function a(){var a=b.length,d;for(d=0;d<a;d++)b[d]();b=[]}
  function a (line 193) | function a(a){var g=c.width||jb(d,"width"),h=c.height||jb(d,"height"),a=...
  function a (line 248) | function a(){var a={width:b.yAxis.len,height:b.xAxis.len};n(["group","ma...

FILE: 后台cms/public/static/UEditor/third-party/highcharts/highcharts.src.js
  function extend (line 128) | function extend(a, b) {
  function merge (line 145) | function merge() {
  function hash (line 188) | function hash() {
  function pInt (line 204) | function pInt(s, mag) {
  function isString (line 212) | function isString(s) {
  function isObject (line 220) | function isObject(obj) {
  function isArray (line 228) | function isArray(obj) {
  function isNumber (line 236) | function isNumber(n) {
  function log2lin (line 240) | function log2lin(num) {
  function lin2log (line 243) | function lin2log(num) {
  function erase (line 252) | function erase(arr, item) {
  function defined (line 267) | function defined(obj) {
  function attr (line 279) | function attr(elem, prop, value) {
  function splat (line 308) | function splat(obj) {
  function pick (line 316) | function pick() {
  function css (line 334) | function css(el, styles) {
  function createElement (line 351) | function createElement(tag, attribs, styles, parent, nopad) {
  function extendClass (line 373) | function extendClass(parent, members) {
  function numberFormat (line 387) | function numberFormat(number, decimals, decPoint, thousandsSep) {
  function pad (line 409) | function pad(number, length) {
  function wrap (line 422) | function wrap(obj, method, func) {
  function formatSingle (line 501) | function formatSingle(format, val) {
  function format (line 525) | function format(str, ctx) {
  function getMagnitude (line 575) | function getMagnitude(num) {
  function normalizeTickInterval (line 586) | function normalizeTickInterval(interval, multiples, magnitude, options) {
  function normalizeTimeTickInterval (line 629) | function normalizeTimeTickInterval(tickInterval, unitsOption) {
  function getTimeTicks (line 710) | function getTimeTicks(normalizedInterval, min, max, startOfWeek) {
  function ChartCounters (line 822) | function ChartCounters() {
  function stableSort (line 852) | function stableSort(arr, sortFunction) {
  function arrayMin (line 878) | function arrayMin(data) {
  function arrayMax (line 895) | function arrayMax(data) {
  function destroyObjectProperties (line 914) | function destroyObjectProperties(obj, except) {
  function discardElement (line 933) | function discardElement(element) {
  function error (line 949) | function error(code, stop) {
  function correctFloat (line 962) | function correctFloat(num) {
  function setAnimation (line 974) | function setAnimation(animation, chart) {
  function setTimeMethods (line 1821) | function setTimeMethods() {
  function setOptions (line 1854) | function setOptions(options) {
  function getOptions (line 1874) | function getOptions() {
  function init (line 1891) | function init(input) {
  function get (line 1925) | function get(format) {
  function brighten (line 1954) | function brighten(alpha) {
  function setOpacity (line 1979) | function setOpacity(alpha) {
  function SVGElement (line 2000) | function SVGElement() {}
  function updateBoxSize (line 4272) | function updateBoxSize() {
  function updateTextPadding (line 4312) | function updateTextPadding() {
  function boxAttr (line 4344) | function boxAttr(key, value) {
  function getSizeAfterAdd (line 4352) | function getSizeAfterAdd() {
  function drawDeferred (line 5727) | function drawDeferred() {
  function Tick (line 5763) | function Tick(axis, pos, type, noLabel) {
  function PlotLineOrBand (line 6170) | function PlotLineOrBand(axis, options) {
  function StackItem (line 6345) | function StackItem(axis, options, isNegative, x, stackOption, stacking) {
  function Axis (line 6456) | function Axis() {
  function Tooltip (line 8560) | function Tooltip() {
  function Pointer (line 9010) | function Pointer(chart, options) {
  function Legend (line 9848) | function Legend(chart, options) {
  function Chart (line 10518) | function Chart() {
  function reflow (line 11514) | function reflow(e) {
  function setInvert (line 14818) | function setInvert() {

FILE: 后台cms/public/static/UEditor/third-party/highcharts/modules/annotations.js
  function m (line 1) | function m(a){return typeof a==="number"}
  function n (line 1) | function n(a){return a!==D&&a!==null}

FILE: 后台cms/public/static/UEditor/third-party/highcharts/modules/annotations.src.js
  function defaultOptions (line 26) | function defaultOptions(shapeType) {
  function isArray (line 64) | function isArray(obj) {
  function isNumber (line 68) | function isNumber(n) {
  function defined (line 72) | function defined(obj) {
  function translatePath (line 76) | function translatePath(d, xAxis, yAxis, xOffset, yOffset) {

FILE: 后台cms/public/static/UEditor/third-party/highcharts/modules/canvas-tools.js
  function RGBColor (line 21) | function RGBColor(m){this.ok=!1;m.charAt(0)=="#"&&(m=m.substr(1,6));var ...
  function m (line 31) | function m(){var a={FRAMERATE:30,MAX_VIRTUAL_PIXELS:3E4};a.init=function...

FILE: 后台cms/public/static/UEditor/third-party/highcharts/modules/canvas-tools.src.js
  function RGBColor (line 8) | function RGBColor(color_string)
  function build (line 382) | function build() {

FILE: 后台cms/public/static/UEditor/third-party/highcharts/modules/drilldown.js
  function q (line 1) | function q(b,a,c){return"rgba("+[Math.round(b[0]+(a[0]-b[0])*c),Math.rou...

FILE: 后台cms/public/static/UEditor/third-party/highcharts/modules/drilldown.src.js
  function tweenColors (line 28) | function tweenColors(startColor, endColor, pos) {

FILE: 后台cms/public/static/UEditor/third-party/highcharts/modules/map.js
  function x (line 8) | function x(a,b,c){for(var d=4,e=[];d--;)e[d]=Math.round(b.rgba[d]+(a.rgb...

FILE: 后台cms/public/static/UEditor/third-party/highcharts/modules/map.src.js
  function tweenColors (line 40) | function tweenColors(from, to, pos) {

FILE: 后台cms/public/static/UEditor/third-party/highcharts/modules/no-data-to-display.js
  function f (line 10) | function f(){return!!this.points.length}
  function g (line 10) | function g(){this.hasData()?this.hideNoData():this.showNoData()}

FILE: 后台cms/public/static/UEditor/third-party/highcharts/modules/no-data-to-display.src.js
  function hasDataPie (line 43) | function hasDataPie() {
  function handleNoData (line 111) | function handleNoData() {

FILE: 后台cms/public/static/UEditor/third-party/jquery-1.10.2.js
  function isArraylike (line 983) | function isArraylike( obj ) {
  function Sizzle (line 1183) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 1298) | function createCache() {
  function markFunction (line 1316) | function markFunction( fn ) {
  function assert (line 1325) | function assert( fn ) {
  function addHandle (line 1347) | function addHandle( attrs, handler ) {
  function siblingCheck (line 1362) | function siblingCheck( a, b ) {
  function createInputPseudo (line 1389) | function createInputPseudo( type ) {
  function createButtonPseudo (line 1400) | function createButtonPseudo( type ) {
  function createPositionalPseudo (line 1411) | function createPositionalPseudo( fn ) {
  function setFilters (line 2394) | function setFilters() {}
  function tokenize (line 2398) | function tokenize( selector, parseOnly ) {
  function toSelector (line 2465) | function toSelector( tokens ) {
  function addCombinator (line 2475) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2525) | function elementMatcher( matchers ) {
  function condense (line 2539) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2560) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2653) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2708) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function multipleContexts (line 2836) | function multipleContexts( selector, contexts, results ) {
  function select (line 2845) | function select( selector, context, results, seed ) {
  function createOptions (line 2985) | function createOptions( options ) {
  function internalData (line 3568) | function internalData( elem, name, data, pvt /* Internal Use Only */ ){
  function internalRemoveData (line 3657) | function internalRemoveData( elem, name, pvt ) {
  function dataAttr (line 3854) | function dataAttr( elem, key, data ) {
  function isEmptyDataObject (line 3886) | function isEmptyDataObject( obj ) {
  function returnTrue (line 4712) | function returnTrue() {
  function returnFalse (line 4716) | function returnFalse() {
  function safeActiveElement (line 4720) | function safeActiveElement() {
  function sibling (line 5838) | function sibling( cur, dir ) {
  function winnow (line 5956) | function winnow( elements, qualifier, not ) {
  function createSafeFragment (line 5984) | function createSafeFragment( document ) {
  function manipulationTarget (line 6298) | function manipulationTarget( elem, content ) {
  function disableScript (line 6308) | function disableScript( elem ) {
  function restoreScript (line 6312) | function restoreScript( elem ) {
  function setGlobalEval (line 6323) | function setGlobalEval( elems, refElements ) {
  function cloneCopyEvent (line 6331) | function cloneCopyEvent( src, dest ) {
  function fixCloneNodeIssues (line 6359) | function fixCloneNodeIssues( src, dest ) {
  function getAll (line 6452) | function getAll( context, tag ) {
  function fixDefaultChecked (line 6475) | function fixDefaultChecked( elem ) {
  function vendorPropName (line 6817) | function vendorPropName( style, name ) {
  function isHidden (line 6839) | function isHidden( elem, el ) {
  function showHide (line 6846) | function showHide( elements, show ) {
  function setPositiveNumber (line 7175) | function setPositiveNumber( elem, value, subtract ) {
  function augmentWidthOrHeight (line 7183) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
  function getWidthOrHeight (line 7222) | function getWidthOrHeight( elem, name, extra ) {
  function css_defaultDisplay (line 7266) | function css_defaultDisplay( nodeName ) {
  function actualDisplay (line 7298) | function actualDisplay( name, doc ) {
  function buildParams (line 7527) | function buildParams( prefix, obj, traditional, add ) {
  function addToPrefiltersOrTransports (line 7642) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 7674) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 7701) | function ajaxExtend( target, src ) {
  function done (line 8149) | function done( status, nativeStatusText, responses, headers ) {
  function ajaxHandleResponses (line 8296) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 8351) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function createStandardXHR (line 8619) | function createStandardXHR() {
  function createActiveXHR (line 8625) | function createActiveXHR() {
  function createFxNow (line 8871) | function createFxNow() {
  function createTween (line 8878) | function createTween( value, prop, animation ) {
  function Animation (line 8892) | function Animation( elem, properties, options ) {
  function propFilter (line 8996) | function propFilter( props, specialEasing ) {
  function defaultPrefilter (line 9063) | function defaultPrefilter( elem, props, opts ) {
  function Tween (line 9188) | function Tween( elem, options, prop, end, easing ) {
  function genFx (line 9412) | function genFx( type, includeWidth ) {
  function getWindow (line 9708) | function getWindow( elem ) {

FILE: 后台cms/public/static/UEditor/third-party/video-js/video.dev.js
  function returnTrue (line 410) | function returnTrue() { return true; }
  function returnFalse (line 411) | function returnFalse() { return false; }
  function F (line 656) | function F() {}
  function createMethod (line 5055) | function createMethod(methodName){
  function walk (line 6995) | function walk(holder, key) {

FILE: 后台cms/public/static/UEditor/third-party/video-js/video.js
  function m (line 1) | function m(){return function(){}}
  function p (line 1) | function p(a){return function(){return this[a]}}
  function s (line 1) | function s(a){return function(){return a}}
  function u (line 1) | function u(a,c,d){if("string"===typeof a){0===a.indexOf("#")&&(a=a.slice...
  function c (line 6) | function c(){return f}
  function d (line 6) | function d(){return l}
  function e (line 8) | function e(){u.o(a,c,e);d.apply(this,arguments)}
  function c (line 9) | function c(){}
  function e (line 10) | function e(){return c.apply(a,arguments)}
  function D (line 25) | function D(a){a.u("vjs-lock-showing")}
  function E (line 26) | function E(a,c,d,e){if(d!==b)return a.a.style[c]=-1!==(""+d).indexOf("%"...
  function F (line 32) | function F(a,c){var d,e,g,j;d=a.a;e=u.ad(d);j=g=d.offsetWidth;d=a.handle...
  function ca (line 34) | function ca(a,c){a.Z(c);c.d("click",u.bind(a,function(){D(this)}))}
  function H (line 37) | function H(a){a.pa=f;a.wa.n("vjs-lock-showing");a.a.setAttribute("aria-p...
  function G (line 38) | function G(a){a.pa=l;D(a.wa);a.a.setAttribute("aria-pressed",l)}
  function da (line 42) | function da(a){var c={sources:[],tracks:[]};u.k.B(c,u.xb(a));if(a.hasChi...
  function I (line 45) | function I(a,c,d){a.h?(a.aa=l,a.h.D(),a.Eb&&(a.Eb=l,clearInterval(a.Ra))...
  function J (line 46) | function J(a){a.Fb=l;a.za();a.o("play",a.Cc);a.o("pause",a.za)}
  function L (line 48) | function L(a,c,d){if(a.h&&!a.h.aa)a.h.L(function(){this[c](d)});else try...
  function K (line 48) | function K(a,c){if(a.h&&a.h.aa)try{return a.h[c]()}catch(d){throw a.h[c]...
  function M (line 53) | function M(a){a.cd=l;u.o(document,"keydown",a.lc);document.documentEleme...
  function ea (line 86) | function ea(){var a=u.media.Va[i];return function(){throw Error('The "'+...
  function fa (line 99) | function fa(){var a=R[T],c=a.charAt(0).toUpperCase()+a.slice(1);Q["set"+...
  function U (line 99) | function U(a){Q[a]=function(){return this.a.vjs_getProperty(a)}}
  function V (line 105) | function V(a){a.Aa=a.Aa||[];return a.Aa}
  function W (line 105) | function W(a,c,d){for(var e=a.Aa,g=0,j=e.length,k,q;g<j;g++)k=e[g],k.id(...
  function X (line 108) | function X(a){0===a.ha&&a.load();0===a.ga&&(a.b.d("timeupdate",u.bind(a,...
  function Y (line 110) | function Y(a){var c=a.split(":");a=0;var d,e,g;3==c.length?(d=c[0],e=c[1...
  function d (line 121) | function d(a,e){var k,q,n=a[e];if(n&&"object"===typeof n)for(k in n)Obje...
  function $ (line 123) | function $(a,c){var d=a.split("."),e=ga;!(d[0]in e)&&e.execScript&&e.exe...

FILE: 后台cms/public/static/UEditor/third-party/webuploader/webuploader.custom.js
  function uncurryThis (line 194) | function uncurryThis( fn ) {
  function bindFn (line 200) | function bindFn( fn, context ) {
  function createObject (line 206) | function createObject( proto ) {
  function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 512) | function triggerHanders( events, args ) {
  function Uploader (line 721) | function Uploader( opts ) {
  function Runtime (line 903) | function Runtime( options ) {
  function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
  function Blob (line 1139) | function Blob( ruid, source ) {
  function File (line 1183) | function File( ruid, file ) {
  function FilePicker (line 1223) | function FilePicker( opts ) {
  function isArrayLike (line 1358) | function isArrayLike( obj ) {
  function Widget (line 1375) | function Widget( uploader ) {
  function Image (line 1653) | function Image( opts ) {
  function gid (line 2022) | function gid() {
  function WUFile (line 2033) | function WUFile( source ) {
  function Queue (line 2210) | function Queue() {
  function Transport (line 2758) | function Transport( opts ) {
  function CuteFile (line 2971) | function CuteFile( file, chunkSize ) {
  function CompBase (line 3541) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 3573) | function Html5Runtime() {
  function detectVerticalSquash (line 4559) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 4611) | function detectSubsampling( img ) {
  function JPEGEncoder (line 4727) | function JPEGEncoder(quality) {

FILE: 后台cms/public/static/UEditor/third-party/webuploader/webuploader.flashonly.js
  function uncurryThis (line 194) | function uncurryThis( fn ) {
  function bindFn (line 200) | function bindFn( fn, context ) {
  function createObject (line 206) | function createObject( proto ) {
  function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 512) | function triggerHanders( events, args ) {
  function Uploader (line 721) | function Uploader( opts ) {
  function Runtime (line 903) | function Runtime( options ) {
  function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
  function Blob (line 1139) | function Blob( ruid, source ) {
  function File (line 1183) | function File( ruid, file ) {
  function FilePicker (line 1223) | function FilePicker( opts ) {
  function isArrayLike (line 1358) | function isArrayLike( obj ) {
  function Widget (line 1375) | function Widget( uploader ) {
  function Image (line 1653) | function Image( opts ) {
  function gid (line 2022) | function gid() {
  function WUFile (line 2033) | function WUFile( source ) {
  function Queue (line 2210) | function Queue() {
  function Transport (line 2758) | function Transport( opts ) {
  function CuteFile (line 2971) | function CuteFile( file, chunkSize ) {
  function hashString (line 3715) | function hashString( str ) {
  function CompBase (line 3761) | function CompBase( owner, runtime ) {
  function getFlashVersion (line 3795) | function getFlashVersion() {
  function FlashRuntime (line 3813) | function FlashRuntime() {

FILE: 后台cms/public/static/UEditor/third-party/webuploader/webuploader.html5only.js
  function uncurryThis (line 194) | function uncurryThis( fn ) {
  function bindFn (line 200) | function bindFn( fn, context ) {
  function createObject (line 206) | function createObject( proto ) {
  function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 512) | function triggerHanders( events, args ) {
  function Uploader (line 721) | function Uploader( opts ) {
  function Runtime (line 903) | function Runtime( options ) {
  function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1142) | function DragAndDrop( opts ) {
  function isArrayLike (line 1193) | function isArrayLike( obj ) {
  function Widget (line 1210) | function Widget( uploader ) {
  function FilePaste (line 1419) | function FilePaste( opts ) {
  function Blob (line 1500) | function Blob( ruid, source ) {
  function File (line 1544) | function File( ruid, file ) {
  function FilePicker (line 1584) | function FilePicker( opts ) {
  function Image (line 1847) | function Image( opts ) {
  function gid (line 2216) | function gid() {
  function WUFile (line 2227) | function WUFile( source ) {
  function Queue (line 2404) | function Queue() {
  function Transport (line 2952) | function Transport( opts ) {
  function CuteFile (line 3165) | function CuteFile( file, chunkSize ) {
  function hashString (line 3909) | function hashString( str ) {
  function CompBase (line 3955) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 3987) | function Html5Runtime() {
  function detectVerticalSquash (line 5233) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 5285) | function detectSubsampling( img ) {

FILE: 后台cms/public/static/UEditor/third-party/webuploader/webuploader.js
  function uncurryThis (line 194) | function uncurryThis( fn ) {
  function bindFn (line 200) | function bindFn( fn, context ) {
  function createObject (line 206) | function createObject( proto ) {
  function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 512) | function triggerHanders( events, args ) {
  function Uploader (line 721) | function Uploader( opts ) {
  function Runtime (line 903) | function Runtime( options ) {
  function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1142) | function DragAndDrop( opts ) {
  function isArrayLike (line 1193) | function isArrayLike( obj ) {
  function Widget (line 1210) | function Widget( uploader ) {
  function FilePaste (line 1419) | function FilePaste( opts ) {
  function Blob (line 1500) | function Blob( ruid, source ) {
  function File (line 1544) | function File( ruid, file ) {
  function FilePicker (line 1584) | function FilePicker( opts ) {
  function Image (line 1847) | function Image( opts ) {
  function gid (line 2216) | function gid() {
  function WUFile (line 2227) | function WUFile( source ) {
  function Queue (line 2404) | function Queue() {
  function Transport (line 2952) | function Transport( opts ) {
  function CuteFile (line 3165) | function CuteFile( file, chunkSize ) {
  function hashString (line 3909) | function hashString( str ) {
  function CompBase (line 3955) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 3987) | function Html5Runtime() {
  function JPEGEncoder (line 5008) | function JPEGEncoder(quality) {
  function detectVerticalSquash (line 6035) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 6087) | function detectSubsampling( img ) {
  function getFlashVersion (line 6341) | function getFlashVersion() {
  function FlashRuntime (line 6359) | function FlashRuntime() {

FILE: 后台cms/public/static/UEditor/third-party/webuploader/webuploader.withoutimage.js
  function uncurryThis (line 194) | function uncurryThis( fn ) {
  function bindFn (line 200) | function bindFn( fn, context ) {
  function createObject (line 206) | function createObject( proto ) {
  function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 512) | function triggerHanders( events, args ) {
  function Uploader (line 721) | function Uploader( opts ) {
  function Runtime (line 903) | function Runtime( options ) {
  function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1142) | function DragAndDrop( opts ) {
  function isArrayLike (line 1193) | function isArrayLike( obj ) {
  function Widget (line 1210) | function Widget( uploader ) {
  function FilePaste (line 1419) | function FilePaste( opts ) {
  function Blob (line 1500) | function Blob( ruid, source ) {
  function File (line 1544) | function File( ruid, file ) {
  function FilePicker (line 1584) | function FilePicker( opts ) {
  function gid (line 1850) | function gid() {
  function WUFile (line 1861) | function WUFile( source ) {
  function Queue (line 2038) | function Queue() {
  function Transport (line 2586) | function Transport( opts ) {
  function CuteFile (line 2799) | function CuteFile( file, chunkSize ) {
  function hashString (line 3543) | function hashString( str ) {
  function CompBase (line 3589) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 3621) | function Html5Runtime() {
  function getFlashVersion (line 4233) | function getFlashVersion() {
  function FlashRuntime (line 4251) | function FlashRuntime() {

FILE: 后台cms/public/static/UEditor/third-party/zeroclipboard/ZeroClipboard.js
  function parseFlashVersion (line 521) | function parseFlashVersion(desc) {
  function isPepperFlash (line 526) | function isPepperFlash(flashPlayerFileName) {
  function inspectPlugin (line 529) | function inspectPlugin(plugin) {

FILE: 后台cms/public/static/UEditor/ueditor.all.js
  function getItem (line 888) | function getItem(doc, obj) {
  function opt (line 1037) | function opt(obj, name) {
  function doReady (line 1148) | function doReady(doc) {
  function encodeString (line 1347) | function encodeString(source) {
  function encodeArray (line 1365) | function encodeArray(source) {
  function pad (line 1390) | function pad(source) {
  function encodeDate (line 1394) | function encodeDate(source){
  function getListener (line 1666) | function getListener(obj, type, force) {
  function _ (line 1685) | function _( s ) {
  function getDomNode (line 1870) | function getDomNode(node, start, ltr, startFromChild, fn, guard) {
  function clear (line 2470) | function clear(next, dir) {
  function remove (line 2965) | function remove(dir) {
  function merge (line 3156) | function merge(rtl, start, node) {
  function updateCollapse (line 4308) | function updateCollapse(range) {
  function selectOneNode (line 4315) | function selectOneNode(rng){
  function setEndPoint (line 4318) | function setEndPoint(toStart, node, offset, range) {
  function execContentsAction (line 4341) | function execContentsAction(range, action) {
  function removeFillData (line 4488) | function removeFillData(doc, excludeNode) {
  function mergeSibling (line 4514) | function mergeSibling(node, dir) {
  function check (line 5017) | function check(node){
  function adjust (line 5238) | function adjust(r, c) {
  function checkOffset (line 5739) | function checkOffset(rng){
  function getAddress (line 5893) | function getAddress(isStart){
  function getNode (line 5979) | function getNode(address,isStart){
  function getBoundaryInformation (line 6140) | function getBoundaryInformation( range, start ) {
  function transformIERangeToRange (line 6210) | function transformIERangeToRange( ieRange, range ) {
  function _getIERange (line 6229) | function _getIERange( sel ) {
  function optimze (line 6379) | function optimze( range ) {
  function setValue (line 6545) | function setValue(form, editor) {
  function loadPlugins (line 6573) | function loadPlugins(me){
  function checkCurLang (line 6580) | function checkCurLang(I18N){
  function langReadied (line 6586) | function langReadied(me){
  function isCdataDiv (line 7354) | function isCdataDiv(node){
  function clear (line 7818) | function clear() {
  function showErrorMsg (line 8118) | function showErrorMsg(msg) {
  function json2str (line 8182) | function json2str(json) {
  function doAjax (line 8202) | function doAjax(url, ajaxOptions) {
  function doJsonp (line 8259) | function doJsonp(url, opts) {
  function isWordDocument (line 8442) | function isWordDocument( str ) {
  function transUnit (line 8446) | function transUnit( v ) {
  function filterPasteWord (line 8453) | function filterPasteWord( str ) {
  function insertLine (line 8668) | function insertLine(arr, current, begin) {
  function insertIndent (line 8673) | function insertIndent(arr, current) {
  function nodeToHtml (line 8699) | function nodeToHtml(node, arr, formatter, current) {
  function isText (line 8723) | function isText(node, arr) {
  function isElement (line 8733) | function isElement(node, arr, formatter, current) {
  function isComment (line 8783) | function isComment(node, arr) {
  function getNodeById (line 8787) | function getNodeById(root, id) {
  function getNodesByTagName (line 8801) | function getNodesByTagName(node, tagName, arr) {
  function nodeTraversal (line 8811) | function nodeTraversal(root,fn){
  function exec (line 9319) | function exec(name, val) {
  function text (line 9435) | function text(parent, data) {
  function element (line 9448) | function element(parent, tagName, htmlattr) {
  function comment (line 9493) | function comment(parent, data) {
  function filterNode (line 9588) | function filterNode(node,rules){
  function getUserData (line 9866) | function getUserData() {
  function tdParent (line 9986) | function tdParent(node){
  function isLine (line 10523) | function isLine(node,notEmpty){
  function removeNotAttributeSpan (line 10541) | function removeNotAttributeSpan(node){
  function autotype (line 10549) | function autotype(type,html){
  function DBC2SB (line 10730) | function DBC2SB(str) {
  function ToDBC (line 10746) | function ToDBC(txtstring) {
  function readLocalOpts (line 10764) | function readLocalOpts() {
  function stringToObj (line 10837) | function stringToObj(str) {
  function setBackground (line 10847) | function setBackground(obj) {
  function unhtmlData (line 11132) | function unhtmlData(imgCi) {
  function mergeWithParent (line 11495) | function mergeWithParent(node){
  function mergeChild (line 11511) | function mergeChild(rng,cmdName,value){
  function mergesibling (line 11534) | function mergesibling(rng,cmdName,value) {
  function optimize (line 11899) | function optimize( range ) {
  function doLink (line 11927) | function doLink(range,opt,me){
  function deleteIframe (line 12039) | function deleteIframe(){
  function isRedundantSpan (line 12102) | function isRedundantSpan (node) {
  function doRemove (line 12121) | function doRemove( range ) {
  function getObj (line 12284) | function getObj(editor){
  function formatTime (line 13051) | function formatTime(date, format) {
  function formatDate (line 13058) | function formatDate(date, format) {
  function fillNode (line 13890) | function fillNode(node){
  function isHr (line 13907) | function isHr(node){
  function compareAddr (line 14194) | function compareAddr(indexA, indexB) {
  function compareRangeAddress (line 14204) | function compareRangeAddress(rngAddrA, rngAddrB) {
  function UndoManager (line 14214) | function UndoManager() {
  function saveScene (line 14342) | function saveScene() {
  function save (line 14411) | function save(cont){
  function initZeroClipboard (line 14461) | function initZeroClipboard() {
  function getClipboardData (line 14541) | function getClipboardData(callback) {
  function getPureHtml (line 14591) | function getPureHtml(html){
  function filter (line 14619) | function filter(div) {
  function transP (line 14848) | function transP(node){
  function removeNode (line 14852) | function removeNode(node){
  function listToArray (line 14988) | function listToArray(list){
  function getStyle (line 15091) | function getStyle(node){
  function checkListType (line 15210) | function checkListType(content,container){
  function appendLi (line 15237) | function appendLi(list,p,type){
  function adjustListStyle (line 15291) | function adjustListStyle(doc,ignore){
  function adjustList (line 15367) | function adjustList(list, tag, style,ignoreEmpty) {
  function setListStyle (line 15391) | function setListStyle(list,style){
  function clearEmptySibling (line 15399) | function clearEmptySibling(node) {
  function preventAndSave (line 15411) | function preventAndSave() {
  function findList (line 15416) | function findList(node,filterFn){
  function checkLevel (line 15720) | function checkLevel(li){
  function getLi (line 15808) | function getLi(start){
  function createSourceEditor (line 16280) | function createSourceEditor(holder){
  function Scale (line 16891) | function Scale() {
  function checkIsCludeLink (line 17311) | function checkIsCludeLink(node){
  function adjustHeight (line 17400) | function adjustHeight() {
  function checkHasUI (line 17522) | function checkHasUI(){
  function fixIE6FixedPos (line 17529) | function fixIE6FixedPos(){
  function setFloating (line 17539) | function setFloating(){
  function unsetFloating (line 17563) | function unsetFloating(){
  function updateFloating (line 17572) | function updateFloating(){
  function creatInsertStr (line 17652) | function creatInsertStr(url,width,height,id,align,classname,type){
  function switchImgAndVideo (line 17683) | function switchImgAndVideo(root,img2video){
  function checkRange (line 18282) | function checkRange(beginRowIndex, beginColIndex, endRowIndex, endColInd...
  function replaceTdToTh (line 18569) | function replaceTdToTh(colIndex, cell, tableRow) {
  function replaceTdToTh (line 18687) | function replaceTdToTh(rowIndex, cell, tableRow) {
  function showError (line 18935) | function showError(e) {
  function createTable (line 18969) | function createTable(opt, tdWidth) {
  function getAverageWidth (line 19555) | function getAverageWidth() {
  function setAverageWidth (line 19578) | function setAverageWidth(averageWidth) {
  function getAverageHeight (line 19608) | function getAverageHeight() {
  function setAverageHeight (line 19648) | function setAverageHeight(averageHeight) {
  function resetTdWidth (line 19844) | function resetTdWidth(table, editor) {
  function getTableWidth (line 19861) | function getTableWidth(editor, needIEHack, defaultValue) {
  function getSelectedArr (line 19866) | function getSelectedArr(editor) {
  function showError (line 19919) | function showError(e) {
  function removeStyleSize (line 20598) | function removeStyleSize(obj, replaceToProperty) {
  function removeStyle (line 20603) | function removeStyle(obj, styleName, replaceToProperty) {
  function getParentTdOrTh (line 20610) | function getParentTdOrTh(ele) {
  function isEmptyBlock (line 20617) | function isEmptyBlock(node) {
  function mouseCoords (line 20631) | function mouseCoords(evt) {
  function mouseMoveEvent (line 20641) | function mouseMoveEvent(evt) {
  function toggleDragButton (line 20718) | function toggleDragButton(show, table, editor) {
  function createDragButton (line 20729) | function createDragButton(table, editor) {
  function inTableSide (line 20788) | function inTableSide(table, cell, evt, top) {
  function getPermissionX (line 20806) | function getPermissionX(dragTd, evt) {
  function getPermissionY (line 20825) | function getPermissionY(dragTd, evt) {
  function toggleDraggableState (line 20838) | function toggleDraggableState(editor, draggable, dir, mousePos, cell) {
  function getResizeLineByUETable (line 20859) | function getResizeLineByUETable() {
  function updateResizeLine (line 20897) | function updateResizeLine( cell, uetable ) {
  function showResizeLine (line 20915) | function showResizeLine( cell ) {
  function getRelation (line 20928) | function getRelation(ele, mousePos) {
  function mouseDownEvent (line 20950) | function mouseDownEvent(type, evt) {
  function clearTableTimer (line 20991) | function clearTableTimer() {
  function tableDbclickHandler (line 20997) | function tableDbclickHandler(evt) {
  function tableClickHander (line 21085) | function tableClickHander( evt ) {
  function borderActionHandler (line 21113) | function borderActionHandler( evt ) {
  function extractArray (line 21130) | function extractArray( originArr, key ) {
  function clearTableDragTimer (line 21149) | function clearTableDragTimer() {
  function reconstruct (line 21154) | function reconstruct( obj ) {
  function tableBorderDrag (line 21173) | function tableBorderDrag( evt ) {
  function mouseUpEvent (line 21194) | function mouseUpEvent(type, evt) {
  function mouseOverEvent (line 21312) | function mouseOverEvent(type, evt) {
  function setCellHeight (line 21340) | function setCellHeight(cell, height, backHeight) {
  function getWidth (line 21348) | function getWidth(cell) {
  function changeColWidth (line 21353) | function changeColWidth(cell, changeValue) {
  function isEditorDisabled (line 21390) | function isEditorDisabled() {
  function changeRowHeight (line 21394) | function changeRowHeight(td, changeValue) {
  function getCellsByMoveBorder (line 21412) | function getCellsByMoveBorder( cell, table, isContainMergeCell ) {
  function getMinWidthByTableCells (line 21483) | function getMinWidthByTableCells( cells ) {
  function correctChangeValue (line 21497) | function correctChangeValue( changeValue, relatedCell, cells ) {
  function getTableCellWidth (line 21534) | function getTableCellWidth( cell ) {
  function getTableCellOffset (line 21562) | function getTableCellOffset( cell ) {
  function getTabcellSpace (line 21585) | function getTabcellSpace() {
  function getDragLine (line 21631) | function getDragLine(editor, doc) {
  function hideDragLine (line 21646) | function hideDragLine(editor) {
  function showDragLineAt (line 21659) | function showDragLineAt(state, cell) {
  function switchBorderColor (line 21686) | function switchBorderColor(editor, flag) {
  function getTableWidth (line 21703) | function getTableWidth(editor, needIEHack, defaultValue) {
  function getTargetTd (line 21711) | function getTargetTd(editor, evt) {
  function getLabel (line 22330) | function getLabel(){
  function addList (line 22733) | function addList(type,evt){
  function findTextInString (line 22858) | function findTextInString(textContent,opt,currentIndex){
  function findTextBlockElm (line 22875) | function findTextBlockElm(node,currentIndex,opt){
  function findNTextInBlockElm (line 22901) | function findNTextInBlockElm(node,index,str){
  function searchReplace (line 22931) | function searchReplace(me,opt){
  function replaceText (line 22980) | function replaceText(rng,str){
  function catchremoteimage (line 23275) | function catchremoteimage(imgs, callbacks) {
  function getLocation (line 23304) | function getLocation(url){
  function onSuccess (line 23357) | function onSuccess(rs){
  function createInsertStr (line 23520) | function createInsertStr(obj,toEmbed){
  function creatInsertStr (line 23662) | function creatInsertStr(url,width,height,align,cssfloat,toEmbed){
  function sendAndInsertFile (line 23746) | function sendAndInsertFile(file, editor) {
  function getPasteImage (line 23849) | function getPasteImage(e){
  function getDropImage (line 23852) | function getDropImage(e){
  function save (line 23928) | function save ( editor ) {
  function validData (line 24137) | function validData ( table ) {
  function Section (line 24205) | function Section(option){
  function getSection (line 24216) | function getSection(option) {
  function getNodeFromAddress (line 24220) | function getNodeFromAddress(startAddress, root) {
  function getSectionLevel (line 24284) | function getSectionLevel(node) {
  function traversal (line 24295) | function traversal(node, Directory) {
  function isContainsAddress (line 24376) | function isContainsAddress(startAddress, endAddress, addressTarget){
  function getNodeFromAddress (line 24407) | function getNodeFromAddress(startAddress) {
  function initUploadBtn (line 24484) | function initUploadBtn() {
  function getFileIcon (line 24715) | function getFileIcon(url){
  function filter (line 24791) | function filter(node) {
  function handleMouseMove (line 25027) | function handleMouseMove(evt){
  function handleMouseUp (line 25038) | function handleMouseUp(evt){
  function releaseCaptrue (line 25052) | function releaseCaptrue(){
  function updateFixedOffset (line 25107) | function updateFixedOffset(){
  function bindFixedLayer (line 25119) | function bindFixedLayer(adjOffset){
  function closeAllPopup (line 25304) | function closeAllPopup( evt,el ){
  function genColorPicker (line 25598) | function genColorPicker(noColorText,editor){
  function getPara (line 26173) | function getPara(me){
  function setPos (line 27526) | function setPos (offset) {
  function setPosByCxtMenu (line 27536) | function setPosByCxtMenu (menu) {
  function hideAllMenu (line 27610) | function hideAllMenu (e) {
  function EditorUI (line 28605) | function EditorUI(options) {
  function countFn (line 28638) | function countFn() {
  function setCount (line 28729) | function setCount(editor,ui) {
  function down (line 29176) | function down() {
  function move (line 29207) | function move(event) {
  function up (line 29225) | function up() {
  function clearSelection (line 29242) | function clearSelection() {
  function renderUI (line 29334) | function renderUI() {
  function updateHolderPos (line 29520) | function updateHolderPos(){

FILE: 后台cms/public/static/UEditor/ueditor.config.js
  function getUEBasePath (line 432) | function getUEBasePath(docUrl, confUrl) {
  function getConfigFilePath (line 438) | function getConfigFilePath() {
  function getBasePath (line 446) | function getBasePath(docUrl, confUrl) {
  function optimizationPath (line 467) | function optimizationPath(path) {

FILE: 后台cms/public/static/UEditor/ueditor.parse.js
  function getItem (line 232) | function getItem(doc,obj){
  function findParentByTagName (line 433) | function findParentByTagName(target, tagNames) {
  function sortTable (line 445) | function sortTable(table, sortByCellIndex, compareFn) {
  function sort (line 515) | function sort(array, compareFn){
  function updateTable (line 529) | function updateTable(table) {
  function parseSources (line 559) | function parseSources () {
  function extractChartData (line 572) | function extractChartData ( rootNode ) {
  function formatData (line 591) | function formatData ( tableNode ) {
  function loadResources (line 632) | function loadResources () {
  function loadJQuery (line 638) | function loadJQuery () {
  function loadHighcharts (line 662) | function loadHighcharts () {
  function loadTypeConfig (line 687) | function loadTypeConfig () {
  function render (line 703) | function render () {
  function renderChart (line 730) | function renderChart ( container, typeConfig, config ) {
  function createContainer (line 785) | function createContainer ( tableNode ) {
  function analysisConfig (line 797) | function analysisConfig ( config ) {
  function applyStyle (line 932) | function applyStyle(nodes){

FILE: 后台cms/public/ueditor/dialogs/attachment/attachment.js
  function initTabs (line 19) | function initTabs() {
  function setTabFocus (line 32) | function setTabFocus(id) {
  function initButtons (line 56) | function initButtons() {
  function UploadFile (line 87) | function UploadFile(target) {
  function addFile (line 181) | function addFile(file) {
  function removeFile (line 316) | function removeFile(file) {
  function updateTotalProgress (line 323) | function updateTotalProgress() {
  function setState (line 341) | function setState(val, files) {
  function updateStatus (line 417) | function updateStatus() {
  function OnlineFile (line 574) | function OnlineFile(target) {

FILE: 后台cms/public/ueditor/dialogs/background/background.js
  function initTabs (line 12) | function initTabs(){
  function initColorSelector (line 35) | function initColorSelector () {
  function initColorPicker (line 77) | function initColorPicker() {
  function initImagePanel (line 116) | function initImagePanel() {
  function updateFormState (line 121) | function updateFormState (radio, color, url, align, x, y) {
  function updateBackground (line 158) | function updateBackground () {
  function OnlineImage (line 184) | function OnlineImage(target) {

FILE: 后台cms/public/ueditor/dialogs/charts/charts.js
  function initChartsTypeView (line 49) | function initChartsTypeView () {
  function renderTable (line 64) | function renderTable ( table ) {
  function initUserConfig (line 104) | function initUserConfig ( config ) {
  function initEvent (line 125) | function initEvent () {
  function renderCharts (line 201) | function renderCharts () {
  function updateViewType (line 253) | function updateViewType ( index ) {
  function collectData (line 259) | function collectData () {
  function getUserConfig (line 283) | function getUserConfig () {
  function setUserConfig (line 302) | function setUserConfig ( config ) {
  function getSeriesAndCategories (line 317) | function getSeriesAndCategories () {
  function getTableDataFormat (line 367) | function getTableDataFormat () {
  function disableNotPieConfig (line 379) | function disableNotPieConfig() {
  function enableNotPieConfig (line 388) | function enableNotPieConfig() {
  function updateConfigItem (line 394) | function updateConfigItem ( value ) {
  function getSeriesForPieChart (line 420) | function getSeriesForPieChart () {
  function getTableData (line 445) | function getTableData () {
  function getTableInputValue (line 461) | function getTableInputValue () {
  function getCellValue (line 475) | function getCellValue ( cell ) {
  function syncTableData (line 505) | function syncTableData () {

FILE: 后台cms/public/ueditor/dialogs/emotion/emotion.js
  function initImgName (line 14) | function initImgName() {
  function initEvtHandler (line 30) | function initEvtHandler( conId ) {
  function InsertSmiley (line 47) | function InsertSmiley( url, evt ) {
  function switchTab (line 58) | function switchTab( index ) {
  function autoHeight (line 79) | function autoHeight( index ) {
  function createTab (line 117) | function createTab( tabName ) {
  function over (line 157) | function over( td, srcPath, posFlag ) {
  function out (line 164) | function out( td ) {
  function createTabList (line 171) | function createTabList( tabNum ) {
  function createArr (line 179) | function createArr( tabNum ) {

FILE: 后台cms/public/ueditor/dialogs/help/help.js
  function clickHandler (line 14) | function clickHandler( tabHeads,tabBodys,obj ) {
  function switchTab (line 41) | function switchTab( tabParentId ) {

FILE: 后台cms/public/ueditor/dialogs/image/image.js
  function initTabs (line 22) | function initTabs() {
  function setTabFocus (line 40) | function setTabFocus(id) {
  function initButtons (line 74) | function initButtons() {
  function initAlign (line 115) | function initAlign(){
  function setAlign (line 126) | function setAlign(align){
  function getAlign (line 139) | function getAlign(){
  function RemoteImage (line 146) | function RemoteImage(target) {
  function updatePreview (line 202) | function updatePreview(){
  function UploadImage (line 293) | function UploadImage(target) {
  function addFile (line 404) | function addFile(file) {
  function removeFile (line 534) | function removeFile(file) {
  function updateTotalProgress (line 541) | function updateTotalProgress() {
  function setState (line 559) | function setState(val, files) {
  function updateStatus (line 635) | function updateStatus() {
  function OnlineImage (line 798) | function OnlineImage(target) {
  function SearchImage (line 977) | function SearchImage() {

FILE: 后台cms/public/ueditor/dialogs/music/music.js
  function Music (line 1) | function Music() {

FILE: 后台cms/public/ueditor/dialogs/scrawl/scrawl.js
  function _appendStyle (line 419) | function _appendStyle() {
  function _getDom (line 441) | function _getDom() {
  function ue_callback (line 570) | function ue_callback(url, state) {
  function removeMaskLayer (line 615) | function removeMaskLayer() {
  function addMaskLayer (line 622) | function addMaskLayer(html) {
  function exec (line 629) | function exec(scrawlObj) {

FILE: 后台cms/public/ueditor/dialogs/searchreplace/searchreplace.js
  function clickHandler (line 19) | function clickHandler( tabHeads,tabBodys,obj ) {
  function switchTab (line 43) | function switchTab( tabParentId ) {
  function getMatchCase (line 61) | function getMatchCase(id) {

FILE: 后台cms/public/ueditor/dialogs/spechars/spechars.js
  function toArray (line 55) | function toArray(str) {

FILE: 后台cms/public/ueditor/dialogs/video/video.js
  function initTabs (line 24) | function initTabs(){
  function initVideo (line 43) | function initVideo(){
  function addOkListener (line 73) | function addOkListener(){
  function updateAlignButton (line 98) | function updateAlignButton( align ) {
  function insertSingle (line 116) | function insertSingle(){
  function insertSearch (line 135) | function insertSearch(id){
  function findFocus (line 156) | function findFocus( id, returnProperty ) {
  function convert_url (line 167) | function convert_url(url){
  function checkNum (line 190) | function checkNum( nodes ) {
  function isNumber (line 207) | function isNumber( value ) {
  function createAlignButton (line 215) | function createAlignButton( ids ) {
  function switchSelect (line 235) | function switchSelect( selectParentId ) {
  function addUrlChangeListener (line 252) | function addUrlChangeListener(url){
  function createPreviewVideo (line 268) | function createPreviewVideo(url){
  function insertUpload (line 286) | function insertUpload(){
  function initUpload (line 312) | function initUpload(){
  function UploadFile (line 318) | function UploadFile(target) {
  function addFile (line 412) | function addFile(file) {
  function removeFile (line 547) | function removeFile(file) {
  function updateTotalProgress (line 554) | function updateTotalProgress() {
  function setState (line 572) | function setState(val, files) {
  function updateStatus (line 648) | function updateStatus() {

FILE: 后台cms/public/ueditor/dialogs/wordimage/tangram.js
  function _createString (line 577) | function _createString(){
  function _checkReady (line 587) | function _checkReady(target){
  function _callFn (line 602) | function _callFn(callQueue, target){
  function _createFunName (line 618) | function _createFunName(fun){
  function _render (line 639) | function _render(options){
  function _check (line 728) | function _check(){
  function _call (line 743) | function _call(){
  function getCallBack (line 1197) | function getCallBack(onTimeOut){
  function encodeString (line 1354) | function encodeString(source) {
  function encodeArray (line 1376) | function encodeArray(source) {
  function pad (line 1405) | function pad(source) {
  function encodeDate (line 1413) | function encodeDate(source){

FILE: 后台cms/public/ueditor/dialogs/wordimage/wordimage.js
  function hideFlash (line 24) | function hideFlash(){
  function addOkListener (line 28) | function addOkListener() {
  function addUploadListener (line 59) | function addUploadListener() {
  function showLocalPath (line 66) | function showLocalPath(id) {
  function createFlashUploader (line 83) | function createFlashUploader(opt, callbacks) {
  function extendProperty (line 112) | function extendProperty(fromObj, toObj) {
  function getPasteData (line 123) | function getPasteData(id) {
  function createCopyButton (line 131) | function createCopyButton(id, dataFrom) {

FILE: 后台cms/public/ueditor/third-party/SyntaxHighlighter/shCore.js
  function clone (line 499) | function clone (regex, additionalFlags) {
  function getNativeFlags (line 513) | function getNativeFlags (regex) {
  function runTokens (line 521) | function runTokens (pattern, index, scope, context) {
  function indexOf (line 550) | function indexOf (array, item, from) {
  function defaultGetHtml (line 801) | function defaultGetHtml(highlighter, name)
  function getValue (line 839) | function getValue(name)
  function hasClass (line 1036) | function hasClass(target, className)
  function addClass (line 1046) | function addClass(target, className)
  function removeClass (line 1057) | function removeClass(target, className)
  function toArray (line 1068) | function toArray(source)
  function splitLines (line 1083) | function splitLines(block)
  function getHighlighterId (line 1093) | function getHighlighterId(id)
  function getHighlighterById (line 1104) | function getHighlighterById(id)
  function getHighlighterDivById (line 1114) | function getHighlighterDivById(id)
  function storeHighlighter (line 1124) | function storeHighlighter(highlighter)
  function findElement (line 1137) | function findElement(target, search, reverse /* optional */)
  function findParentElement (line 1170) | function findParentElement(target, className)
  function indexOf (line 1182) | function indexOf(array, searchElement, fromIndex)
  function guid (line 1196) | function guid(prefix)
  function merge (line 1208) | function merge(obj1, obj2)
  function toBoolean (line 1226) | function toBoolean(value)
  function popup (line 1241) | function popup(url, name, width, height, options)
  function attachEvent (line 1265) | function attachEvent(obj, type, func, scope)
  function alert (line 1297) | function alert(str)
  function findBrush (line 1309) | function findBrush(alias, showAlert)
  function eachLine (line 1352) | function eachLine(str, callback)
  function trimFirstAndLastLines (line 1370) | function trimFirstAndLastLines(str)
  function parseParams (line 1390) | function parseParams(str)
  function wrapLinesWithCode (line 1434) | function wrapLinesWithCode(str, css)
  function padNumber (line 1484) | function padNumber(number, length)
  function processTabs (line 1501) | function processTabs(code, tabSize)
  function processSmartTabs (line 1518) | function processSmartTabs(code, tabSize)
  function fixInputString (line 1566) | function fixInputString(str)
  function trim (line 1585) | function trim(str)
  function unindent (line 1595) | function unindent(str)
  function matchesSortCallback (line 1637) | function matchesSortCallback(m1, m2)
  function getMatches (line 1664) | function getMatches(code, regexInfo)
  function processUrls (line 1695) | function processUrls(code)
  function getSyntaxHighlighterScriptTags (line 1723) | function getSyntaxHighlighterScriptTags()
  function stripCData (line 1742) | function stripCData(original)
  function quickCodeHandler (line 1774) | function quickCodeHandler(e)
  function offsetMatches (line 1880) | function offsetMatches(matches, offset)
  function process (line 1886) | function process(match, info)
  function getBrushNameCss (line 2169) | function getBrushNameCss(match)
  function Brush (line 2388) | function Brush()
  function Brush (line 2432) | function Brush()
  function Brush (line 2491) | function Brush()
  function Brush (line 2534) | function Brush()
  function Brush (line 2618) | function Brush()
  function Brush (line 2699) | function Brush()
  function Brush (line 2748) | function Brush()
  function Brush (line 2823) | function Brush()
  function Brush (line 2862) | function Brush()
  function Brush (line 2887) | function Brush()
  function Brush (line 2923) | function Brush()
  function Brush (line 2974) | function Brush()
  function Brush (line 3015) | function Brush()
  function Brush (line 3057) | function Brush()
  function Brush (line 3093) | function Brush()
  function Brush (line 3170) | function Brush()
  function Brush (line 3242) | function Brush()
  function Brush (line 3259) | function Brush()
  function Brush (line 3318) | function Brush()
  function Brush (line 3366) | function Brush()
  function Brush (line 3405) | function Brush()
  function Brush (line 3483) | function Brush()
  function Brush (line 3518) | function Brush()
  function Brush (line 3568) | function Brush()
  function Brush (line 3608) | function Brush()

FILE: 后台cms/public/ueditor/third-party/codemirror/codemirror.js
  function CodeMirror (line 11) | function CodeMirror(place, givenOptions) {
  function lookupKey (line 1870) | function lookupKey(name, extraMap, map) {
  function isModifierKey (line 1885) | function isModifierKey(event) {
  function save (line 1896) | function save() {textarea.value = instance.getValue();}
  function wrappedSubmit (line 1902) | function wrappedSubmit() {
  function copyState (line 1933) | function copyState(mode, state) {
  function startState (line 1945) | function startState(mode, a1, a2) {
  function StringStream (line 1951) | function StringStream(string, tabSize) {
  function cased (line 1990) | function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
  function MarkedText (line 2006) | function MarkedText(from, to, className, set) {
  function Bookmark (line 2036) | function Bookmark(pos) {
  function Line (line 2072) | function Line(text, styles) {
  function span (line 2234) | function span(text, style) {
  function nextMark (line 2259) | function nextMark() {
  function copyStyles (line 2306) | function copyStyles(from, to, source, dest) {
  function LeafChunk (line 2322) | function LeafChunk(lines) {
  function BranchChunk (line 2356) | function BranchChunk(children) {
  function getLineAt (line 2454) | function getLineAt(chunk, n) {
  function lineNo (line 2464) | function lineNo(line) {
  function lineAtHeight (line 2475) | function lineAtHeight(chunk, h) {
  function heightAtLine (line 2493) | function heightAtLine(chunk, n) {
  function History (line 2510) | function History() {
  function stopMethod (line 2541) | function stopMethod() {e_stop(this);}
  function addStop (line 2543) | function addStop(event) {
  function e_preventDefault (line 2548) | function e_preventDefault(e) {
  function e_stopPropagation (line 2552) | function e_stopPropagation(e) {
  function e_stop (line 2556) | function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}
  function e_target (line 2561) | function e_target(e) {return e.target || e.srcElement;}
  function e_button (line 2562) | function e_button(e) {
  function connect (line 2571) | function connect(node, type, handler, disconnect) {
  function Delayed (line 2584) | function Delayed() {this.id = null;}
  function countColumn (line 2610) | function countColumn(string, end, tabSize) {
  function computedStyle (line 2622) | function computedStyle(elt) {
  function eltOffset (line 2629) | function eltOffset(node, screen) {
  function eltText (line 2665) | function eltText(node) {
  function posEq (line 2670) | function posEq(a, b) {return a.line == b.line && a.ch == b.ch;}
  function posLess (line 2671) | function posLess(a, b) {return a.line < b.line || (a.line == b.line && a...
  function copyPos (line 2672) | function copyPos(x) {return {line: x.line, ch: x.ch};}
  function htmlEscape (line 2675) | function htmlEscape(str) {
  function editEnd (line 2697) | function editEnd(from, to) {
  function indexOf (line 2705) | function indexOf(collection, elt) {
  function isWordChar (line 2711) | function isWordChar(ch) {
  function inText (line 2775) | function inText(stream, state) {
  function inTag (line 2821) | function inTag(stream, state) {
  function inAttribute (line 2842) | function inAttribute(quote) {
  function inBlock (line 2854) | function inBlock(style, terminator) {
  function doctype (line 2866) | function doctype(depth) {
  function pass (line 2888) | function pass() {
  function cont (line 2891) | function cont() {
  function pushContext (line 2896) | function pushContext(tagName, startOfLine) {
  function popContext (line 2906) | function popContext() {
  function element (line 2910) | function element(type) {
  function endtag (line 2926) | function endtag(startOfLine) {
  function endclosetag (line 2935) | function endclosetag(err) {
  function attributes (line 2944) | function attributes(type) {
  function attvalue (line 2950) | function attvalue(type) {
  function attvaluemaybe (line 2955) | function attvaluemaybe(type) {
  function kw (line 3021) | function kw(type) {return {type: type, style: "keyword"};}
  function chain (line 3037) | function chain(stream, state, f) {
  function nextUntilUnescaped (line 3042) | function nextUntilUnescaped(stream, end) {
  function ret (line 3055) | function ret(tp, style, cont) {
  function jsTokenBase (line 3060) | function jsTokenBase(stream, state) {
  function jsTokenString (line 3108) | function jsTokenString(quote) {
  function jsTokenComment (line 3116) | function jsTokenComment(stream, state) {
  function JSLexical (line 3132) | function JSLexical(indented, column, type, align, prev, info) {
  function inScope (line 3141) | function inScope(state, varname) {
  function parseJS (line 3146) | function parseJS(state, style, type, content, stream) {
  function pass (line 3170) | function pass() {
  function cont (line 3173) | function cont() {
  function register (line 3177) | function register(varname) {
  function pushcontext (line 3190) | function pushcontext() {
  function popcontext (line 3194) | function popcontext() {
  function pushlex (line 3198) | function pushlex(type, info) {
  function poplex (line 3206) | function poplex() {
  function expect (line 3216) | function expect(wanted) {
  function statement (line 3224) | function statement(type) {
  function expression (line 3242) | function expression(type) {
  function maybeexpression (line 3252) | function maybeexpression(type) {
  function maybeoperator (line 3257) | function maybeoperator(type, value) {
  function maybelabel (line 3265) | function maybelabel(type) {
  function property (line 3269) | function property(type) {
  function objprop (line 3272) | function objprop(type) {
  function commasep (line 3276) | function commasep(what, end) {
  function block (line 3287) | function block(type) {
  function vardef1 (line 3291) | function vardef1(type, value) {
  function vardef2 (line 3295) | function vardef2(type, value) {
  function forspec1 (line 3299) | function forspec1(type) {
  function formaybein (line 3305) | function formaybein(type, value) {
  function forspec2 (line 3309) | function forspec2(type, value) {
  function forspec3 (line 3314) | function forspec3(type) {
  function functiondef (line 3317) | function functiondef(type, value) {
  function funarg (line 3321) | function funarg(type, value) {
  function ret (line 3377) | function ret(style, tp) {type = tp; return style;}
  function tokenBase (line 3379) | function tokenBase(stream, state) {
  function tokenCComment (line 3420) | function tokenCComment(stream, state) {
  function tokenSGMLComment (line 3432) | function tokenSGMLComment(stream, state) {
  function tokenString (line 3444) | function tokenString(quote) {
  function html (line 3504) | function html(stream, state) {
  function maybeBackup (line 3520) | function maybeBackup(stream, pat, style) {
  function javascript (line 3526) | function javascript(stream, state) {
  function css (line 3536) | function css(stream, state) {

FILE: 后台cms/public/ueditor/third-party/highcharts/adapters/standalone-framework.js
  function o (line 8) | function o(c){function a(a,b,d){a.removeEventListener(b,d,!1)}function d...

FILE: 后台cms/public/ueditor/third-party/highcharts/adapters/standalone-framework.src.js
  function augment (line 29) | function augment(obj) {

FILE: 后台cms/public/ueditor/third-party/highcharts/highcharts-more.js
  function J (line 8) | function J(a,b,c){this.init.call(this,a,b,c)}
  function K (line 8) | function K(a,b,c){a.call(this,b,c);if(this.chart.polar)this.closeSegment...
  function L (line 8) | function L(a,b){var c=this.chart,d=this.options.animation,g=this.group,f...

FILE: 后台cms/public/ueditor/third-party/highcharts/highcharts-more.src.js
  function Pane (line 42) | function Pane(options, chart, firstAxis) {
  function initArea (line 2028) | function initArea(proceed, chart, options) {
  function polarAnimate (line 2199) | function polarAnimate(proceed, init) {

FILE: 后台cms/public/ueditor/third-party/highcharts/highcharts.js
  function r (line 8) | function r(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}
  function x (line 8) | function x(){var a,b=arguments.length,c={},d=function(a,b){var c,h;typeo...
  function C (line 8) | function C(a,b){return parseInt(a,b||10)}
  function ea (line 8) | function ea(a){return typeof a==="string"}
  function T (line 8) | function T(a){return typeof a===
  function Ia (line 9) | function Ia(a){return Object.prototype.toString.call(a)==="[object Array]"}
  function sa (line 9) | function sa(a){return typeof a==="number"}
  function na (line 9) | function na(a){return R.log(a)/R.LN10}
  function fa (line 9) | function fa(a){return R.pow(10,a)}
  function ga (line 9) | function ga(a,b){for(var c=a.length;c--;)if(a[c]===b){a.splice(c,1);break}}
  function u (line 9) | function u(a){return a!==w&&a!==null}
  function v (line 9) | function v(a,b,c){var d,e;if(ea(b))u(c)?a.setAttribute(b,c):a&&a.getAttr...
  function ja (line 9) | function ja(a){return Ia(a)?
  function o (line 10) | function o(){var a=arguments,b,c,d=a.length;for(b=0;b<d;b++)if(c=a[b],ty...
  function K (line 10) | function K(a,b){if(ta&&b&&b.opacity!==w)b.filter="alpha(opacity="+b.opac...
  function U (line 10) | function U(a,b,c,d,e){a=y.createElement(a);b&&r(a,b);e&&K(a,{padding:0,b...
  function ha (line 10) | function ha(a,b){var c=function(){};c.prototype=new a;r(c.prototype,b);r...
  function Aa (line 10) | function Aa(a,b,c,d){var e=M.lang,a=+a||0,f=b===-1?(a.toString().split("...
  function Ba (line 11) | function Ba(a,b){return Array((b||2)+1-String(a).length).join(0)+a}
  function mb (line 11) | function mb(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slic...
  function Ca (line 11) | function Ca(a,b){for(var c="{",d=!1,
  function nb (line 12) | function nb(a){return R.pow(10,P(R.log(a)/R.LN10))}
  function ob (line 12) | function ob(a,b,c,d){var e,c=o(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allo...
  function Cb (line 13) | function Cb(a,b){var c=b||[[Db,[1,2,5,10,20,25,50,100,200,500]],[pb,[1,2...
  function Eb (line 14) | function Eb(a,b,c,d){var e=[],f={},g=M.global.useUTC,h,i=new Date(b),j=a...
  function Jb (line 15) | function Jb(){this.symbol=this.color=0}
  function Kb (line 15) | function Kb(a,b){var c=a.length,d,e;for(e=0;e<c;e++)a[e].ss_i=e;a.sort(f...
  function Ja (line 16) | function Ja(a){for(var b=a.length,c=a[0];b--;)a[b]<c&&(c=a[b]);return c}
  function va (line 16) | function va(a){for(var b=a.length,c=a[0];b--;)a[b]>c&&(c=a[b]);return c}
  function Ka (line 16) | function Ka(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destr...
  function Ta (line 16) | function Ta(a){cb||(cb=U(Ea));a&&cb.appendChild(a);cb.innerHTML=""}
  function ka (line 16) | function ka(a,b){var c="Highcharts error #"+a+": www.highcharts.com/erro...
  function ia (line 16) | function ia(a){return parseFloat(a.toPrecision(14))}
  function La (line 17) | function La(a,b){Fa=o(a,b.animation)}
  function Lb (line 17) | function Lb(){var a=M.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set...
  function wa (line 17) | function wa(){}
  function Ma (line 17) | function Ma(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!...
  function vb (line 17) | function vb(a,b){this.axis=a;if(b)this.options=
  function Mb (line 18) | function Mb(a,b,c,d,e,f){var g=a.chart.inverted;this.axis=a;this.isNegat...
  function db (line 18) | function db(){this.init.apply(this,arguments)}
  function wb (line 18) | function wb(){this.init.apply(this,arguments)}
  function xb (line 19) | function xb(a,b){this.init(a,b)}
  function eb (line 19) | function eb(a,b){this.init(a,b)}
  function yb (line 19) | function yb(){this.init.apply(this,arguments)}
  function j (line 72) | function j(){var a,b;a=o.element.style;L=(Oa===void 0||la===void 0||q.st...
  function k (line 73) | function k(){var a=q.styles,a=a&&a.textAlign,b=kb+da*(1-s),c;c=h?0:v;if(...
  function l (line 73) | function l(a,b){A?A.attr(a,b):lb[a]=b}
  function m (line 73) | function m(){o.add(q);q.attr({text:a,x:b,y:c});A&&u(e)&&q.attr({anchorX:...
  function a (line 93) | function a(){var a=b.length,d;for(d=0;d<a;d++)b[d]();b=[]}
  function a (line 193) | function a(a){var g=c.width||jb(d,"width"),h=c.height||jb(d,"height"),a=...
  function a (line 248) | function a(){var a={width:b.yAxis.len,height:b.xAxis.len};n(["group","ma...

FILE: 后台cms/public/ueditor/third-party/highcharts/highcharts.src.js
  function extend (line 128) | function extend(a, b) {
  function merge (line 145) | function merge() {
  function hash (line 188) | function hash() {
  function pInt (line 204) | function pInt(s, mag) {
  function isString (line 212) | function isString(s) {
  function isObject (line 220) | function isObject(obj) {
  function isArray (line 228) | function isArray(obj) {
  function isNumber (line 236) | function isNumber(n) {
  function log2lin (line 240) | function log2lin(num) {
  function lin2log (line 243) | function lin2log(num) {
  function erase (line 252) | function erase(arr, item) {
  function defined (line 267) | function defined(obj) {
  function attr (line 279) | function attr(elem, prop, value) {
  function splat (line 308) | function splat(obj) {
  function pick (line 316) | function pick() {
  function css (line 334) | function css(el, styles) {
  function createElement (line 351) | function createElement(tag, attribs, styles, parent, nopad) {
  function extendClass (line 373) | function extendClass(parent, members) {
  function numberFormat (line 387) | function numberFormat(number, decimals, decPoint, thousandsSep) {
  function pad (line 409) | function pad(number, length) {
  function wrap (line 422) | function wrap(obj, method, func) {
  function formatSingle (line 501) | function formatSingle(format, val) {
  function format (line 525) | function format(str, ctx) {
  function getMagnitude (line 575) | function getMagnitude(num) {
  function normalizeTickInterval (line 586) | function normalizeTickInterval(interval, multiples, magnitude, options) {
  function normalizeTimeTickInterval (line 629) | function normalizeTimeTickInterval(tickInterval, unitsOption) {
  function getTimeTicks (line 710) | function getTimeTicks(normalizedInterval, min, max, startOfWeek) {
  function ChartCounters (line 822) | function ChartCounters() {
  function stableSort (line 852) | function stableSort(arr, sortFunction) {
  function arrayMin (line 878) | function arrayMin(data) {
  function arrayMax (line 895) | function arrayMax(data) {
  function destroyObjectProperties (line 914) | function destroyObjectProperties(obj, except) {
  function discardElement (line 933) | function discardElement(element) {
  function error (line 949) | function error(code, stop) {
  function correctFloat (line 962) | function correctFloat(num) {
  function setAnimation (line 974) | function setAnimation(animation, chart) {
  function setTimeMethods (line 1821) | function setTimeMethods() {
  function setOptions (line 1854) | function setOptions(options) {
  function getOptions (line 1874) | function getOptions() {
  function init (line 1891) | function init(input) {
  function get (line 1925) | function get(format) {
  function brighten (line 1954) | function brighten(alpha) {
  function setOpacity (line 1979) | function setOpacity(alpha) {
  function SVGElement (line 2000) | function SVGElement() {}
  function updateBoxSize (line 4272) | function updateBoxSize() {
  function updateTextPadding (line 4312) | function updateTextPadding() {
  function boxAttr (line 4344) | function boxAttr(key, value) {
  function getSizeAfterAdd (line 4352) | function getSizeAfterAdd() {
  function drawDeferred (line 5727) | function drawDeferred() {
  function Tick (line 5763) | function Tick(axis, pos, type, noLabel) {
  function PlotLineOrBand (line 6170) | function PlotLineOrBand(axis, options) {
  function StackItem (line 6345) | function StackItem(axis, options, isNegative, x, stackOption, stacking) {
  function Axis (line 6456) | function Axis() {
  function Tooltip (line 8560) | function Tooltip() {
  function Pointer (line 9010) | function Pointer(chart, options) {
  function Legend (line 9848) | function Legend(chart, options) {
  function Chart (line 10518) | function Chart() {
  function reflow (line 11514) | function reflow(e) {
  function setInvert (line 14818) | function setInvert() {

FILE: 后台cms/public/ueditor/third-party/highcharts/modules/annotations.js
  function m (line 1) | function m(a){return typeof a==="number"}
  function n (line 1) | function n(a){return a!==D&&a!==null}

FILE: 后台cms/public/ueditor/third-party/highcharts/modules/annotations.src.js
  function defaultOptions (line 26) | function defaultOptions(shapeType) {
  function isArray (line 64) | function isArray(obj) {
  function isNumber (line 68) | function isNumber(n) {
  function defined (line 72) | function defined(obj) {
  function translatePath (line 76) | function translatePath(d, xAxis, yAxis, xOffset, yOffset) {

FILE: 后台cms/public/ueditor/third-party/highcharts/modules/canvas-tools.js
  function RGBColor (line 21) | function RGBColor(m){this.ok=!1;m.charAt(0)=="#"&&(m=m.substr(1,6));var ...
  function m (line 31) | function m(){var a={FRAMERATE:30,MAX_VIRTUAL_PIXELS:3E4};a.init=function...

FILE: 后台cms/public/ueditor/third-party/highcharts/modules/canvas-tools.src.js
  function RGBColor (line 8) | function RGBColor(color_string)
  function build (line 382) | function build() {

FILE: 后台cms/public/ueditor/third-party/highcharts/modules/drilldown.js
  function q (line 1) | function q(b,a,c){return"rgba("+[Math.round(b[0]+(a[0]-b[0])*c),Math.rou...

FILE: 后台cms/public/ueditor/third-party/highcharts/modules/drilldown.src.js
  function tweenColors (line 28) | function tweenColors(startColor, endColor, pos) {

FILE: 后台cms/public/ueditor/third-party/highcharts/modules/map.js
  function x (line 8) | function x(a,b,c){for(var d=4,e=[];d--;)e[d]=Math.round(b.rgba[d]+(a.rgb...

FILE: 后台cms/public/ueditor/third-party/highcharts/modules/map.src.js
  function tweenColors (line 40) | function tweenColors(from, to, pos) {

FILE: 后台cms/public/ueditor/third-party/highcharts/modules/no-data-to-display.js
  function f (line 10) | function f(){return!!this.points.length}
  function g (line 10) | function g(){this.hasData()?this.hideNoData():this.showNoData()}

FILE: 后台cms/public/ueditor/third-party/highcharts/modules/no-data-to-display.src.js
  function hasDataPie (line 43) | function hasDataPie() {
  function handleNoData (line 111) | function handleNoData() {

FILE: 后台cms/public/ueditor/third-party/jquery-1.10.2.js
  function isArraylike (line 983) | function isArraylike( obj ) {
  function Sizzle (line 1183) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 1298) | function createCache() {
  function markFunction (line 1316) | function markFunction( fn ) {
  function assert (line 1325) | function assert( fn ) {
  function addHandle (line 1347) | function addHandle( attrs, handler ) {
  function siblingCheck (line 1362) | function siblingCheck( a, b ) {
  function createInputPseudo (line 1389) | function createInputPseudo( type ) {
  function createButtonPseudo (line 1400) | function createButtonPseudo( type ) {
  function createPositionalPseudo (line 1411) | function createPositionalPseudo( fn ) {
  function setFilters (line 2394) | function setFilters() {}
  function tokenize (line 2398) | function tokenize( selector, parseOnly ) {
  function toSelector (line 2465) | function toSelector( tokens ) {
  function addCombinator (line 2475) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2525) | function elementMatcher( matchers ) {
  function condense (line 2539) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2560) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2653) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2708) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function multipleContexts (line 2836) | function multipleContexts( selector, contexts, results ) {
  function select (line 2845) | function select( selector, context, results, seed ) {
  function createOptions (line 2985) | function createOptions( options ) {
  function internalData (line 3568) | function internalData( elem, name, data, pvt /* Internal Use Only */ ){
  function internalRemoveData (line 3657) | function internalRemoveData( elem, name, pvt ) {
  function dataAttr (line 3854) | function dataAttr( elem, key, data ) {
  function isEmptyDataObject (line 3886) | function isEmptyDataObject( obj ) {
  function returnTrue (line 4712) | function returnTrue() {
  function returnFalse (line 4716) | function returnFalse() {
  function safeActiveElement (line 4720) | function safeActiveElement() {
  function sibling (line 5838) | function sibling( cur, dir ) {
  function winnow (line 5956) | function winnow( elements, qualifier, not ) {
  function createSafeFragment (line 5984) | function createSafeFragment( document ) {
  function manipulationTarget (line 6298) | function manipulationTarget( elem, content ) {
  function disableScript (line 6308) | function disableScript( elem ) {
  function restoreScript (line 6312) | function restoreScript( elem ) {
  function setGlobalEval (line 6323) | function setGlobalEval( elems, refElements ) {
  function cloneCopyEvent (line 6331) | function cloneCopyEvent( src, dest ) {
  function fixCloneNodeIssues (line 6359) | function fixCloneNodeIssues( src, dest ) {
  function getAll (line 6452) | function getAll( context, tag ) {
  function fixDefaultChecked (line 6475) | function fixDefaultChecked( elem ) {
  function vendorPropName (line 6817) | function vendorPropName( style, name ) {
  function isHidden (line 6839) | function isHidden( elem, el ) {
  function showHide (line 6846) | function showHide( elements, show ) {
  function setPositiveNumber (line 7175) | function setPositiveNumber( elem, value, subtract ) {
  function augmentWidthOrHeight (line 7183) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
  function getWidthOrHeight (line 7222) | function getWidthOrHeight( elem, name, extra ) {
  function css_defaultDisplay (line 7266) | function css_defaultDisplay( nodeName ) {
  function actualDisplay (line 7298) | function actualDisplay( name, doc ) {
  function buildParams (line 7527) | function buildParams( prefix, obj, traditional, add ) {
  function addToPrefiltersOrTransports (line 7642) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 7674) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 7701) | function ajaxExtend( target, src ) {
  function done (line 8149) | function done( status, nativeStatusText, responses, headers ) {
  function ajaxHandleResponses (line 8296) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 8351) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function createStandardXHR (line 8619) | function createStandardXHR() {
  function createActiveXHR (line 8625) | function createActiveXHR() {
  function createFxNow (line 8871) | function createFxNow() {
  function createTween (line 8878) | function createTween( value, prop, animation ) {
  function Animation (line 8892) | function Animation( elem, properties, options ) {
  function propFilter (line 8996) | function propFilter( props, specialEasing ) {
  function defaultPrefilter (line 9063) | function defaultPrefilter( elem, props, opts ) {
  function Tween (line 9188) | function Tween( elem, options, prop, end, easing ) {
  function genFx (line 9412) | function genFx( type, includeWidth ) {
  function getWindow (line 9708) | function getWindow( elem ) {

FILE: 后台cms/public/ueditor/third-party/video-js/video.dev.js
  function returnTrue (line 410) | function returnTrue() { return true; }
  function returnFalse (line 411) | function returnFalse() { return false; }
  function F (line 656) | function F() {}
  function createMethod (line 5055) | function createMethod(methodName){
  function walk (line 6995) | function walk(holder, key) {

FILE: 后台cms/public/ueditor/third-party/video-js/video.js
  function m (line 1) | function m(){return function(){}}
  function p (line 1) | function p(a){return function(){return this[a]}}
  function s (line 1) | function s(a){return function(){return a}}
  function u (line 1) | function u(a,c,d){if("string"===typeof a){0===a.indexOf("#")&&(a=a.slice...
  function c (line 6) | function c(){return f}
  function d (line 6) | function d(){return l}
  function e (line 8) | function e(){u.o(a,c,e);d.apply(this,arguments)}
  function c (line 9) | function c(){}
  function e (line 10) | function e(){return c.apply(a,arguments)}
  function D (line 25) | function D(a){a.u("vjs-lock-showing")}
  function E (line 26) | function E(a,c,d,e){if(d!==b)return a.a.style[c]=-1!==(""+d).indexOf("%"...
  function F (line 32) | function F(a,c){var d,e,g,j;d=a.a;e=u.ad(d);j=g=d.offsetWidth;d=a.handle...
  function ca (line 34) | function ca(a,c){a.Z(c);c.d("click",u.bind(a,function(){D(this)}))}
  function H (line 37) | function H(a){a.pa=f;a.wa.n("vjs-lock-showing");a.a.setAttribute("aria-p...
  function G (line 38) | function G(a){a.pa=l;D(a.wa);a.a.setAttribute("aria-pressed",l)}
  function da (line 42) | function da(a){var c={sources:[],tracks:[]};u.k.B(c,u.xb(a));if(a.hasChi...
  function I (line 45) | function I(a,c,d){a.h?(a.aa=l,a.h.D(),a.Eb&&(a.Eb=l,clearInterval(a.Ra))...
  function J (line 46) | function J(a){a.Fb=l;a.za();a.o("play",a.Cc);a.o("pause",a.za)}
  function L (line 48) | function L(a,c,d){if(a.h&&!a.h.aa)a.h.L(function(){this[c](d)});else try...
  function K (line 48) | function K(a,c){if(a.h&&a.h.aa)try{return a.h[c]()}catch(d){throw a.h[c]...
  function M (line 53) | function M(a){a.cd=l;u.o(document,"keydown",a.lc);document.documentEleme...
  function ea (line 86) | function ea(){var a=u.media.Va[i];return function(){throw Error('The "'+...
  function fa (line 99) | function fa(){var a=R[T],c=a.charAt(0).toUpperCase()+a.slice(1);Q["set"+...
  function U (line 99) | function U(a){Q[a]=function(){return this.a.vjs_getProperty(a)}}
  function V (line 105) | function V(a){a.Aa=a.Aa||[];return a.Aa}
  function W (line 105) | function W(a,c,d){for(var e=a.Aa,g=0,j=e.length,k,q;g<j;g++)k=e[g],k.id(...
  function X (line 108) | function X(a){0===a.ha&&a.load();0===a.ga&&(a.b.d("timeupdate",u.bind(a,...
  function Y (line 110) | function Y(a){var c=a.split(":");a=0;var d,e,g;3==c.length?(d=c[0],e=c[1...
  function d (line 121) | function d(a,e){var k,q,n=a[e];if(n&&"object"===typeof n)for(k in n)Obje...
  function $ (line 123) | function $(a,c){var d=a.split("."),e=ga;!(d[0]in e)&&e.execScript&&e.exe...

FILE: 后台cms/public/ueditor/third-party/webuploader/webuploader.custom.js
  function uncurryThis (line 194) | function uncurryThis( fn ) {
  function bindFn (line 200) | function bindFn( fn, context ) {
  function createObject (line 206) | function createObject( proto ) {
  function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 512) | function triggerHanders( events, args ) {
  function Uploader (line 721) | function Uploader( opts ) {
  function Runtime (line 903) | function Runtime( options ) {
  function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
  function Blob (line 1139) | function Blob( ruid, source ) {
  function File (line 1183) | function File( ruid, file ) {
  function FilePicker (line 1223) | function FilePicker( opts ) {
  function isArrayLike (line 1358) | function isArrayLike( obj ) {
  function Widget (line 1375) | function Widget( uploader ) {
  function Image (line 1653) | function Image( opts ) {
  function gid (line 2022) | function gid() {
  function WUFile (line 2033) | function WUFile( source ) {
  function Queue (line 2210) | function Queue() {
  function Transport (line 2758) | function Transport( opts ) {
  function CuteFile (line 2971) | function CuteFile( file, chunkSize ) {
  function CompBase (line 3541) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 3573) | function Html5Runtime() {
  function detectVerticalSquash (line 4559) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 4611) | function detectSubsampling( img ) {
  function JPEGEncoder (line 4727) | function JPEGEncoder(quality) {

FILE: 后台cms/public/ueditor/third-party/webuploader/webuploader.flashonly.js
  function uncurryThis (line 194) | function uncurryThis( fn ) {
  function bindFn (line 200) | function bindFn( fn, context ) {
  function createObject (line 206) | function createObject( proto ) {
  function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 512) | function triggerHanders( events, args ) {
  function Uploader (line 721) | function Uploader( opts ) {
  function Runtime (line 903) | function Runtime( options ) {
  function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
  function Blob (line 1139) | function Blob( ruid, source ) {
  function File (line 1183) | function File( ruid, file ) {
  function FilePicker (line 1223) | function FilePicker( opts ) {
  function isArrayLike (line 1358) | function isArrayLike( obj ) {
  function Widget (line 1375) | function Widget( uploader ) {
  function Image (line 1653) | function Image( opts ) {
  function gid (line 2022) | function gid() {
  function WUFile (line 2033) | function WUFile( source ) {
  function Queue (line 2210) | function Queue() {
  function Transport (line 2758) | function Transport( opts ) {
  function CuteFile (line 2971) | function CuteFile( file, chunkSize ) {
  function hashString (line 3715) | function hashString( str ) {
  function CompBase (line 3761) | function CompBase( owner, runtime ) {
  function getFlashVersion (line 3795) | function getFlashVersion() {
  function FlashRuntime (line 3813) | function FlashRuntime() {

FILE: 后台cms/public/ueditor/third-party/webuploader/webuploader.html5only.js
  function uncurryThis (line 194) | function uncurryThis( fn ) {
  function bindFn (line 200) | function bindFn( fn, context ) {
  function createObject (line 206) | function createObject( proto ) {
  function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 512) | function triggerHanders( events, args ) {
  function Uploader (line 721) | function Uploader( opts ) {
  function Runtime (line 903) | function Runtime( options ) {
  function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1142) | function DragAndDrop( opts ) {
  function isArrayLike (line 1193) | function isArrayLike( obj ) {
  function Widget (line 1210) | function Widget( uploader ) {
  function FilePaste (line 1419) | function FilePaste( opts ) {
  function Blob (line 1500) | function Blob( ruid, source ) {
  function File (line 1544) | function File( ruid, file ) {
  function FilePicker (line 1584) | function FilePicker( opts ) {
  function Image (line 1847) | function Image( opts ) {
  function gid (line 2216) | function gid() {
  function WUFile (line 2227) | function WUFile( source ) {
  function Queue (line 2404) | function Queue() {
  function Transport (line 2952) | function Transport( opts ) {
  function CuteFile (line 3165) | function CuteFile( file, chunkSize ) {
  function hashString (line 3909) | function hashString( str ) {
  function CompBase (line 3955) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 3987) | function Html5Runtime() {
  function detectVerticalSquash (line 5233) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 5285) | function detectSubsampling( img ) {

FILE: 后台cms/public/ueditor/third-party/webuploader/webuploader.js
  function uncurryThis (line 194) | function uncurryThis( fn ) {
  function bindFn (line 200) | function bindFn( fn, context ) {
  function createObject (line 206) | function createObject( proto ) {
  function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 512) | function triggerHanders( events, args ) {
  function Uploader (line 721) | function Uploader( opts ) {
  function Runtime (line 903) | function Runtime( options ) {
  function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1142) | function DragAndDrop( opts ) {
  function isArrayLike (line 1193) | function isArrayLike( obj ) {
  function Widget (line 1210) | function Widget( uploader ) {
  function FilePaste (line 1419) | function FilePaste( opts ) {
  function Blob (line 1500) | function Blob( ruid, source ) {
  function File (line 1544) | function File( ruid, file ) {
  function FilePicker (line 1584) | function FilePicker( opts ) {
  function Image (line 1847) | function Image( opts ) {
  function gid (line 2216) | function gid() {
  function WUFile (line 2227) | function WUFile( source ) {
  function Queue (line 2404) | function Queue() {
  function Transport (line 2952) | function Transport( opts ) {
  function CuteFile (line 3165) | function CuteFile( file, chunkSize ) {
  function hashString (line 3909) | function hashString( str ) {
  function CompBase (line 3955) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 3987) | function Html5Runtime() {
  function JPEGEncoder (line 5008) | function JPEGEncoder(quality) {
  function detectVerticalSquash (line 6035) | function detectVerticalSquash( img, iw, ih ) {
  function detectSubsampling (line 6087) | function detectSubsampling( img ) {
  function getFlashVersion (line 6341) | function getFlashVersion() {
  function FlashRuntime (line 6359) | function FlashRuntime() {

FILE: 后台cms/public/ueditor/third-party/webuploader/webuploader.withoutimage.js
  function uncurryThis (line 194) | function uncurryThis( fn ) {
  function bindFn (line 200) | function bindFn( fn, context ) {
  function createObject (line 206) | function createObject( proto ) {
  function findHandlers (line 495) | function findHandlers( arr, name, callback, context ) {
  function eachEvent (line 505) | function eachEvent( events, callback, iterator ) {
  function triggerHanders (line 512) | function triggerHanders( events, args ) {
  function Uploader (line 721) | function Uploader( opts ) {
  function Runtime (line 903) | function Runtime( options ) {
  function RuntimeClient (line 1036) | function RuntimeClient( component, standalone ) {
  function DragAndDrop (line 1142) | function DragAndDrop( opts ) {
  function isArrayLike (line 1193) | function isArrayLike( obj ) {
  function Widget (line 1210) | function Widget( uploader ) {
  function FilePaste (line 1419) | function FilePaste( opts ) {
  function Blob (line 1500) | function Blob( ruid, source ) {
  function File (line 1544) | function File( ruid, file ) {
  function FilePicker (line 1584) | function FilePicker( opts ) {
  function gid (line 1850) | function gid() {
  function WUFile (line 1861) | function WUFile( source ) {
  function Queue (line 2038) | function Queue() {
  function Transport (line 2586) | function Transport( opts ) {
  function CuteFile (line 2799) | function CuteFile( file, chunkSize ) {
  function hashString (line 3543) | function hashString( str ) {
  function CompBase (line 3589) | function CompBase( owner, runtime ) {
  function Html5Runtime (line 3621) | function Html5Runtime() {
  function getFlashVersion (line 4233) | function getFlashVersion() {
  function FlashRuntime (line 4251) | function FlashRuntime() {

FILE: 后台cms/public/ueditor/third-party/zeroclipboard/ZeroClipboard.js
  function parseFlashVersion (line 521) | function parseFlashVersion(desc) {
  function isPepperFlash (line 526) | function isPepperFlash(flashPlayerFileName) {
  function inspectPlugin (line 529) | function inspectPlugin(plugin) {

FILE: 后台cms/public/ueditor/ueditor.all.js
  function getItem (line 888) | function getItem(doc, obj) {
  function opt (line 1037) | function opt(obj, name) {
  function doReady (line 1148) | function doReady(doc) {
  function encodeString (line 1347) | function encodeString(source) {
  function encodeArray (line 1365) | function encodeArray(source) {
  function pad (line 1390) | function pad(source) {
  function encodeDate (line 1394) | function encodeDate(source){
  function getListener (line 1666) | function getListener(obj, type, force) {
  function _ (line 1685) | function _( s ) {
  function getDomNode (line 1870) | function getDomNode(node, start, ltr, startFromChild, fn, guard) {
  function clear (line 2470) | function clear(next, dir) {
  function remove (line 2965) | function remove(dir) {
  function merge (line 3156) | function merge(rtl, start, node) {
  function updateCollapse (line 4308) | function updateCollapse(range) {
  function selectOneNode (line 4315) | function selectOneNode(rng){
  function setEndPoint (line 4318) | function setEndPoint(toStart, node, offset, range) {
  function execContentsAction (line 4341) | function execContentsAction(range, action) {
  function removeFillData (line 4488) | function removeFillData(doc, excludeNode) {
  function mergeSibling (line 4514) | function mergeSibling(node, dir) {
  function check (line 5017) | function check(node){
  function adjust (line 5238) | function adjust(r, c) {
  function checkOffset (line 5739) | function checkOffset(rng){
  function getAddress (line 5893) | function getAddress(isStart){
  function getNode (line 5979) | function getNode(address,isStart){
  function getBoundaryInformation (line 6140) | function getBoundaryInformation( range, start ) {
  function transformIERangeToRange (line 6210) | function transformIERangeToRange( ieRange, range ) {
  function _getIERange (line 6229) | function _getIERange( sel ) {
  function optimze (line 6379) | function optimze( range ) {
  function setValue (line 6545) | function setValue(form, editor) {
  function loadPlugins (line 6573) | function loadPlugins(me){
  function checkCurLang (line 6580) | function checkCurLang(I18N){
  function langReadied (line 6586) | function langReadied(me){
  function isCdataDiv (line 7354) | function isCdataDiv(node){
  function clear (line 7818) | function clear() {
  function showErrorMsg (line 8118) | function showErrorMsg(msg) {
  function json2str (line 8182) | function json2str(json) {
  function doAjax (line 8202) | function doAjax(url, ajaxOptions) {
  function doJsonp (line 8259) | function doJsonp(url, opts) {
  function isWordDocument (line 8442) | function isWordDocument( str ) {
  function transUnit (line 8446) | function transUnit( v ) {
  function filterPasteWord (line 8453) | function filterPasteWord( str ) {
  function insertLine (line 8668) | function insertLine(arr, current, begin) {
  function insertIndent (line 8673) | function insertIndent(arr, current) {
  function nodeToHtml (line 8699) | function nodeToHtml(node, arr, formatter, current) {
  function isText (line 8723) | function isText(node, arr) {
  function isElement (line 8733) | function isElement(node, arr, formatter, current) {
  function isComment (line 8783) | function isComment(node, arr) {
  function getNodeById (line 8787) | function getNodeById(root, id) {
  function getNodesByTagName (line 8801) | function getNodesByTagName(node, tagName, arr) {
  function nodeTraversal (line 8811) | function nodeTraversal(root,fn){
  function exec (line 9319) | function exec(name, val) {
  function text (line 9435) | function text(parent, data) {
  function element (line 9448) | function element(parent, tagName, htmlattr) {
  function comment (line 9493) | function comment(parent, data) {
  function filterNode (line 9588) | function filterNode(node,rules){
  function getUserData (line 9866) | function getUserData() {
  function tdParent (line 9986) | function tdParent(node){
  function isLine (line 10523) | function isLine(node,notEmpty){
  function removeNotAttributeSpan (line 10541) | function removeNotAttributeSpan(node){
  function autotype (line 10549) | function autotype(type,html){
  function DBC2SB (line 10730) | function DBC2SB(str) {
  function ToDBC (line 10746) | function ToDBC(txtstring) {
  function readLocalOpts (line 10764) | function readLocalOpts() {
  function stringToObj (line 10837) | function stringToObj(str) {
  function setBackground (line 10847) | function setBackground(obj) {
  function unhtmlData (line 11132) | function unhtmlData(imgCi) {
  function mergeWithParent (line 11495) | function mergeWithParent(node){
  function mergeChild (line 11511) | function mergeChild(rng,cmdName,value){
  function mergesibling (line 11534) | function mergesibling(rng,cmdName,value) {
  function optimize (line 11899) | function optimize( range ) {
  function doLink (line 11927) | function doLink(range,opt,me){
  function deleteIframe (line 12039) | function deleteIframe(){
  function isRedundantSpan (line 12102) | function isRedundantSpan (node) {
  function doRemove (line 12121) | function doRemove( range ) {
  function getObj (line 12284) | function getObj(editor){
  function formatTime (line 13051) | function formatTime(date, format) {
  function formatDate (line 13058) | function formatDate(date, format) {
  function fillNode (line 13890) | function fillNode(node){
  function isHr (line 13907) | function isHr(node){
  function compareAddr (line 14194) | function compareAddr(indexA, indexB) {
  function compareRangeAddress (line 14204) | function compareRangeAddress(rngAddrA, rngAddrB) {
  function UndoManager (line 14214) | function UndoManager() {
  function saveScene (line 14342) | function saveScene() {
  function save (line 14411) | function save(cont){
  function initZeroClipboard (line 14461) | function initZeroClipboard() {
  function getClipboardData (line 14541) | function getClipboardData(callback) {
  function getPureHtml (line 14591) | function getPureHtml(html){
  function filter (line 14619) | function filter(div) {
  function transP (line 14848) | function transP(node){
  function removeNode (line 14852) | function removeNode(node){
  function listToArray (line 14988) | function listToArray(list){
  function getStyle (line 15091) | function getStyle(node){
  function checkListType (line 15210) | function checkListType(content,container){
  function appendLi (line 15237) | function appendLi(list,p,type){
  function adjustListStyle (line 15291) | function adjustListStyle(doc,ignore){
  function adjustList (line 15367) | function adjustList(list, tag, style,ignoreEmpty) {
  function setListStyle (line 15391) | function setListStyle(list,style){
  function clearEmptySibling (line 15399) | function clearEmptySibling(node) {
  function preventAndSave (line 15411) | function preventAndSave() {
  function findList (line 15416) | function findList(node,filterFn){
  function checkLevel (line 15720) | function checkLevel(li){
  function getLi (line 15808) | function getLi(start){
  function createSourceEditor (line 16280) | function createSourceEditor(holder){
  function Scale (line 16891) | function Scale() {
  function checkIsCludeLink (line 17311) | function checkIsCludeLink(node){
  function adjustHeight (line 17400) | function adjustHeight() {
  function checkHasUI (line 17522) | function checkHasUI(){
  function fixIE6FixedPos (line 17529) | function fixIE6FixedPos(){
  function setFloating (line 17539) | function setFloating(){
  function unsetFloating (line 17563) | function unsetFloating(){
  function updateFloating (line 17572) | function updateFloating(){
  function creatInsertStr (line 17652) | function creatInsertStr(url,width,height,id,align,classname,type){
  function switchImgAndVideo (line 17683) | function switchImgAndVideo(root,img2video){
  function checkRange (line 18282) | function checkRange(beginRowIndex, beginColIndex, endRowIndex, endColInd...
  function replaceTdToTh (line 18569) | function replaceTdToTh(colIndex, cell, tableRow) {
  function replaceTdToTh (line 18687) | function replaceTdToTh(rowIndex, cell, tableRow) {
  function showError (line 18935) | function showError(e) {
  function createTable (line 18969) | function createTable(opt, tdWidth) {
  function getAverageWidth (line 19555) | function getAverageWidth() {
  function setAverageWidth (line 19578) | function setAverageWidth(averageWidth) {
  function getAverageHeight (line 19608) | function getAverageHeight() {
  function setAverageHeight (line 19648) | function setAverageHeight(averageHeight) {
  function resetTdWidth (line 19844) | function resetTdWidth(table, editor) {
  function getTableWidth (line 19861) | function getTableWidth(editor, needIEHack, defaultValue) {
  function getSelectedArr (line 19866) | function getSelectedArr(editor) {
  function showError (line 19919) | function showError(e) {
  function removeStyleSize (line 20598) | function removeStyleSize(obj, replaceToProperty) {
  function removeStyle (line 20603) | function removeStyle(obj, styleName, replaceToProperty) {
  function getParentTdOrTh (line 20610) | function getParentTdOrTh(ele) {
  function isEmptyBlock (line 20617) | function isEmptyBlock(node) {
  function mouseCoords (line 20631) | function mouseCoords(evt) {
  function mouseMoveEvent (line 20641) | function mouseMoveEvent(evt) {
  function toggleDragButton (line 20718) | function toggleDragButton(show, table, editor) {
  function createDragButton (line 20729) | function createDragButton(table, editor) {
  function inTableSide (line 20788) | function inTableSide(table, cell, evt, top) {
  function getPermissionX (line 20806) | function getPermissionX(dragTd, evt) {
  function getPermissionY (line 20825) | function getPermissionY(dragTd, evt) {
  function toggleDraggableState (line 20838) | function toggleDraggableState(editor, draggable, dir, mousePos, cell) {
  function getResizeLineByUETable (line 20859) | function getResizeLineByUETable() {
  function updateResizeLine (line 20897) | function updateResizeLine( cell, uetable ) {
  function showResizeLine (line 20915) | function showResizeLine( cell ) {
  function getRelation (line 20928) | function getRelation(ele, mousePos) {
  function mouseDownEvent (line 20950) | function mouseDownEvent(type, evt) {
  function clearTableTimer (line 20991) | function clearTableTimer() {
  function tableDbclickHandler (line 20997) | function tableDbclickHandler(evt) {
  function tableClickHander (line 21085) | function tableClickHander( evt ) {
  function borderActionHandler (line 21113) | function borderActionHandler( evt ) {
  function extractArray (line 21130) | function extractArray( originArr, key ) {
  function clearTableDragTimer (line 21149) | function clearTableDragTimer() {
  function reconstruct (line 21154) | function reconstruct( obj ) {
  function tableBorderDrag (line 21173) | function tableBorderDrag( evt ) {
  function mouseUpEvent (line 21194) | function mouseUpEvent(type, evt) {
  function mouseOverEvent (line 21312) | function mouseOverEvent(type, evt) {
  function setCellHeight (line 21340) | function setCellHeight(cell, height, backHeight) {
  function getWidth (line 21348) | function getWidth(cell) {
  function changeColWidth (line 21353) | function changeColWidth(cell, changeValue) {
  function isEditorDisabled (line 21390) | function isEditorDisabled() {
  function changeRowHeight (line 21394) | function changeRowHeight(td, changeValue) {
  function getCellsByMoveBorder (line 21412) | function getCellsByMoveBorder( cell, table, isContainMergeCell ) {
  function getMinWidthByTableCells (line 21483) | function getMinWidthByTableCells( cells ) {
  function correctChangeValue (line 21497) | function correctChangeValue( changeValue, relatedCell, cells ) {
  function getTableCellWidth (line 21534) | function getTableCellWidth( cell ) {
  function getTableCellOffset (line 21562) | function getTableCellOffset( cell ) {
  function getTabcellSpace (line 21585) | function getTabcellSpace() {
  function getDragLine (line 21631) | function getDragLine(editor, doc) {
  function hideDragLine (line 21646) | function hideDragLine(editor) {
  function showDragLineAt (line 21659) | function showDragLineAt(state, cell) {
  function switchBorderColor (line 21686) | function switchBorderColor(editor, flag) {
  function getTableWidth (line 21703) | function getTableWidth(editor, needIEHack, defaultValue) {
  function getTargetTd (line 21711) | function getTargetTd(editor, evt) {
  function getLabel (line 22330) | function getLabel(){
  function addList (line 22733) | function addList(type,evt){
  function findTextInString (line 22858) | function findTextInString(textContent,opt,currentIndex){
  function findTextBlockElm (line 22875) | function findTextBlockElm(node,currentIndex,opt){
  function findNTextInBlockElm (line 22901) | function findNTextInBlockElm(node,index,str){
  function searchReplace (line 22931) | function searchReplace(me,opt){
  function replaceText (line 22980) | function replaceText(rng,str){
  function catchremoteimage (line 23275) | function catchremoteimage(imgs, callbacks) {
  function getLocation (line 23304) | function getLocation(url){
  function onSuccess (line 23357) | function onSuccess(rs){
  function createInsertStr (line 23520) | function createInsertStr(obj,toEmbed){
  function creatInsertStr (line 23662) | function creatInsertStr(url,width,height,align,cssfloat,toEmbed){
  function sendAndInsertFile (line 23746) | function sendAndInsertFile(file, editor) {
  function getPasteImage (line 23849) | function getPasteImage(e){
  function getDropImage (line 23852) | function getDropImage(e){
  function save (line 23928) | function save ( editor ) {
  function validData (line 24137) | function validData ( table ) {
  function Section (line 24205) | function Section(option){
  function getSection (line 24216) | function getSection(option) {
  function getNodeFromAddress (line 24220) | function getNodeFromAddress(startAddress, root) {
  function getSectionLevel (line 24284) | function getSectionLevel(node) {
  function traversal (line 24295) | function traversal(node, Directory) {
  function isContainsAddress (line 24376) | function isContainsAddress(startAddress, endAddress, addressTarget){
  function getNodeFromAddress (line 24407) | function getNodeFromAddress(startAddress) {
  function initUploadBtn (line 24484) | function initUploadBtn() {
  function getFileIcon (line 24715) | function getFileIcon(url){
  function filter (line 24791) | function filter(node) {
  function handleMouseMove (line 25027) | function handleMouseMove(evt){
  function handleMouseUp (line 25038) | function handleMouseUp(evt){
  function releaseCaptrue (line 25052) | function releaseCaptrue(){
  function updateFixedOffset (line 25107) | function updateFixedOffset(){
  function bindFixedLayer (line 25119) | function bindFixedLayer(adjOffset){
  function closeAllPopup (line 25304) | function closeAllPopup( evt,el ){
  function genColorPicker (line 25598) | function genColorPicker(noColorText,editor){
  function getPara (line 26173) | function getPara(me){
  function setPos (line 27526) | function setPos (offset) {
  function setPosByCxtMenu (line 27536) | function setPosByCxtMenu (menu) {
  function hideAllMenu (line 27610) | function hideAllMenu (e) {
  function EditorUI (line 28605) | function EditorUI(options) {
  function countFn (line 28638) | function countFn() {
  function setCount (line 28729) | function setCount(editor,ui) {
  function down (line 29176) | function down() {
  function move (line 29207) | function move(event) {
  function up (line 29225) | function up() {
  function clearSelection (line 29242) | function clearSelection() {
  function renderUI (line 29334) | function renderUI() {
  function updateHolderPos (line 29520) | function updateHolderPos(){

FILE: 后台cms/public/ueditor/ueditor.config.js
  function getUEBasePath (line 432) | function getUEBasePath(docUrl, confUrl) {
  function getConfigFilePath (line 438) | function getConfigFilePath() {
  function getBasePath (line 446) | function getBasePath(docUrl, confUrl) {
  function optimizationPath (line 467) | function optimizationPath(path) {

FILE: 后台cms/public/ueditor/ueditor.parse.js
  function getItem (line 232) | function getItem(doc,obj){
  function findParentByTagName (line 433) | function findParentByTagName(target, tagNames) {
  function sortTable (line 445) | function sortTable(table, sortByCellIndex, compareFn) {
  function sort (line 515) | function sort(array, compareFn){
  function updateTable (line 529) | function updateTable(table) {
  function parseSources (line 559) | function parseSources () {
  function extractChartData (line 572) | function extractChartData ( rootNode ) {
  function formatData (line 591) | function formatData ( tableNode ) {
  function loadResources (line 632) | function loadResources () {
  function loadJQuery (line 638) | function loadJQuery () {
  function loadHighcharts (line 662) | function loadHighcharts () {
  function loadTypeConfig (line 687) | function loadTypeConfig () {
  function render (line 703) | function render () {
  function renderChart (line 730) | function renderChart ( container, typeConfig, config ) {
  function createContainer (line 785) | function createContainer ( tableNode ) {
  function analysisConfig (line 797) | function analysisConfig ( config ) {
  function applyStyle (line 932) | function applyStyle(nodes){

FILE: 后台cms/src/common/axios.js
  method get (line 31) | get(url, param) {
  method put (line 66) | put(url, param) {
  method post (line 95) | post(url, param) {
  method post_show (line 124) | post_show(url, param) {
  method put_show (line 137) | put_show(url, param) {
  method get_show (line 149) | get_show(url, param) {
Copy disabled (too large) Download .json
Condensed preview — 479 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (12,185K chars).
[
  {
    "path": "LICENSE",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 551,
    "preview": "# ruhua\n\n#### 介绍\n如花商城是基于Thinkphp6+uniapp+element开发的一套新零售移动电商系统,采用三端分离。\n功能包含商城、优惠券、分销、拼团、限时折扣、积分等功能,更适合企业二次开发;\n微信小程序端,微信公"
  },
  {
    "path": "前端商城/.gitignore",
    "chars": 89,
    "preview": "/unpackage\npackage-lock.json\n\n*.log\n \n.travis.yml\nLICENSE.txt\ncomposer.json\ncomposer.lock"
  },
  {
    "path": "前端商城/App.vue",
    "chars": 6037,
    "preview": "<script>\n\timport {XcxToken} from '@/common/xcx_token.js'\n\timport {WxToken} from '@/common/wx_token.js'\t\n\timport {AppToke"
  },
  {
    "path": "前端商城/README.md",
    "chars": 158,
    "preview": "## 如花商城单商户-1.233\n\n1、请全局搜索 “如花” 自行替换为你的商城名称\n2、common/config.js 替换Api_url为API网址,公众号打包时设置为/../\n3、app.vue中可屏蔽公众号登陆,实现浏览器访问便于"
  },
  {
    "path": "前端商城/common/app.css",
    "chars": 1328,
    "preview": "/*app.wxss*/\n\npage {\n\tbackground: #fafafa;\n\tfont-size: 32rpx;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\t"
  },
  {
    "path": "前端商城/common/app_token.js",
    "chars": 1149,
    "preview": "import {Api_url} from './config'\nimport http from './axios.js'\n\nclass AppToken {\n\tconstructor() { \n\t\tthis.verifyUrl = Ap"
  },
  {
    "path": "前端商城/common/axios.js",
    "chars": 2095,
    "preview": "import {Api_url} from './config'\n// import {Token} from './token.js'\n// var token = new Token();\n\nexport default { \n\tasy"
  },
  {
    "path": "前端商城/common/cache/user.js",
    "chars": 1056,
    "preview": "//  用户的缓存数据 \nimport http from '../axios.js'\n\nvar time = Date.parse(new Date()) / 1000\n\nclass CUser { \n\tconstructor() {  "
  },
  {
    "path": "前端商城/common/cache.js",
    "chars": 1196,
    "preview": "\nimport productModel from \"@/model/product.js\"\nvar time = Date.parse(new Date()) / 1000\n\nexport default { \n\t_set_home_ca"
  },
  {
    "path": "前端商城/common/check.js",
    "chars": 2814,
    "preview": "import {\n\tApi_url\n} from '@/common/config.js'\nimport Vue from 'vue'\nvar x = 0\nexport default {\n\tGetUrlParame(parameName)"
  },
  {
    "path": "前端商城/common/config.js",
    "chars": 41,
    "preview": "const Api_url='/../'\nexport {\n\tApi_url\n}\n"
  },
  {
    "path": "前端商城/common/filters/filters.js",
    "chars": 824,
    "preview": "const new_price = (price) => {\n\tif(price > 1){\n\t\tprice = Math.floor(price)\n\t}else{\n\t\tprice = price\n\t}\n\treturn price\n}\nco"
  },
  {
    "path": "前端商城/common/h5_pay.js",
    "chars": 13022,
    "preview": "!function(e,n){\"function\"==typeof define&&(define.amd||define.cmd)?define(function(){return n(e)}):n(e,!0)}(window,funct"
  },
  {
    "path": "前端商城/common/mixin.js",
    "chars": 304,
    "preview": "import Check from '@/common/check.js'\nexport const common = {\n\tonLoad(){\n\t\t//优先顺序:mixin——onload > page_onload > mixin_on"
  },
  {
    "path": "前端商城/common/switch.js",
    "chars": 502,
    "preview": " \nimport http from './axios.js'\n\t\t\nexport default {\n\tset_storage(){ \n\t\treturn http.get(\"index/user/sys_config\").then(res"
  },
  {
    "path": "前端商城/common/uni.css",
    "chars": 24058,
    "preview": "@font-face {\n\tfont-family: uniicons;\n\tfont-weight: normal;\n\tfont-style: normal;\n\tsrc: url('~@/common/uni.ttf') format('t"
  },
  {
    "path": "前端商城/common/wx_token.js",
    "chars": 2839,
    "preview": "import {Api_url} from './config' \nimport http from './axios.js'\nimport Vue from 'vue'\n\nconst Wxcode_url= Api_url+\"/auth/"
  },
  {
    "path": "前端商城/common/xcx_token.js",
    "chars": 1351,
    "preview": "import {Api_url} from './config'\nimport Vue from 'vue'\n\nclass XcxToken {\n\tconstructor() {\n\t\tthis.tokenUrl = Api_url + 'a"
  },
  {
    "path": "前端商城/components/actionsheet/actionsheet.vue",
    "chars": 3631,
    "preview": "<template>\n\t<view>\n\t\t<view class=\"tui-actionsheet-class tui-actionsheet\" :class=\"[show?'tui-actionsheet-show':'']\">\n\t\t\t<"
  },
  {
    "path": "前端商城/components/badge/badge.vue",
    "chars": 1388,
    "preview": "<template>\n\t<view class=\"tui-badge-class\" :class=\"[dot?'tui-badge-dot':'tui-badge','tui-'+type, size?'tui-badge-small':'"
  },
  {
    "path": "前端商城/components/bottom-popup/bottom-popup.vue",
    "chars": 1453,
    "preview": "<template>\n\t<view>\n\t\t<view class=\"tui-popup-class tui-bottom-popup\" :class=\"{'tui-popup-show':show}\" :style=\"{background"
  },
  {
    "path": "前端商城/components/button/button.vue",
    "chars": 5991,
    "preview": "<template>\n\t<button class=\"tui-btn-class tui-btn\" :class=\"['tui-btn-'+size,plain?'tui-'+type+'-outline':'tui-'+(type || "
  },
  {
    "path": "前端商城/components/dateTime/dateTime.vue",
    "chars": 9063,
    "preview": "<template>\n\t<view class=\"tui-datetime-picker\">\n\t\t<view class=\"tui-mask\" :class=\"{ 'tui-mask-show': isShow }\" @touchmove."
  },
  {
    "path": "前端商城/components/discount/discount.vue",
    "chars": 184,
    "preview": "<template>\n\t<view class=\"discount\">\n\t\t\n\t</view>\n</template>\n\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\t\n\t\t\t}"
  },
  {
    "path": "前端商城/components/drawer/drawer.vue",
    "chars": 1951,
    "preview": "<template>\n\t<view class=\"tui-drawer-class tui-drawer\" :class=\"[visible ? 'tui-drawer-show' : '','tui-drawer-' + mode]\">\n"
  },
  {
    "path": "前端商城/components/empty.vue",
    "chars": 25930,
    "preview": "<template>\n\t<view class=\"empty-content\">\n\t\t<image class=\"empty-content-image\" :src=\"setSrc\" mode=\"aspectFit\"></image>\n\t<"
  },
  {
    "path": "前端商城/components/form_data/form_data.vue",
    "chars": 9679,
    "preview": "<template>\n\t<view class=\"form\">\n\t\t<view v-for=\"(item,index) of data_form\" :key=\"index\">\n\t\t\t<view class=\"biao\" v-if=\"item"
  },
  {
    "path": "前端商城/components/hch-poster/hch-poster - 副本.vue",
    "chars": 10893,
    "preview": "<template>\n\t<!-- 海报(想让海报显示隐藏要用hidden,v-if关闭后没办法在完整的出来海报) 保存海报按钮和关闭按钮 在html代码中写出来 绑定点击方法然后透明 再用canvas 覆盖 -->\n\t<view class"
  },
  {
    "path": "前端商城/components/hch-poster/hch-poster.vue",
    "chars": 10973,
    "preview": "<template>\n\t<!-- 海报(想让海报显示隐藏要用hidden,v-if关闭后没办法在完整的出来海报) 保存海报按钮和关闭按钮 在html代码中写出来 绑定点击方法然后透明 再用canvas 覆盖 -->\n\t<view class"
  },
  {
    "path": "前端商城/components/icon/icon.vue",
    "chars": 45252,
    "preview": "<template>\n\t<view class=\"tui-icon-class tui-icon\" :class=\"'tui-icon-'+name\" :style=\"{ color: color, fontSize: size + 'px"
  },
  {
    "path": "前端商城/components/jing-swiper/jing-swiper.vue",
    "chars": 2326,
    "preview": "<template>\n\t<view class=\"my-plan-style\">\n\t\t<!-- 3D轮播 -->\n\t\t<view class=\"\">\n\t\t\t<swiper class=\"imageContainer\" @change=\"ha"
  },
  {
    "path": "前端商城/components/linnian-CountDown/readme.md",
    "chars": 1501,
    "preview": "### CountDown 倒计时\n\n倒计时组件,组件名:``uni-countdown``,代码块: uCountDown。\n\n**使用方式:**\n\n在 ``script`` 中引用组件 \n\n```javascript\nimport un"
  },
  {
    "path": "前端商城/components/linnian-CountDown/uni-countdown.vue",
    "chars": 3889,
    "preview": "<template>\n\t<view class=\"uni-countdown\">\n\t\t<view v-if=\"showDay\" class=\"uni-countdown__number\" :style=\"{borderColor:borde"
  },
  {
    "path": "前端商城/components/loadmore/loadmore.vue",
    "chars": 4702,
    "preview": "<template>\n\t<view class=\"tui-loadmore\" v-if=\"visible\">\n\t\t<view :class=\"['tui-loading-'+index, (index==3 && type)?'tui-lo"
  },
  {
    "path": "前端商城/components/mix-list-cell.vue",
    "chars": 1962,
    "preview": "<template>\n\t<view class=\"content\">\n\t\t\n\t\t<view class=\"mix-list-cell\" :class=\"border\" @click=\"eventClick\" hover-class=\"cel"
  },
  {
    "path": "前端商城/components/modal/modal.vue",
    "chars": 6188,
    "preview": "<template>\n\t<view @touchmove.stop.prevent>\n\t\t<view class=\"tui-modal-box\" :style=\"{width:width,padding:padding,borderRadi"
  },
  {
    "path": "前端商城/components/new_HB/index/index.vue",
    "chars": 3906,
    "preview": "<template>\n\t<view class=\"content\">\n\t\t<!-- <view class=\"beijing\"> -->\n\t\t<view class=\"post\" v-show=\"tishi==1\">\n\t\t\t<p style"
  },
  {
    "path": "前端商城/components/new_HB/mg-h5hb/common/canvas_x.js",
    "chars": 13278,
    "preview": "\nimport QRCode from './qrCode'\n\nimport './style.scss'\n\n/**\n * 绘制一个图片。\n */\nfunction makeImage(options, callback) {\n\tconso"
  },
  {
    "path": "前端商城/components/new_HB/mg-h5hb/common/myUtil.js",
    "chars": 2490,
    "preview": "\nfunction globalurl(){\n\treturn \"http://ttdelay.zhongrenweiye.com:8099/renren-fast/\"\n\t// return \"http://192.168.3.14:8099"
  },
  {
    "path": "前端商城/components/new_HB/mg-h5hb/common/qrCode.js",
    "chars": 38911,
    "preview": "/**\n * @fileoverview\n * - Using the 'QRCode for Javascript library'\n * - Fixed dataset of 'QRCode for Javascript library"
  },
  {
    "path": "前端商城/components/new_HB/mg-h5hb/common/style.scss",
    "chars": 1010,
    "preview": ".x-imaging-box {\n  position: relative;\n\n  & .x-textarea-container {\n    position: absolute;\n    z-index: 100;\n    backgr"
  },
  {
    "path": "前端商城/components/nomore/nomore.vue",
    "chars": 2131,
    "preview": "<template>\n\t<view class=\"tui-nomore-class tui-loadmore-none\" v-if=\"visible\">\n\t\t<view :class=\"[isDot?'tui-nomore-dot':'tu"
  },
  {
    "path": "前端商城/components/numberbox/numberbox.vue",
    "chars": 4988,
    "preview": "<template>\n\t<view class=\"tui-numberbox-class tui-numberbox\">\n\t\t<view class=\"tui-numbox-icon tui-icon-reduce \" :class=\"[d"
  },
  {
    "path": "前端商城/components/plan-image-upload/index.vue",
    "chars": 10891,
    "preview": "<template>\n\t<view class=\"imageUploadContainer\">\n\t\t<view class=\"imageUploadList\">\n\t\t\t<view class=\"imageItem\" v-bind:key=\""
  },
  {
    "path": "前端商城/components/plan-image-upload/up_img.vue",
    "chars": 10146,
    "preview": "<template>\n\t <view class=\"imageUploadContainer\">\n\t\t<view class=\"imageUploadList\"> \n\t\t\t<view class=\"imageItem\" v-bind:key"
  },
  {
    "path": "前端商城/components/plan-image-upload/work_log - 副本.vue",
    "chars": 8892,
    "preview": "<template>\n\t<view class=\"imageUploadContainer\">\n\t\t<view class=\"imageUploadList\">\n\t\t\t<view class=\"imageItem\" v-bind:key=\""
  },
  {
    "path": "前端商城/components/qy/Black.vue",
    "chars": 455,
    "preview": "<template>\n\t<div class=\"black\">\n\t\t<div class=\"container\"></div>\n\t</div>\n</template>\n\n<script>\n\texport default {\n\t\tdata()"
  },
  {
    "path": "前端商城/components/qy/Coupon.vue",
    "chars": 2464,
    "preview": "<template>\n\t<view class=\"Tan\">\n\t\t<view class='' v-if=\"coupon\">\n\t\t    <view class=\"coupon\" :style=\"'background: url('+web"
  },
  {
    "path": "前端商城/components/qy/FenX.vue",
    "chars": 4235,
    "preview": "<template>\n\t<view > \n\t\t<block  v-for=\"(item,index) of fxlist\" :key=\"index\">\n\t\t\t<view class='fenxiang'>\n\t\t\t\t<view class='"
  },
  {
    "path": "前端商城/components/qy/List-d.vue",
    "chars": 1741,
    "preview": "<template>\n  <div id=\"list-d\"> \n        <div class=\"con_01\">\n          <div class='picss'> \n\t\t\t\t\t\t<img src='@/imgs/9.jpg"
  },
  {
    "path": "前端商城/components/qy/List-f.vue",
    "chars": 1719,
    "preview": "<template>\n  <view class=\"list-f\" >\n        <view class='f_01' >\n          <view class='f_01_1'>\n            <!-- <img :"
  },
  {
    "path": "前端商城/components/qy/Tan.vue",
    "chars": 1512,
    "preview": "<template>\n\t<view class=\"AddTan\">\n\t\t<view class='' v-if=\"add\">\n\t\t    <view class=\"two\" >\n\t\t\t\t<view class='two_con'><img "
  },
  {
    "path": "前端商城/components/qy/Title-c.vue",
    "chars": 648,
    "preview": "<template>\n  <div class=\"title-c\" id=\"title-c\">\n    <div>\n      <div class=\"cx\">\n        <div class='cx_l'></div>\n      "
  },
  {
    "path": "前端商城/components/qy/list/h.vue",
    "chars": 1515,
    "preview": "<template>\n\t<view class=\"h\"> \n\t    <view class=\"pro\" @click=\"jump_pro()\">\n\t\t  <view class='pro_01'><img src='../../../im"
  },
  {
    "path": "前端商城/components/qy/none.vue",
    "chars": 822,
    "preview": "<template>\n\t<view class=\"no\">\n\t\t<view class=\"none\">\n\t\t\t<img src=\"@/imgs/none.png\"></img>\n\t\t\t<view>暂无数据</view>\n\t\t\t<view c"
  },
  {
    "path": "前端商城/components/qy/shopProduct.vue",
    "chars": 2187,
    "preview": "<template>\n\t<div class=\"shop\">\n\t\t<view class=\"shop_01\" @click=\"jump\">\n\t\t\t<view class=\"shop_01_l\">\n\t\t\t\t<img src=\"@/imgs/1"
  },
  {
    "path": "前端商城/components/qy/xianshi.vue",
    "chars": 576,
    "preview": "<template>\n    <view class=\"xianshi\"> \n       <view class=\"xs_l\">{{title}}</view>\n\t   <view class=\"xs_r\">¥{{price}}</vie"
  },
  {
    "path": "前端商城/components/qy/xieyi.vue",
    "chars": 1915,
    "preview": "<template>\n\t<view class=\"tan\" v-if=\"xy\">\n\t\t<div class=\"black\" @click=\"xy=false\">\n\t\t\t<div class=\"container\"></div>\n\t\t</di"
  },
  {
    "path": "前端商城/components/rate/rate.vue",
    "chars": 4310,
    "preview": "<template>\n\t<view class=\"tui-rate-class tui-rate-box\" @touchmove=\"touchMove\">\n\t\t<block v-for=\"(item,index) in quantity\" "
  },
  {
    "path": "前端商城/components/share.vue",
    "chars": 3810,
    "preview": "<template>\n\t<view v-if=\"show\" class=\"mask\" @click=\"toggleMask\" @touchmove.stop.prevent=\"stopPrevent\"\n\t\t:style=\"{backgrou"
  },
  {
    "path": "前端商城/components/tag/tag.vue",
    "chars": 5437,
    "preview": "<template>\n\t<view class=\"tui-tag-class\" :class=\"[size?'tui-tag-'+size:'tui-tag',getClassName(shape,plain),getTypeClass(t"
  },
  {
    "path": "前端商城/components/top-dropdown/top-dropdown.vue",
    "chars": 1725,
    "preview": "<template>\n\t<view>\n\t\t<view class=\"tui-top-dropdown tui-dropdown-box\" :class=\"[show?'tui-dropdown-show':'']\" :style=\"{hei"
  },
  {
    "path": "前端商城/components/tui-tabs/tui-tabs.vue",
    "chars": 4233,
    "preview": "<template>\n\t<view class=\"tui-tabs-view\" :class=\"[isFixed?'tui-tabs-fixed':'tui-tabs-relative',unlined?'tui-unlined':'']\""
  },
  {
    "path": "前端商城/components/tui-upload/tui-upload.vue",
    "chars": 9341,
    "preview": "<template>\n\t<view class=\"tui-container\">\n\t\t<view class=\"tui-upload-box\">\n\t\t\t<view class=\"tui-image-item\" v-for=\"(item,in"
  },
  {
    "path": "前端商城/components/uni/uni-badge/uni-badge.vue",
    "chars": 1745,
    "preview": "<template>\n\t<text v-if=\"text\" :class=\"inverted ? 'uni-badge-' + type + ' uni-badge--' + size + ' uni-badge-inverted' : '"
  },
  {
    "path": "前端商城/components/uni/uni-countdown/uni-countdown.vue",
    "chars": 3710,
    "preview": "<template>\n\t<view class=\"uni-countdown\">\n\t\t<view v-if=\"showDay\" :style=\"{borderColor:borderColor, color:color, backgroun"
  },
  {
    "path": "前端商城/components/uni/uni-icon/uni-icon.vue",
    "chars": 46483,
    "preview": "<template>\n\t<view :class=\"'uni-icon-' + type\" :style=\"{ color: color, 'font-size': size + 'px' }\" class=\"uni-icon\" @clic"
  },
  {
    "path": "前端商城/components/uni/uni-icons/uni-icons.vue",
    "chars": 46493,
    "preview": "<template>\n\t<view :class=\"'uni-icon-' + type\" :style=\"{ color: color, 'font-size': size + 'px' }\" class=\"uni-icon\" @clic"
  },
  {
    "path": "前端商城/components/uni/uni-list/uni-list.vue",
    "chars": 705,
    "preview": "<template>\n\t<view class=\"uni-list\">\n\t\t<slot />\n\t</view>\n</template>\n<script>\n\texport default {\n\t\tname: 'UniList'\n\t}\n</sc"
  },
  {
    "path": "前端商城/components/uni/uni-list-item/uni-list-item.vue",
    "chars": 4020,
    "preview": "<template>\n\t<view :class=\"disabled ? 'uni-list-item--disabled' : ''\" :hover-class=\"disabled || showSwitch ? '' : 'uni-li"
  },
  {
    "path": "前端商城/components/uni/uni-load-more/uni-load-more.vue",
    "chars": 3417,
    "preview": "<template>\n\t<view class=\"uni-load-more\">\n\t\t<view class=\"uni-load-more__img\" v-show=\"status === 'loading' && showIcon\">\n\t"
  },
  {
    "path": "前端商城/components/uni/uni-notice-bar/uni-notice-bar.vue",
    "chars": 10067,
    "preview": "<template>\n\t<view v-if=\"show\" class=\"uni-noticebar\" :style=\"{ backgroundColor: backgroundColor }\" @click=\"onClick\">\n\t\t<!"
  },
  {
    "path": "前端商城/components/uni/uni-popup/uni-popup.vue",
    "chars": 3225,
    "preview": "<template>\n\t<view>\n\t\t<view v-show=\"show\" :style=\"{ top: offsetTop + 'px' }\" class=\"uni-mask\" @click=\"hide\" @touchmove.st"
  },
  {
    "path": "前端商城/components/uni/uni-rate/uni-rate.vue",
    "chars": 2449,
    "preview": "<template>\n\t<view class=\"uni-rate\">\n\t\t<view v-for=\"(star, index) in stars\" :key=\"index\" :style=\"{ marginLeft: margin + '"
  },
  {
    "path": "前端商城/components/uni/uni-rate/uni-rates.vue",
    "chars": 2917,
    "preview": "<template>\n\t<view class=\"uni-rate\">\n\t\t<view :key=\"index\" :style=\"{ marginLeft: margin + 'px' }\" @click=\"_onClick(index)\""
  },
  {
    "path": "前端商城/components/uni/uni-segmented-control/uni-segmented-control.vue",
    "chars": 2161,
    "preview": "<template>\n\t<view :class=\"{ text: styleType === 'text' }\" :style=\"{ borderColor: styleType === 'text' ? '' : activeColor"
  },
  {
    "path": "前端商城/components/uni/uni-steps/uni-steps.vue",
    "chars": 4658,
    "preview": "<template>\n\t<view class=\"uni-steps\">\n\t\t<view :class=\"'uni-steps-' + direction\" class=\"uni-steps-items\">\n\t\t\t<view v-for=\""
  },
  {
    "path": "前端商城/components/uni/uni-swipe-action/uni-swipe-action.vue",
    "chars": 5743,
    "preview": "<template>\n\t<view class=\"uni-swipe-action\">\n\t\t<view :class=\"{'uni-swipe-action--show':isShowBtn}\" :style=\"{'transform':t"
  },
  {
    "path": "前端商城/components/uni-icons/icons.js",
    "chars": 3209,
    "preview": "export default {\n\t\"pulldown\": \"\\ue588\",\n\t\"refreshempty\": \"\\ue461\",\n\t\"back\": \"\\ue471\",\n\t\"forward\": \"\\ue470\",\n\t\"more\": \"\\u"
  },
  {
    "path": "前端商城/components/uni-icons/uni-icons.vue",
    "chars": 72326,
    "preview": "<template>\n\t<text :style=\"{ color: color, 'font-size': size + 'px' }\" class=\"uni-icons\" @click=\"_onClick\">{{icons[type]}"
  },
  {
    "path": "前端商城/components/uni-number-box.vue",
    "chars": 3691,
    "preview": "<template>\n\t<view class=\"uni-numbox\">\n\t\t<view class=\"uni-numbox-minus\" \n\t\t\t@click=\"_calcValue('subtract')\"\n\t\t>\n\t\t\t<text "
  },
  {
    "path": "前端商城/components/w-picker/city-data/area.js",
    "chars": 209089,
    "preview": "/* eslint-disable */\nvar areaData = [\n  [\n    [{\n        \"label\": \"东城区\",\n        \"value\": \"110101\"\n      },\n      {\n    "
  },
  {
    "path": "前端商城/components/w-picker/city-data/city.js",
    "chars": 21280,
    "preview": "/* eslint-disable */\nvar cityData = [\n  [{\n    \"label\": \"市辖区\",\n    \"value\": \"1101\"\n  }],\n  [{\n    \"label\": \"市辖区\",\n    \"v"
  },
  {
    "path": "前端商城/components/w-picker/city-data/province.js",
    "chars": 1683,
    "preview": "/* eslint-disable */\nvar provinceData = [{\n    \"label\": \"北京市\",\n    \"value\": \"11\"\n  },\n  {\n    \"label\": \"天津市\",\n    \"value"
  },
  {
    "path": "前端商城/components/w-picker/w-picker.js",
    "chars": 11506,
    "preview": "const forMatNum=(num)=>{\n\treturn num<10?'0'+num:num+'';\n}\nconst initPicker={\n\t//日期\n\tdate:{\n\t\tinit(start,end,mode=\"date\","
  },
  {
    "path": "前端商城/components/w-picker/w-picker.vue",
    "chars": 27105,
    "preview": "<template>\n\t<view class=\"w-picker\">\n\t\t<view class=\"mask\" :class=\"{'show':showPicker}\" @tap=\"maskTap\" @touchmove.stop.pre"
  },
  {
    "path": "前端商城/components/wx_auth/app_auth.vue",
    "chars": 2292,
    "preview": "<template>\n\t<view class=\"auth\">\n\t\t<view class=\"login-box\" v-if=\"login\">\n\t\t\t<view class=\"t1\">授权登陆</view>\n\t\t\t<view class=\""
  },
  {
    "path": "前端商城/components/wx_auth/xcx_auth.vue",
    "chars": 2622,
    "preview": "<template>\n\t<view class=\"auth\">  \n\t\t<view class=\"login-box\" v-if=\"login\">\n\t\t\t<view class=\"t1\">授权登陆</view>\n\t\t\t<view class"
  },
  {
    "path": "前端商城/main.js",
    "chars": 942,
    "preview": "import Vue from 'vue'\nimport App from './App' \nimport http from './common/axios.js'\nimport {Api_url} from './common/conf"
  },
  {
    "path": "前端商城/manifest.json",
    "chars": 4658,
    "preview": "{\n    \"name\" : \"如花\",\n    \"appid\" : \"__UNI__71479C3\",\n    \"description\" : \"\",\n    \"versionName\" : \"1.0.0\",\n    \"versionCo"
  },
  {
    "path": "前端商城/means/coupon/coupon.vue",
    "chars": 4447,
    "preview": "<template>\n\t<view class=\"coupon\">\n\t\t<view class='po'>\n\t\t\t<None v-if=\"list_empty\"></None>\n\t\t\t<view v-for=\"(item,index) of"
  },
  {
    "path": "前端商城/means/discount/discount.vue",
    "chars": 2963,
    "preview": "<template>\n\t<view class=\"discount\">\n\t\t<None v-if=\"list_empty\" guang=\"去逛逛\"></None>\n\t\t<view class='concent' v-else>\n\t\t\t<vi"
  },
  {
    "path": "前端商城/means/notice/notice.vue",
    "chars": 2863,
    "preview": "<template>\n\t<view>\n\t\t<None v-if=\"list_empty\"></None>\n\t\t<view class=\"notice-item\" v-for=\"item of event_list\" v-else>\n\t\t\t<"
  },
  {
    "path": "前端商城/means/onebuy/onebuy.vue",
    "chars": 3374,
    "preview": "<template>\n\t<None v-if=\"list_empty\" guang=\"去逛逛\"></None>\n\t<view v-else >\n\t\t<view class=\"onebuy\" v-if=\"is_con\">\n\t\t\t<view c"
  },
  {
    "path": "前端商城/means/pin/pin.vue",
    "chars": 5621,
    "preview": "<template>\n\t<view class=\"pin\">\n\t\t<view class=\"navbar\">\n\t\t\t<view v-for=\"(item, index) in navList\" :key=\"index\" class=\"nav"
  },
  {
    "path": "前端商城/means/play/activity/draw.vue",
    "chars": 8537,
    "preview": "<template>\n\t<view class=\"conbox\">\n\t\t<view class=\"container\">\n\t\t\t<!-- 背景 -->\n\t\t\t<image :src=\"web_url+'/static/web/dzp/bg."
  },
  {
    "path": "前端商城/means/play/activity/draw加密.vue",
    "chars": 9723,
    "preview": "<template>\n\t<view class=\"conbox\">\n\t\t<view class=\"container\">\n\t\t\t<!-- 背景 -->\n\t\t\t<image :src=\"web_url+'/static/web/dzp/bg."
  },
  {
    "path": "前端商城/means/play/sherpa-jiugongge/sherpa-jiugongge.vue",
    "chars": 9945,
    "preview": "<template>\n\t<view class=\"conbox\" v-if=\"show\">\n\t\t<image class=\"cont\"  :src=\"web_url+'/static/web/jgg/bg.png'\" mode=\"\"></i"
  },
  {
    "path": "前端商城/means/play/sherpa-jiugongge/sherpa-jiugongge加密.vue",
    "chars": 11089,
    "preview": "<template>\n\t<view class=\"conbox\" v-if=\"show\">\n\t\t<image class=\"cont\"  :src=\"web_url+'/static/web/jgg/bg.png'\" mode=\"\"></i"
  },
  {
    "path": "前端商城/means/play/watering/watering.vue",
    "chars": 11537,
    "preview": "<template>\n\t<view class=\"page\">\n\t\t<view class=\"canvas\">\n\n\t\t\t<!-- <view class=\"liwu\" @click=\"liwu\" hover-class=\"none\"></v"
  },
  {
    "path": "前端商城/means/play/watering/watering加密.vue",
    "chars": 12963,
    "preview": "<template>\n\t<view class=\"page\">\n\t\t<view class=\"canvas\">\n\t\t\t\n\t\t\t\t<!-- <view class=\"liwu\" @click=\"liwu\" hover-class=\"none\""
  },
  {
    "path": "前端商城/means/qiandao/qiandao.vue",
    "chars": 7013,
    "preview": "<template>\n\t<view class=\"three\">\n\t\t<view class=\"top\" :style=\"'width: 100%;height: 200px;'\">\n\t\t\t<view class=\"head\"> \n\t\t\t\t"
  },
  {
    "path": "前端商城/model/category.js",
    "chars": 448,
    "preview": "//  \nimport http from '../common/axios.js'\n\nexport default{\n\t// All\n\tgetCategoryAll(){\n\t\tlet url='category/all_category'"
  },
  {
    "path": "前端商城/model/order.js",
    "chars": 1135,
    "preview": "//  订单请求\nimport http from '../common/axios.js'\n\nexport default{\n\t// \n\tpostOrderAll(){\n\t\tlet url='order/user/all_order'\n\t"
  },
  {
    "path": "前端商城/model/product.js",
    "chars": 3514,
    "preview": "// 商品请求\nimport http from '../common/axios.js'\n// 所有商品\nfunction getProList(){ \n\tlet url='product/get_recent'\n\treturn http"
  },
  {
    "path": "前端商城/pages/address/address.vue",
    "chars": 4863,
    "preview": "<template>\n\t<view class=\"content b-t\">\n\t\t<None v-if=\"list_empty\"></None>\n\t\t<view class=\"list b-b\" v-for=\"(item, index) i"
  },
  {
    "path": "前端商城/pages/address/addressManage.vue",
    "chars": 4618,
    "preview": "<template>\n\t<view class=\"content\">\n\t\t<view class=\"row b-b\">\n\t\t\t<text class=\"tit\">联系人</text>\n\t\t\t<input class=\"input\" type"
  },
  {
    "path": "前端商城/pages/article/article.vue",
    "chars": 2929,
    "preview": "<template>\n\t<view class=\"article\">\n\t\t<view class=\"tit\">{{art.title}}</view>\n\t\t<block v-if=\"is_form == 0\">\n\t\t\t\n\t\t\t<view c"
  },
  {
    "path": "前端商城/pages/cart/cart.vue",
    "chars": 7730,
    "preview": "<template>\n\t<view class=\"cart\">\n\t\t<!-- 列表 -->\n\t\t<view class=\"cart-list\">\n\t\t\t<block v-for=\"(item, k) in cartList\" :key=\"i"
  },
  {
    "path": "前端商城/pages/cartnone/cartnone.vue",
    "chars": 5837,
    "preview": "<template>\n\t<view class=\"cartnone\">\n\t\t<view class=\"nimg\"><img src=\"@/imgs/gou.png\"></img></view>\n\t\t<view class=\"tiao\">购物"
  },
  {
    "path": "前端商城/pages/category/category.1.vue",
    "chars": 7728,
    "preview": "<template>\n\t<view class=\"container\">\n\t\t<scroll-view scroll-y scroll-with-animation class=\"tab-view\" :scroll-top=\"scrollT"
  },
  {
    "path": "前端商城/pages/category/category.vue",
    "chars": 5614,
    "preview": "<template>\n\t<view class=\"content\">\n\t\t<scroll-view scroll-y class=\"left-aside\">\n\t\t\t<view v-for=\"item in flist\" :key=\"item"
  },
  {
    "path": "前端商城/pages/cms/coupon/coupon.vue",
    "chars": 13754,
    "preview": "<template>\n\t<view class=\"product\">\n\t\t<view class=\"top\">\n\t\t</view>\n\t\t<view class=\"cu-form-group\">\n\t\t\t<view class=\"title\">"
  },
  {
    "path": "前端商城/pages/cms/coupon_VIP/coupon_VIP.vue",
    "chars": 8955,
    "preview": "<template>\n\t<view class=\"product\">\n\t\t<view class=\"top\">\n\t\t</view>\n\t\t<view class=\"biao\">\n\t\t\t<view class=\"biao_01\">\n\t\t\t\t<v"
  },
  {
    "path": "前端商城/pages/cms/couponlist/couponlist.vue",
    "chars": 6895,
    "preview": "<template>\n\t<view class=\"coupon\">\n\t\t<view class='po'>\n\t\t\t<!-- <view class='tab'>\n\t\t\t\t<view :class=\"c_index==0?'xz':'bb' "
  },
  {
    "path": "前端商城/pages/cms/couponxuan/couponxuan.vue",
    "chars": 2035,
    "preview": "<template>\n\t<view class=\"xuan\">\n\t\t<view class=\"product\" v-for=\"(item,index) of my_product\">\n\t\t\t<view class=\"pro_01\"><uni"
  },
  {
    "path": "前端商城/pages/cms/edit/pro_manage/pro_manage.vue",
    "chars": 5387,
    "preview": "<template>\n\t<view class=\"manage\">\n\t\t<uni-segmented-control :current=\"current\" :values=\"items\" @clickItem=\"onClickItem\" s"
  },
  {
    "path": "前端商城/pages/cms/edit/product/addgroup/addgroup.vue",
    "chars": 5828,
    "preview": "<template>\n\t<view class=\"product\">\n\n\t\t<view class=\"top\">\n\t\t</view>\n\t\t<view class=\"biao\" style=\"display: flex;justify-con"
  },
  {
    "path": "前端商城/pages/cms/edit/product/product-图片上传ID未解决.vue",
    "chars": 10662,
    "preview": "<template>\n\t<view class=\"product\"> \n\t\t<choose :count=\"count\" :imgList=\"goods.banner_imgs\" @changes=\"fileChange\"></choose"
  },
  {
    "path": "前端商城/pages/cms/edit/product/product.vue",
    "chars": 21991,
    "preview": "<template>\n\t<view class=\"product\">\n\t\t<view class=\"pic\">\n\t\t\t商品幻灯图(可拖动)\n\t\t\t<view class=\"tui-box-upload\">\n\t\t\t\t<tui-upload :"
  },
  {
    "path": "前端商城/pages/cms/edit/shop/shop.vue",
    "chars": 5702,
    "preview": "<template>\n\t<view class=\"shop\">\n\t\t<view class=\"biao\">\n\t\t\t<view class=\"cu-form-group \">\n\t\t\t\t<view class=\"title\">店铺名称:</vi"
  },
  {
    "path": "前端商城/pages/cms/edit/shop_login/shop_login.vue",
    "chars": 1865,
    "preview": "<template>\n\t<view class=\"shop_login\" :style=\"'min-height:'+ body_height\">\n\t\t<view class=\"shop_tit\">资质认证123</view>\n\t\t<vie"
  },
  {
    "path": "前端商城/pages/cms/edit/yanzheng/yanzheng.vue",
    "chars": 2777,
    "preview": "<template>\n\t<view class=\"yzm\">\n\t\t<view>\n\t\t\t<view class=\"head\">\n\t\t\t\t<view class=\"yzms\">\n\t\t\t\t\t<input placeholder-style=\"co"
  },
  {
    "path": "前端商城/pages/cms/edit/yfmoban/yfmoban.vue",
    "chars": 2006,
    "preview": "<template>\n\t<view class=\"yfmoban\">\n\t\t<view class=\"list\">\n\t\t\t<view class=\"list_l\">模板名称</view>\n\t\t\t<view class=\"list_r\">{{y"
  },
  {
    "path": "前端商城/pages/cms/edit/yfset/yfset.vue",
    "chars": 601,
    "preview": "<template>\n\t<view class=\"yfset\">\n\t\t<view class=\"cu-form-group margin-top\">\n\t\t\t<view class=\"title\">金额(元)</view>\n\t\t\t<view "
  },
  {
    "path": "前端商城/pages/cms/edit/yunfei/yunfei.vue",
    "chars": 1948,
    "preview": "<template>\n\t<view class=\"yunfei\">\n\t\t<view class=\"con\">\n\t\t\t<view class=\"set\">\n\t\t\t\t<view class=\"set_l\">\n\t\t\t\t\t<radio :class"
  },
  {
    "path": "前端商城/pages/cms/index/index.vue",
    "chars": 6262,
    "preview": "<template>\n\t<view class=\"index\">\n\t\t<view class=\"head\">\n\t\t\t<view class=\"tit\">{{shop.shop_name}}</view>\n\t\t\t<view class=\"ji"
  },
  {
    "path": "前端商城/pages/cms/kedetail/kedetail.vue",
    "chars": 2729,
    "preview": "<template>\n\t<view class=\"kedetail\">\n\t\t<view class=\"head\">\n\t\t\t<view class=\"head_l\">\n\t\t\t\t<img src=\"@/imgs/8.jpg\"></img>\n\t\t"
  },
  {
    "path": "前端商城/pages/cms/kehu/kehu.vue",
    "chars": 3481,
    "preview": "<template>\n\t<view class=\"kehu\">\n\t\t<view class=\"search\">\n\t\t\t<view class='sear_01'>\n\t\t\t\t<uni-icon type=\"search\" size=\"20\" "
  },
  {
    "path": "前端商城/pages/cms/kucun/kucun.vue",
    "chars": 3990,
    "preview": "<template>\n\t<view class=\"kucun\">\n\t\t<view class=\"search\">搜索商品</view>\n\t\t<view class=\"kc\">\n\t\t\t<view class=\"kc_l\">全网库存</view"
  },
  {
    "path": "前端商城/pages/cms/login/login-old.vue",
    "chars": 2837,
    "preview": "<template>\n\t<view class=\"login\">\n\t\t<view class=\"head\">登录</view>\n\t\t<view class=\"tou\"><img src=\"@/imgs/user.png\"/></img></"
  },
  {
    "path": "前端商城/pages/cms/login/login.vue",
    "chars": 5239,
    "preview": "<template>\n\t<view class=\"login\">\n\t\t<view class=\"head\"> </view>\n\t\t<view class=\"tou\"><img src=\"@/imgs/logo.png\"/></img></v"
  },
  {
    "path": "前端商城/pages/cms/notice/notice.vue",
    "chars": 1328,
    "preview": "<template>\n\t<view class=\"notice\">\n\t\t<view class=\"head\">\n\t\t\t<view class=\"head_l\">通知公告</view> \n\t\t</view>\n\t  <block v-for=\""
  },
  {
    "path": "前端商城/pages/cms/order/detail/detail.vue",
    "chars": 4778,
    "preview": "<template>\n\t<view class=\"r_detail\">\n\t\t<!-- <view class=\"head\">\n\t\t\t<view class=\"head_l\">\n\t\t\t\t<view class=\"head_l_01\">配送中."
  },
  {
    "path": "前端商城/pages/cms/order/detail.vue",
    "chars": 2368,
    "preview": "<template>\n\t<view class=\"detail\">\n\t\t<view class=\"tit\">订单编号:{{order.order_num}}</view>\n\t\t<view class='tag-e'>\n\t\t\t<view cl"
  },
  {
    "path": "前端商城/pages/cms/order/order.vue",
    "chars": 11895,
    "preview": "<template>\n\t<view class=\"content\">\n\t\t<view class=\"navbar\">\n\t\t\t<view v-for=\"(item, index) in navList\" :key=\"index\" class="
  },
  {
    "path": "前端商城/pages/cms/order/send/send.vue",
    "chars": 4811,
    "preview": "<template>\n\t<view>\n\n\t\t<block>\n\t\t\t<view class=\"biao\">\n\t\t\t\t<view class=\"biao_01\" @click=\"show = true\">\n\t\t\t\t\t<view class=\"b"
  },
  {
    "path": "前端商城/pages/cms/order/yz_order.vue",
    "chars": 61,
    "preview": "<template>\n</template>\n\n<script>\n</script>\n\n<style>\n</style>\n"
  },
  {
    "path": "前端商城/pages/cms/tag_manage/tag_manage.vue",
    "chars": 3889,
    "preview": "<template>\n\t<view>\n\t\t<block v-if=\"tag_show == 1\">\n\t\t\t<view class=\"example-title\">标签管理</view>\n\t\t\t<uni-list>\n\t\t\t\t<block v-"
  },
  {
    "path": "前端商城/pages/cms/user/agent/agent.vue",
    "chars": 1305,
    "preview": "<template>\n\t<view class=\"agent\">\n\t\t<view class=\"head\">\n\t\t\t共 <span>10000</span> 人\n\t\t</view>\n\t\t<view class=\"t_tou\">\n\t\t\t<vi"
  },
  {
    "path": "前端商城/pages/cms/user/buy_vip.vue",
    "chars": 1515,
    "preview": "<template>\n\t \n\t<view class=\"head\">\n\t\t<view class=\"head_l\">\n\t\t\t<view class=\"head_l_01\"><span><uni-icon type=\"star-filled\""
  },
  {
    "path": "前端商城/pages/cms/user/fenxiao/addcard/addcard.vue",
    "chars": 3850,
    "preview": "<template>\n\t<view class=\"shop_login\" :style=\"'height:'+body_height+'px'\">\n\t\t<view class=\"shop_tit\" v-if=\"!edit\">添加银行卡</v"
  },
  {
    "path": "前端商城/pages/cms/user/fenxiao/bankcard/bankcard.vue",
    "chars": 1688,
    "preview": "<template>\n\t<view class=\"bankcard\">\n\t\t<view class=\"card\">\n\t\t\t<view class=\"card_l\"><img :src=\"require('@/imgs/icbc2.png')"
  },
  {
    "path": "前端商城/pages/cms/user/fenxiao/fenxiao.vue",
    "chars": 2988,
    "preview": "<template>\n\t<view class=\"retail\">\n\t\t<view class=\"head\">\n\t\t\t<view class=\"head_01\">\n\t\t\t\t<view class=\"head_01_l\">总收益(元)</vi"
  },
  {
    "path": "前端商城/pages/cms/user/fenxiao/success/success.vue",
    "chars": 3348,
    "preview": "<template>\n\t<view class=\"success\">\n\t\t<view class=\"s_tit\">\n\t\t\t提现申请成功<span>完成</span>\n\t\t</view>\n\t\t<view class=\"BH10\"></view"
  },
  {
    "path": "前端商城/pages/cms/user/fenxiao/tixian/tixian.vue",
    "chars": 5435,
    "preview": "<template>\n\t<view class=\"tixian\">\n\t\t<view class=\"one\">\n\t\t\t<view class=\"t_tit\">提现到</view> \n\t\t\t<view class=\"head_btn\" @cli"
  },
  {
    "path": "前端商城/pages/cms/user/mingxi/mingxi.vue",
    "chars": 3007,
    "preview": "<template>\n\t<view class=\"mingxi\">\n\t<!-- \t<view class=\"head\">\n\t\t\t<view class=\"head_l\">\n\t\t\t\t<view :class=\"num==0?'ling':'h"
  },
  {
    "path": "前端商城/pages/cms/user/tongji/tongji.vue",
    "chars": 2849,
    "preview": "<template>\n\t<view class=\"tongji\">\n\t\t<view class=\"t_tit\">经营数据</view>\n\t\t<view class=\"t_time\">统计时间截止9月2号</view>\n\t\t<view cla"
  },
  {
    "path": "前端商城/pages/cms/user/user.vue",
    "chars": 3481,
    "preview": "<template>\n\t<view class=\"user\">\n\t\t<view class=\"cu-list menu\" :class=\"[menuBorder?'sm-border':'',menuCard?               "
  },
  {
    "path": "前端商城/pages/detail/detail.vue",
    "chars": 3791,
    "preview": "<template>\n\t<view class=\"order_detail\">\n\t\t<view class=\"tit\">订单编号:{{order.order_num}}</view>\n\t\t<view class='tag-e'>\n\t\t\t<v"
  },
  {
    "path": "前端商城/pages/evaluate/evaluate.vue",
    "chars": 5260,
    "preview": "<template>\n\t<view class=\"evaluate\">\n\t\t<!-- <view style=\"position: absolute;top:45%;left:45%;\"><van-loading size=\"50px\" v"
  },
  {
    "path": "前端商城/pages/extend-view/mall/mall.vue",
    "chars": 19232,
    "preview": "<template>\n\t<view class=\"container\">\n\n\t\t<!--header-->\n\t\t<view class=\"tui-header\">\n\t\t\t<view class=\"tui-category\" hover-cl"
  },
  {
    "path": "前端商城/pages/extend-view/news-search/news-search.vue",
    "chars": 5152,
    "preview": "<template>\n\t<view class=\"container\">\n\t\t<view class=\"tui-searchbox\">\n\t\t\t<view class=\"tui-search-input\">\n\t\t\t\t<!-- #ifdef A"
  },
  {
    "path": "前端商城/pages/extend-view/productDetail/components/activity.vue",
    "chars": 6166,
    "preview": "<template>\n\t<view class=\"root\">\n\t\t<!-- 邀新拼团 -->\n\t\t<view class=\"yxpt\" v-if=\"pro_type == 'new_pt'\">\n\t\t\t<view class=\"yxpt_l"
  },
  {
    "path": "前端商城/pages/extend-view/productDetail/components/bottom.vue",
    "chars": 4274,
    "preview": "<template>\n\t\t<view class=\"tui-operation\">\n\t\t\t<view class=\"tui-operation-left tui-col-5 \">\n\t\t\t\t<view class=\"tui-operation"
  },
  {
    "path": "前端商城/pages/extend-view/productDetail/components/choose_sku.vue",
    "chars": 7072,
    "preview": "<template>\n\t<view>\n\t\t<tui-bottom-popup :show=\"popupShow\" @close=\"hidePopup\">\n\t\t\t<view class=\"tui-popup-box\">\n\t\t\t\t<view c"
  },
  {
    "path": "前端商城/pages/extend-view/productDetail/components/coupon.vue",
    "chars": 3377,
    "preview": "<template>\n\t<view class=\"mask\">\n\t\t<view class=\"mask-content\">\n\t\t\t<!-- 优惠券页面,仿mt -->\n\t\t\t<view class=\"coupon-item\" v-for=\""
  },
  {
    "path": "前端商城/pages/extend-view/productDetail/components/get_coupon.vue",
    "chars": 1800,
    "preview": "<template>\n\t<view class=\"root\">\n\t\t<view class=\"tui-discount-box tui-radius-all tui-mtop\" v-if=\"coupon_list.length > 0\">\n"
  },
  {
    "path": "前端商城/pages/extend-view/productDetail/components/share.vue",
    "chars": 3534,
    "preview": "<template>\n\t<view class=\"\">\n\t\t<view class=\"sha_tan\" v-if=\"is_share\">\n\t\t\t<view class=\"mask\" @click=\"cancel_share\"></view>"
  },
  {
    "path": "前端商城/pages/extend-view/productDetail/productDetail++.vue",
    "chars": 57173,
    "preview": "<template>\n\t<view class=\"container\">\n\t\t<!--header-->\n\t\t<view class=\"tui-header-box\" :style=\"{height:height+'px',backgrou"
  },
  {
    "path": "前端商城/pages/extend-view/productDetail/productDetail.vue",
    "chars": 49288,
    "preview": "<template>\n\t<view class=\"container\">\n\t\t<!--header-->\n\t\t<view class=\"tui-header-box\" :style=\"{height:height+'px',backgrou"
  },
  {
    "path": "前端商城/pages/extend-view/productList/productList.vue",
    "chars": 27123,
    "preview": "<template>\n\t<view class=\"container\">\n\n\t\t<!--header-->\n\t\t<view class=\"tui-header-box\">\n\t\t\t<view class=\"tui-header\" :style"
  },
  {
    "path": "前端商城/pages/form/form.vue",
    "chars": 7511,
    "preview": "<template>\n\t<view class=\"form\">\n\t\t<view v-for=\"(item,index) of data\" :key=\"index\">\n\t\t\t<view class=\"biao\" v-if=\"item.type"
  },
  {
    "path": "前端商城/pages/index/index.vue",
    "chars": 24090,
    "preview": "<template>\n\t<view class=\"container\">\n\n\t\t<!--header-->\n\n\t\t<view class=\"tui-header\">\n\t\t\t<view class=\"notice\" v-if=\"gundong"
  },
  {
    "path": "前端商城/pages/invite/invite.vue",
    "chars": 4339,
    "preview": "<template>\n\t<view class=\"invite\">\n\t\t<view class=\"head\">\n\t\t\t<view class=\"top\">\n\t\t\t\t<view class=\"mess\">\n\t\t\t\t\t<view class=\""
  },
  {
    "path": "前端商城/pages/invoices/invoices.vue",
    "chars": 2971,
    "preview": "<template>\n\t<view class=\"invoices\">\n\t\t<view class=\"title\">增值税电子普通发票</view>\n\t\t<view class=\"ttlx\">\n\t\t\t<view class=\"ttlx-l\""
  },
  {
    "path": "前端商城/pages/list/list.vue",
    "chars": 1222,
    "preview": "<template>\n\t<view>\n\t\t<!-- <None v-if=\"list_empty\"></None> -->\n\t\t<view v-for=\"item of list\" :key=\"item.id\">\n\t\t\t<view clas"
  },
  {
    "path": "前端商城/pages/login/login.vue",
    "chars": 2138,
    "preview": "<template>\n\t<view class=\"login\">\n\t\t<view class=\"head\">\n\t\t\t<view class=\"head-img\"><img src=\"@/imgs/8.jpg\"></img></view>\n\t"
  },
  {
    "path": "前端商城/pages/login/loginA/loginA.vue",
    "chars": 1857,
    "preview": "<template>\n\t<view class=\"loginA\">\n\t\t<view class=\"head\">\n\t\t\t<img src=\"@/imgs/detail.jpg\"></img>\n\t\t</view>\n\t\t<view class=\""
  },
  {
    "path": "前端商城/pages/login/loginB/loginB.vue",
    "chars": 3549,
    "preview": "<template>\n\t<view class=\"loginB\">\n\n\t\t<view class='name'>\n\t\t\t<input type=\"number\" v-model=\"phone_number\" placeholder=\"请输入"
  },
  {
    "path": "前端商城/pages/order/components/buy_data.vue",
    "chars": 2328,
    "preview": "<template>\n\t<view class=\"\">\n\t\t<view class=\"goods-section\">\n\t\t\t<!-- <view class=\"g-header b-b\"> -->\n\t\t\t\t<!-- <image class"
  },
  {
    "path": "前端商城/pages/order/components/coupon.vue",
    "chars": 4082,
    "preview": "<template>\n\t<view class=\"\">\n\t\t<view class=\"mask\" :class=\"maskState===0 ? 'none' : maskState===1 ? 'show' : ''\" @click=\"t"
  },
  {
    "path": "前端商城/pages/order/components/drive_type.vue",
    "chars": 1535,
    "preview": "<template>\n\t<view class=\"\">\n\t\t<view class=\"uni-list\">\n\t\t\t<radio-group @change=\"radioChange\" >\n\t\t\t\t<label class=\"uni-list"
  },
  {
    "path": "前端商城/pages/order/components/group_buy.vue",
    "chars": 2488,
    "preview": "<template>\n\t<view class=\"\">\n\t\t<!-- 拼团单 -->\n\t\t<view class=\"yt-list\" v-if=\"is_pt == 1\">\n\t\t\t<view class=\"jr\">\n\t\t\t\t<view cla"
  },
  {
    "path": "前端商城/pages/order/components/receive_address.vue",
    "chars": 1504,
    "preview": "<template>\n\t<view class=\"\">\n\t\t<navigator url=\"/pages/address/address?source=1\" class=\"address-section\">\n\t\t\t<view class=\""
  },
  {
    "path": "前端商城/pages/order/createOrder.vue",
    "chars": 34871,
    "preview": "<template>\n\t<view>\n\t\t<!-- 地址 -->\n\t\t<navigator url=\"/pages/address/address?source=1\" class=\"address-section\" v-if=\"addres"
  },
  {
    "path": "前端商城/pages/order/order.vue",
    "chars": 14357,
    "preview": "<template>\n\t<view class=\"content\">\n\t\t<view class=\"navbar\">\n\t\t\t<view v-for=\"(item, index) in navList\" :key=\"index\" class="
  },
  {
    "path": "前端商城/pages/order/pay.vue",
    "chars": 343,
    "preview": "<template>\n\t<view>\n\t\t<web-view :src=\"url\" v-if=\"url.length\"></web-view>\n\t</view>\n</template>\n\n<script>\n\texport default {"
  },
  {
    "path": "前端商城/pages/pindetail/pindetail.vue",
    "chars": 2221,
    "preview": "<template>\n\t<view class=\"pindetail\">\n\t\t<view class=\"head\">\n\t\t\t<img src=\"../../imgs/1.jpg\"></img>\n\t\t\t<view class=\"pin\">\n\t"
  },
  {
    "path": "前端商城/pages/public/login.vue",
    "chars": 4592,
    "preview": "<template>\n\t<view class=\"container\">\n\t\t<view class=\"left-bottom-sign\"></view>\n\t\t<view class=\"back-btn yticon icon-zuojia"
  },
  {
    "path": "前端商城/pages/set/set.vue",
    "chars": 5149,
    "preview": "<template>\n\t<view class=\"container\">\n\t\t<view class=\"list\">\n\t\t\t<view class=\"list_l\">个人资料</view>\n\t\t\t<view class=\"list_r\">\n"
  },
  {
    "path": "前端商城/pages/shop/shop.vue",
    "chars": 8798,
    "preview": "<template>\n\t<view class=\"shop\">\n<!-- \t\t<view class=\"head\">\n\t\t\t<view class='head_l'><img src='../../static/8.jpg'></img><"
  },
  {
    "path": "前端商城/pages/user/bind_phone/bind_phone.vue",
    "chars": 3474,
    "preview": "<template>\n\t<view class=\"loginB\">\n\n\t\t<view class='name'>\n\t\t\t<input type=\"number\" v-model=\"phone_number\" placeholder=\"请输入"
  },
  {
    "path": "前端商城/pages/user/cash/cash.vue",
    "chars": 3727,
    "preview": "<template>\n\t<view class=\"cash\">\n\t\t<view class=\"H10\"></view>\n\t\t<!-- <view class='txz'>提现至:</view> -->\n\t\t<view class=\"H10\""
  },
  {
    "path": "前端商城/pages/user/like/like.vue",
    "chars": 3877,
    "preview": "<template>\n\t<view class=\"like\">\n\t\t<!-- <uni-segmented-control :current=\"current\" :values=\"items\" @clickItem=\"onClickItem"
  },
  {
    "path": "前端商城/pages/user/mycoupon/mycoupon.vue",
    "chars": 5200,
    "preview": "<template>\n\t<view class=\"coupon\">\n\t\t<view class='po'>\n\t\t\t<view class='tab'>\n\t\t\t\t<view :class=\"c_index==0?'xz':'bb' \" @cl"
  },
  {
    "path": "前端商城/pages/user/myorder/drive/drive.vue",
    "chars": 3010,
    "preview": "<template>\n\t<view>\n\t\t<view class=\"example-title\">承运公司:{{kd_cpy}}</view>\n\t\t<view class=\"example-title\" v-if=\"kd_num\">快递单号"
  },
  {
    "path": "前端商城/pages/user/myorder/grade/grade.vue",
    "chars": 4693,
    "preview": "<template>\n\t<view class=\"grade\">\n\t\t<view class=\"product\">\n\t\t\t<view class=\"pic\"><img :src=\"getimg + order.imgs.url\"></img"
  },
  {
    "path": "前端商城/pages/user/myorder/myorder.vue",
    "chars": 22540,
    "preview": "<template>\n\t<view>\n\t\t<!-- 地址 -->\n\t\t<view url=\"/pages/address/address?source=1\" class=\"address-section\">\n\t\t\t<view class=\""
  },
  {
    "path": "前端商城/pages/user/myorder/refund/refund.vue",
    "chars": 3013,
    "preview": "<template>\n\t<view class=\"tui\">\n\t\t<!-- <view style=\"position: absolute;top:45%;left:45%;\"><van-loading size=\"50px\" v-if=\""
  },
  {
    "path": "前端商城/pages/user/record/record.vue",
    "chars": 2354,
    "preview": "<template>\n\t<view class=\"record\">\n\t\t<view class=\"head\">\n\t\t\t<view class=\"head_l\">\n\t\t\t\t<view class=\"head_l_1\">余额(元)</view>"
  },
  {
    "path": "前端商城/pages/user/set/set.vue",
    "chars": 1596,
    "preview": "<template>\n\t<view class=\"set\">\n\t\t\n\t\t\t<view class=\"list\" @click=\"jump_toset\">\n\t\t\t\t<view>个人资料</view>\n\t\t\t\t<view><tui-icon n"
  },
  {
    "path": "前端商城/pages/user/user.vue",
    "chars": 14609,
    "preview": "<template>\n\t<view class=\"container\">\n\t\t<view class=\"user-section\">\n\t\t\t<image class=\"bg\" src=\"/static/user-bg1.jpg\"></ima"
  },
  {
    "path": "前端商城/pages/wxauth.vue",
    "chars": 76,
    "preview": "<template>\n\t<view></view>\n</template>\n\n<script>\n</script>\n\n<style>\n</style>\n"
  },
  {
    "path": "前端商城/pages/xieyi/xieyi.vue",
    "chars": 581,
    "preview": "<template>\n\t<view class=\"xieyi\">\n\t\t<rich-text :nodes=\"content\"></rich-text>\n\t</view>\n</template>\n\n<script>\n\texport defau"
  },
  {
    "path": "前端商城/pages/zhibo/detail.vue",
    "chars": 593,
    "preview": "<template>\n\t<view class=\"zhibo-detail\">\n\t\t<live-player src=\"https://domain/pull_stream\" autoplay @statechange=\"statechan"
  },
  {
    "path": "前端商城/pages/zhibo/zhibo.vue",
    "chars": 11648,
    "preview": "<template>\n\t<view class=\"zhibo\">\n\t\t<view class=\"head\"></view>\n\t\t<view class=\"zbo\">\n\t\t\t<view class=\"zb\" @click=\"jump_deta"
  },
  {
    "path": "前端商城/pages.json",
    "chars": 12206,
    "preview": "{\n\t\"pages\": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages\n\t\t{\n\t\t\t\"path\": \"pages/index/index\",\n\t\t\t"
  },
  {
    "path": "前端商城/static/style/icon.css",
    "chars": 44144,
    "preview": "@font-face {\n    font-family: 'iconfont';\n    src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAGTkA"
  }
]

// ... and 279 more files (download for full content)

About this extraction

This page contains the full source code of the baok1592/ruhua_vue GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 479 files (10.4 MB), approximately 2.8M tokens, and a symbol index with 1910 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!