├── .gitignore ├── README.md ├── app ├── README.md ├── app.js ├── app.json ├── app.wxss ├── class │ ├── colorui.wxss │ ├── cui-icon.wxss │ └── icon.wxss ├── common │ ├── commonUtils.js │ └── request.js ├── dist │ ├── action-sheet │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── area │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── button │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── calendar │ │ ├── calendar.wxml │ │ ├── components │ │ │ ├── header │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── month │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ ├── index.wxs │ │ │ │ └── index.wxss │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── utils.d.ts │ │ ├── utils.js │ │ └── utils.wxs │ ├── card │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── cell-group │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── cell │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── checkbox-group │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── checkbox │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── circle │ │ ├── canvas.d.ts │ │ ├── canvas.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── col │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── collapse-item │ │ ├── animate.d.ts │ │ ├── animate.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── collapse │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── common │ │ ├── color.d.ts │ │ ├── color.js │ │ ├── component.d.ts │ │ ├── component.js │ │ ├── index.wxss │ │ ├── relation.d.ts │ │ ├── relation.js │ │ ├── style │ │ │ ├── clearfix.wxss │ │ │ ├── ellipsis.wxss │ │ │ ├── hairline.wxss │ │ │ ├── mixins │ │ │ │ ├── clearfix.wxss │ │ │ │ ├── ellipsis.wxss │ │ │ │ └── hairline.wxss │ │ │ ├── theme.wxss │ │ │ └── var.wxss │ │ ├── utils.d.ts │ │ ├── utils.js │ │ ├── validator.d.ts │ │ ├── validator.js │ │ ├── version.d.ts │ │ └── version.js │ ├── count-down │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── utils.d.ts │ │ └── utils.js │ ├── datetime-picker │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── definitions │ │ ├── index.d.ts │ │ └── index.js │ ├── dialog │ │ ├── dialog.d.ts │ │ ├── dialog.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── divider │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── dropdown-item │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── shared.d.ts │ │ └── shared.js │ ├── dropdown-menu │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── empty │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── field │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── input.wxml │ │ ├── props.d.ts │ │ ├── props.js │ │ └── textarea.wxml │ ├── goods-action-button │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── goods-action-icon │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── goods-action │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── grid-item │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── grid │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── icon │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── image │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── index-anchor │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── index-bar │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── info │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── loading │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── mixins │ │ ├── basic.d.ts │ │ ├── basic.js │ │ ├── button.d.ts │ │ ├── button.js │ │ ├── link.d.ts │ │ ├── link.js │ │ ├── open-type.d.ts │ │ ├── open-type.js │ │ ├── page-scroll.d.ts │ │ ├── page-scroll.js │ │ ├── touch.d.ts │ │ ├── touch.js │ │ ├── transition.d.ts │ │ └── transition.js │ ├── nav-bar │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── notice-bar │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── notify │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── notify.d.ts │ │ └── notify.js │ ├── overlay │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── panel │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── picker-column │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── picker │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── shared.d.ts │ │ ├── shared.js │ │ └── toolbar.wxml │ ├── popup │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── progress │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── project.config.json │ ├── radio-group │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── radio │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── rate │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── row │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── search │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── share-sheet │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── options.d.ts │ │ ├── options.js │ │ ├── options.json │ │ ├── options.wxml │ │ ├── options.wxs │ │ └── options.wxss │ ├── sidebar-item │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── sidebar │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── skeleton │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── slider │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── stepper │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── steps │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── sticky │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── submit-bar │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── swipe-cell │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── switch │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── tab │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── tabbar-item │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── tabbar │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── tabs │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── tag │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── toast │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── toast.d.ts │ │ └── toast.js │ ├── transition │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── tree-select │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ └── index.wxss │ ├── uploader │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxs │ │ ├── index.wxss │ │ ├── shared.d.ts │ │ ├── shared.js │ │ ├── utils.d.ts │ │ └── utils.js │ └── wxs │ │ ├── add-unit.wxs │ │ ├── array.wxs │ │ ├── bem.wxs │ │ ├── memoize.wxs │ │ ├── object.wxs │ │ ├── style.wxs │ │ └── utils.wxs ├── img │ ├── goodscar.png │ ├── goodscar1.png │ ├── home.png │ ├── home1.png │ ├── logo.png │ ├── message.png │ ├── message1.png │ ├── my.png │ └── my1.png ├── pages │ ├── address │ │ ├── add │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── edit │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ ├── auth │ │ ├── auth.js │ │ ├── auth.json │ │ ├── auth.wxml │ │ └── auth.wxss │ ├── coupon │ │ ├── add │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── detail │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── index │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ ├── goods │ │ ├── add │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── edit │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ ├── home │ │ ├── bulletin │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── doc │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── groom │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── index │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── joinus │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── search │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ ├── order │ │ ├── album │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── detail │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── details │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── evaluate │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── index │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── music │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── play │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ ├── scar │ │ ├── index │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── order │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ ├── shop │ │ ├── goods │ │ │ ├── details.js │ │ │ ├── details.json │ │ │ ├── details.wxml │ │ │ └── details.wxss │ │ ├── index │ │ │ ├── details.js │ │ │ ├── details.json │ │ │ ├── details.wxml │ │ │ ├── details.wxss │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── search │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ ├── user │ │ ├── address │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── alert │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── audit │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── detail │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── goods │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── index │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── message │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── post │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ └── vipcard │ │ ├── details │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ │ └── index │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss ├── project.config.json ├── sitemap.json └── utils │ ├── request.js │ └── util.js ├── backend ├── .gitignore ├── pom.xml └── src │ └── main │ ├── java │ └── cc │ │ └── mrbird │ │ └── febs │ │ ├── FebsApplication.java │ │ ├── common │ │ ├── annotation │ │ │ ├── IsCron.java │ │ │ ├── Limit.java │ │ │ └── Log.java │ │ ├── aspect │ │ │ ├── LimitAspect.java │ │ │ └── LogAspect.java │ │ ├── authentication │ │ │ ├── JWTFilter.java │ │ │ ├── JWTToken.java │ │ │ ├── JWTUtil.java │ │ │ ├── ShiroConfig.java │ │ │ └── ShiroRealm.java │ │ ├── config │ │ │ ├── AlipayConfig.java │ │ │ ├── AsyncExecutorPoolConfig.java │ │ │ ├── MinioConfig.java │ │ │ ├── MyWebMvcConfigurerAdapter.java │ │ │ ├── MybatisPlusConfig.java │ │ │ ├── P6spySqlFormatConfig.java │ │ │ └── RedisConfig.java │ │ ├── controller │ │ │ └── BaseController.java │ │ ├── converter │ │ │ └── TimeConverter.java │ │ ├── domain │ │ │ ├── ActiveUser.java │ │ │ ├── FebsConstant.java │ │ │ ├── FebsResponse.java │ │ │ ├── LimitType.java │ │ │ ├── QueryRequest.java │ │ │ ├── RedisInfo.java │ │ │ ├── RegexpConstant.java │ │ │ ├── Tree.java │ │ │ └── router │ │ │ │ ├── RouterMeta.java │ │ │ │ └── VueRouter.java │ │ ├── exception │ │ │ ├── FebsException.java │ │ │ ├── LimitAccessException.java │ │ │ ├── RedisConnectException.java │ │ │ └── TokenTimeoutException.java │ │ ├── function │ │ │ ├── CacheSelector.java │ │ │ └── JedisExecutor.java │ │ ├── generator │ │ │ └── CodeGenerator.java │ │ ├── handler │ │ │ └── GlobalExceptionHandler.java │ │ ├── properties │ │ │ ├── FebsProperties.java │ │ │ └── ShiroProperties.java │ │ ├── runner │ │ │ ├── CacheInitRunner.java │ │ │ └── StartedUpRunner.java │ │ ├── service │ │ │ ├── CacheService.java │ │ │ ├── RedisService.java │ │ │ └── impl │ │ │ │ ├── CacheServiceImpl.java │ │ │ │ └── RedisServiceImpl.java │ │ ├── task │ │ │ └── CacheTask.java │ │ ├── utils │ │ │ ├── AddressUtil.java │ │ │ ├── DateUtil.java │ │ │ ├── EncryptUtil.java │ │ │ ├── FebsUtil.java │ │ │ ├── FileDownloadUtils.java │ │ │ ├── FileNameUtils.java │ │ │ ├── FileUtil.java │ │ │ ├── HttpContextUtil.java │ │ │ ├── HttpUtil.java │ │ │ ├── IPUtil.java │ │ │ ├── MD5Util.java │ │ │ ├── R.java │ │ │ ├── SortUtil.java │ │ │ ├── SpaceUtil.java │ │ │ ├── SpringContextUtil.java │ │ │ └── TreeUtil.java │ │ └── validator │ │ │ └── CronValidator.java │ │ ├── cos │ │ ├── controller │ │ │ ├── AlbumInfoController.java │ │ │ ├── BulletinInfoController.java │ │ │ ├── CollectInfoController.java │ │ │ ├── EvaluateInfoController.java │ │ │ ├── FileController.java │ │ │ ├── LyricsInfoController.java │ │ │ ├── MessageInfoController.java │ │ │ ├── MusicInfoController.java │ │ │ ├── MusicPlayRecordController.java │ │ │ ├── MusicTypeInfoController.java │ │ │ ├── SingerInfoController.java │ │ │ ├── SubscriptionInfoController.java │ │ │ ├── UserInfoController.java │ │ │ └── WebController.java │ │ ├── dao │ │ │ ├── AlbumInfoMapper.java │ │ │ ├── BulletinInfoMapper.java │ │ │ ├── CollectInfoMapper.java │ │ │ ├── EvaluateInfoMapper.java │ │ │ ├── LyricsInfoMapper.java │ │ │ ├── MessageInfoMapper.java │ │ │ ├── MusicInfoMapper.java │ │ │ ├── MusicPlayRecordMapper.java │ │ │ ├── MusicTypeInfoMapper.java │ │ │ ├── SingerInfoMapper.java │ │ │ ├── SubscriptionInfoMapper.java │ │ │ └── UserInfoMapper.java │ │ ├── entity │ │ │ ├── AlbumInfo.java │ │ │ ├── BulletinInfo.java │ │ │ ├── CollectInfo.java │ │ │ ├── EvaluateInfo.java │ │ │ ├── LyricsInfo.java │ │ │ ├── MessageInfo.java │ │ │ ├── MusicInfo.java │ │ │ ├── MusicPlayRecord.java │ │ │ ├── MusicTypeInfo.java │ │ │ ├── SingerInfo.java │ │ │ ├── SubscriptionInfo.java │ │ │ └── UserInfo.java │ │ └── service │ │ │ ├── IAlbumInfoService.java │ │ │ ├── IBulletinInfoService.java │ │ │ ├── ICollectInfoService.java │ │ │ ├── IEvaluateInfoService.java │ │ │ ├── ILyricsInfoService.java │ │ │ ├── IMailService.java │ │ │ ├── IMessageInfoService.java │ │ │ ├── IMusicInfoService.java │ │ │ ├── IMusicPlayRecordService.java │ │ │ ├── IMusicTypeInfoService.java │ │ │ ├── ISingerInfoService.java │ │ │ ├── ISubscriptionInfoService.java │ │ │ ├── IUserInfoService.java │ │ │ └── impl │ │ │ ├── AlbumInfoServiceImpl.java │ │ │ ├── BulletinInfoServiceImpl.java │ │ │ ├── CollectInfoServiceImpl.java │ │ │ ├── EvaluateInfoServiceImpl.java │ │ │ ├── IMailServiceImpl.java │ │ │ ├── LyricsInfoServiceImpl.java │ │ │ ├── MessageInfoServiceImpl.java │ │ │ ├── MusicInfoServiceImpl.java │ │ │ ├── MusicPlayRecordServiceImpl.java │ │ │ ├── MusicTypeInfoServiceImpl.java │ │ │ ├── SingerInfoServiceImpl.java │ │ │ ├── SubscriptionInfoServiceImpl.java │ │ │ └── UserInfoServiceImpl.java │ │ └── system │ │ ├── controller │ │ ├── DeptController.java │ │ ├── DictController.java │ │ ├── LogController.java │ │ ├── LoginController.java │ │ ├── MenuController.java │ │ ├── RedisController.java │ │ ├── RoleController.java │ │ ├── TestController.java │ │ └── UserController.java │ │ ├── dao │ │ ├── DeptMapper.java │ │ ├── DictMapper.java │ │ ├── LogMapper.java │ │ ├── LoginLogMapper.java │ │ ├── MenuMapper.java │ │ ├── RoleMapper.java │ │ ├── RoleMenuMapper.java │ │ ├── TestMapper.java │ │ ├── UserConfigMapper.java │ │ ├── UserMapper.java │ │ └── UserRoleMapper.java │ │ ├── domain │ │ ├── Dept.java │ │ ├── Dict.java │ │ ├── LoginLog.java │ │ ├── Menu.java │ │ ├── Role.java │ │ ├── RoleMenu.java │ │ ├── SysLog.java │ │ ├── Test.java │ │ ├── User.java │ │ ├── UserConfig.java │ │ └── UserRole.java │ │ ├── manager │ │ └── UserManager.java │ │ └── service │ │ ├── DeptService.java │ │ ├── DictService.java │ │ ├── LogService.java │ │ ├── LoginLogService.java │ │ ├── MenuService.java │ │ ├── RoleMenuServie.java │ │ ├── RoleService.java │ │ ├── TestService.java │ │ ├── UserConfigService.java │ │ ├── UserRoleService.java │ │ ├── UserService.java │ │ └── impl │ │ ├── DeptServiceImpl.java │ │ ├── DictServiceImpl.java │ │ ├── LogServiceImpl.java │ │ ├── LoginLogServiceImpl.java │ │ ├── MenuServiceImpl.java │ │ ├── RoleMenuServiceImpl.java │ │ ├── RoleServiceImpl.java │ │ ├── TestServiceImpl.java │ │ ├── UserConfigServiceImpl.java │ │ ├── UserRoleServiceImpl.java │ │ └── UserServiceImpl.java │ └── resources │ ├── ValidationMessages.properties │ ├── application.yml │ ├── banner.txt │ ├── config │ └── alipay.properties │ ├── generator │ └── templates │ │ ├── controller.java.ftl │ │ ├── entity.java.ftl │ │ ├── mapper.java.ftl │ │ ├── mapper.xml.ftl │ │ ├── service.java.ftl │ │ └── serviceImpl.java.ftl │ ├── ip2region │ └── ip2region.db │ ├── logback-spring.xml │ ├── mapper │ ├── cos │ │ ├── AlbumInfoMapper.xml │ │ ├── BulletinInfoMapper.xml │ │ ├── CollectInfoMapper.xml │ │ ├── EvaluateInfoMapper.xml │ │ ├── LyricsInfoMapper.xml │ │ ├── MessageInfoMapper.xml │ │ ├── MusicInfoMapper.xml │ │ ├── MusicPlayRecordMapper.xml │ │ ├── MusicTypeInfoMapper.xml │ │ ├── SingerInfoMapper.xml │ │ ├── SubscriptionInfoMapper.xml │ │ └── UserInfoMapper.xml │ └── system │ │ ├── LoginLogMapper.xml │ │ ├── MenuMapper.xml │ │ ├── RoleMapper.xml │ │ ├── UserMapper.xml │ │ └── UserRoleMapper.xml │ ├── spy.properties │ └── templates │ ├── email.html │ └── registerEmail.html └── frontend ├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .idea ├── .gitignore ├── frontend.iml ├── git_toolbox_blame.xml ├── inspectionProfiles │ └── Project_Default.xml ├── modules.xml └── vcs.xml ├── .postcssrc.js ├── build ├── build.js ├── check-versions.js ├── logo.png ├── utils.js ├── vue-loader.conf.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js ├── prod.env.js └── test.env.js ├── index.html ├── package-lock.json ├── package.json ├── src ├── FEBS.vue ├── components │ ├── checkbox │ │ ├── ColorCheckbox.vue │ │ └── ImgCheckbox.vue │ ├── datetime │ │ └── RangeDate.vue │ ├── exception │ │ ├── ExceptionPage.vue │ │ └── typeConfig.js │ ├── menu │ │ ├── Contextmenu.vue │ │ ├── SiderMenu.vue │ │ └── menu.js │ ├── setting │ │ ├── Setting.vue │ │ ├── SettingItem.vue │ │ └── StyleItem.vue │ └── tool │ │ └── Drawer.vue ├── main.js ├── router │ └── index.js ├── store │ ├── index.js │ └── modules │ │ ├── account.js │ │ └── setting.js ├── utils │ ├── color.js │ ├── common.js │ ├── device.js │ ├── install.js │ ├── localstorage.js │ ├── map │ │ ├── baiduMap.js │ │ ├── gisMap.js │ │ └── searchmap │ │ │ ├── drawerMap.vue │ │ │ └── index.vue │ ├── permissionDirect.js │ ├── request.js │ └── utils.less └── views │ ├── HomePage.vue │ ├── common │ ├── EmptyPageView.vue │ ├── GlobalFooter.vue │ ├── GlobalHeader.vue │ ├── GlobalLayout.vue │ ├── HeadInfo.vue │ ├── HeaderAvatar.vue │ ├── MenuView.vue │ ├── PageContent.vue │ ├── PageLayout.vue │ └── PageView.vue │ ├── error │ ├── 403.vue │ ├── 404.vue │ └── 500.vue │ ├── login │ ├── Common.vue │ ├── Login.vue │ └── Regist.vue │ ├── manage │ ├── album │ │ ├── Album.vue │ │ ├── AlbumAdd.vue │ │ └── AlbumEdit.vue │ ├── bulletin │ │ ├── Bulletin.vue │ │ ├── BulletinAdd.vue │ │ └── BulletinEdit.vue │ ├── collect │ │ └── Collect.vue │ ├── component │ │ ├── home │ │ │ └── Home.vue │ │ └── work │ │ │ └── Work.vue │ ├── evaluate │ │ └── Evaluate.vue │ ├── lyrics │ │ ├── Lyrics.vue │ │ ├── LyricsAdd.vue │ │ └── LyricsEdit.vue │ ├── message │ │ └── Message.vue │ ├── music │ │ ├── Music.vue │ │ ├── MusicAdd.vue │ │ └── MusicEdit.vue │ ├── record │ │ └── Record.vue │ ├── singer │ │ ├── Singer.vue │ │ ├── SingerAdd.vue │ │ └── SingerEdit.vue │ ├── subscription │ │ └── Subscription.vue │ ├── type │ │ ├── Type.vue │ │ ├── TypeAdd.vue │ │ └── TypeEdit.vue │ └── user │ │ ├── User.vue │ │ └── UserView.vue │ ├── monitor │ ├── Httptrace.vue │ ├── JvmInfo.vue │ ├── Online.vue │ ├── RedisInfo.vue │ ├── RedisTerminal.vue │ ├── SystemInfo.vue │ ├── SystemLog.vue │ └── TomcatInfo.vue │ ├── others │ ├── Excel.vue │ └── ImportResult.vue │ ├── personal │ ├── Profile.vue │ ├── UpdateAvatar.vue │ ├── UpdatePassword.vue │ └── UpdateProfile.vue │ ├── quartz │ ├── job │ │ ├── Job.vue │ │ ├── JobAdd.vue │ │ └── JobEdit.vue │ └── log │ │ └── JobLog.vue │ ├── statistics │ ├── history │ │ └── History.vue │ └── online │ │ └── Online.vue │ └── system │ ├── dept │ ├── Dept.vue │ ├── DeptAdd.vue │ ├── DeptEdit.vue │ └── DeptInputTree.vue │ ├── dict │ ├── Dict.vue │ ├── DictAdd.vue │ └── DictEdit.vue │ ├── menu │ ├── ButtonAdd.vue │ ├── ButtonEdit.vue │ ├── Icon.less │ ├── Icons.vue │ ├── Menu.vue │ ├── MenuAdd.vue │ └── MenuEdit.vue │ ├── role │ ├── Role.vue │ ├── RoleAdd.vue │ ├── RoleEdit.vue │ └── RoleInfo.vue │ └── user │ ├── User.vue │ ├── UserAdd.vue │ ├── UserEdit.vue │ ├── UserInfo.less │ └── UserInfo.vue ├── static ├── .gitkeep ├── avatar │ ├── 17e420c250804efe904a09a33796d5a10.jpg │ ├── 17e420c250804efe904a09a33796d5a16.jpg │ ├── 19034103295190235.jpg │ ├── 1d22f3e41d284f50b2c8fc32e0788698.jpeg │ ├── 20180414165754.jpg │ ├── 20180414165815.jpg │ ├── 20180414165821.jpg │ ├── 20180414165827.jpg │ ├── 20180414165834.jpg │ ├── 20180414165840.jpg │ ├── 20180414165846.jpg │ ├── 20180414165855.jpg │ ├── 20180414165909.jpg │ ├── 20180414165914.jpg │ ├── 20180414165920.jpg │ ├── 20180414165927.jpg │ ├── 20180414165936.jpg │ ├── 20180414165942.jpg │ ├── 20180414165947.jpg │ ├── 20180414165955.jpg │ ├── 20180414170003.jpg │ ├── 2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg │ ├── 2dd7a2d09fa94bf8b5c52e5318868b4df.jpg │ ├── 496b3ace787342f7954b7045b8b06804.jpeg │ ├── 595ba7b05f2e485eb50565a50cb6cc3c.jpeg │ ├── 5997fedcc7bd4cffbd350b40d1b5b9824.jpg │ ├── 5997fedcc7bd4cffbd350b40d1b5b987.jpg │ ├── 87d8194bc9834e9f8f0228e9e530beb1.jpeg │ ├── 8f5b60ef00714a399ee544d331231820.jpeg │ ├── 964e40b005724165b8cf772355796c8c.jpeg │ ├── BiazfanxmamNRoxxVxka.png │ ├── WhxKECPNujWoWEFNdnJE.png │ ├── a3b10296862e40edb811418d64455d00.jpeg │ ├── a43456282d684e0b9319cf332f8ac468.jpeg │ ├── bba284ac05b041a8b8b0d1927868d5c9x.jpg │ ├── c7c4ee7be3eb4e73a19887dc713505145.jpg │ ├── cnrhVkzwxjPwAaCfPbdc.png │ ├── default.jpg │ ├── ff698bb2d25c4d218b3256b46c706ece.jpeg │ ├── gaOngJwsRYRaVAuXXcmB.png │ ├── jZUIxmJycoymBprLOUbT.png │ └── ubnKSIfAJTxIgXOKlciN.png ├── file │ └── city.json ├── img │ ├── 1work-4997565_1280.png │ ├── delete.png │ ├── download.png │ ├── error.png │ ├── favicon.ico │ ├── home.png │ ├── loading.png │ ├── logo-blue.png │ ├── logo.png │ ├── record.png │ ├── side-bar-dark.svg │ ├── side-bar-left.svg │ ├── side-bar-light.svg │ ├── side-bar-top.svg │ ├── template.png │ ├── total.png │ ├── work-4997565_1280.png │ └── work-4997565_12801.png └── less │ ├── Color.less │ ├── Common.less │ ├── jsmind.css │ └── jsmind.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /frontend/node_modules/ 2 | /backend/target 3 | /backend/log -------------------------------------------------------------------------------- /app/README.md: -------------------------------------------------------------------------------- 1 | # WeChat-ColorUI-shop-templet 2 | 微信小程序的 ColorUI扩展的商城模板 3 | 4 | 下载后,使用小程序开发工具导入后即可预览效果。 5 | 6 | 图片效果查看:https://www.yuque.com/itianc/ui/artboards/61558 7 | 8 | ### 新发布了一个基于uni-app开发的仿转转商城APP的模板,有兴趣的朋友,可以去看看:https://ext.dcloud.net.cn/plugin?id=1531 9 | 10 | ColorUI框架的GIT:https://github.com/weilanwl/ColorUI 11 | (此项目使用的2.0.7版本的UI框架) 12 | 13 | # !!此项目不再更新!! 14 | 15 | ColorUI作者已经做了ColorShop完整模板。 16 | 17 | 如需colorshop模板,可在colorui的QQ交流群的群文件里下载colorui作者开发的colorshop模板。 18 | -------------------------------------------------------------------------------- /app/app.js: -------------------------------------------------------------------------------- 1 | //app.js 2 | App({ 3 | onLaunch: function () { 4 | wx.getSystemInfo({ 5 | success: e => { 6 | this.globalData.StatusBar = e.statusBarHeight; 7 | let custom = wx.getMenuButtonBoundingClientRect(); 8 | this.globalData.Custom = custom; 9 | let CustomBar = custom.bottom + custom.top - e.statusBarHeight; 10 | this.globalData.CustomBar = CustomBar; 11 | //适配全面屏底部距离 12 | if (CustomBar > 75) { 13 | this.globalData.tabbar_bottom = "y" 14 | } 15 | } 16 | }) 17 | }, 18 | globalData: { 19 | userInfo: null 20 | } 21 | }); 22 | 23 | -------------------------------------------------------------------------------- /app/common/request.js: -------------------------------------------------------------------------------- 1 | function httpRequest(url, data, method, header, callback) { 2 | wx.request({ 3 | url: url, 4 | data: data, 5 | method: method, 6 | header: header, 7 | success: function (result) { 8 | return typeof callback == 'function' && callback(result.data); 9 | }, 10 | fail: function () { 11 | return typeof callback == 'function' && callback(false); 12 | } 13 | }) 14 | } 15 | 16 | module.exports = { httpRequest: httpRequest } -------------------------------------------------------------------------------- /app/dist/action-sheet/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/action-sheet/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index", 5 | "van-popup": "../popup/index", 6 | "van-loading": "../loading/index" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/dist/area/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/area/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-picker": "../picker/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/area/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 21 | -------------------------------------------------------------------------------- /app/dist/area/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | function displayColumns(columns, columnsNum) { 3 | return columns.slice(0, +columnsNum); 4 | } 5 | 6 | module.exports = { 7 | displayColumns: displayColumns, 8 | }; 9 | -------------------------------------------------------------------------------- /app/dist/area/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss'; -------------------------------------------------------------------------------- /app/dist/button/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/button/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index", 5 | "van-loading": "../loading/index" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/calendar/components/header/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/calendar/components/header/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../../../common/component'; 2 | VantComponent({ 3 | props: { 4 | title: { 5 | type: String, 6 | value: '日期选择', 7 | }, 8 | subtitle: String, 9 | showTitle: Boolean, 10 | showSubtitle: Boolean, 11 | }, 12 | data: { 13 | weekdays: ['日', '一', '二', '三', '四', '五', '六'], 14 | }, 15 | methods: {}, 16 | }); 17 | -------------------------------------------------------------------------------- /app/dist/calendar/components/header/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/calendar/components/header/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ title }} 5 | 6 | 7 | 8 | {{ subtitle }} 9 | 10 | 11 | 12 | 13 | {{ item }} 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/dist/calendar/components/month/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/calendar/components/month/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/calendar/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/calendar/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "header": "./components/header/index", 5 | "month": "./components/month/index", 6 | "van-button": "../button/index", 7 | "van-popup": "../popup/index", 8 | "van-toast": "../toast/index" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/dist/calendar/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/dist/calendar/utils.d.ts: -------------------------------------------------------------------------------- 1 | export declare const ROW_HEIGHT = 64; 2 | export declare function formatMonthTitle(date: Date): string; 3 | export declare function compareMonth( 4 | date1: Date | number, 5 | date2: Date | number 6 | ): 0 | 1 | -1; 7 | export declare function compareDay( 8 | day1: Date | number, 9 | day2: Date | number 10 | ): 0 | 1 | -1; 11 | export declare function getDayByOffset(date: Date, offset: number): Date; 12 | export declare function getPrevDay(date: Date): Date; 13 | export declare function getNextDay(date: Date): Date; 14 | export declare function calcDateNum(date: [Date, Date]): number; 15 | export declare function copyDates(dates: Date | Date[]): Date | Date[]; 16 | export declare function getMonthEndDay(year: number, month: number): number; 17 | export declare function getMonths(minDate: number, maxDate: number): number[]; 18 | -------------------------------------------------------------------------------- /app/dist/calendar/utils.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | function getMonthEndDay(year, month) { 3 | return 32 - getDate(year, month - 1, 32).getDate(); 4 | } 5 | 6 | function compareMonth(date1, date2) { 7 | date1 = getDate(date1); 8 | date2 = getDate(date2); 9 | 10 | var year1 = date1.getFullYear(); 11 | var year2 = date2.getFullYear(); 12 | var month1 = date1.getMonth(); 13 | var month2 = date2.getMonth(); 14 | 15 | if (year1 === year2) { 16 | return month1 === month2 ? 0 : month1 > month2 ? 1 : -1; 17 | } 18 | 19 | return year1 > year2 ? 1 : -1; 20 | } 21 | 22 | module.exports = { 23 | getMonthEndDay: getMonthEndDay, 24 | compareMonth: compareMonth 25 | }; 26 | -------------------------------------------------------------------------------- /app/dist/card/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/card/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-tag": "../tag/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/cell-group/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/cell-group/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | props: { 4 | title: String, 5 | border: { 6 | type: Boolean, 7 | value: true, 8 | }, 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /app/dist/cell-group/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/cell-group/index.wxml: -------------------------------------------------------------------------------- 1 | 5 | {{ title }} 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/dist/cell-group/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-cell-group__title{padding:16px 16px 8px;padding:var(--cell-group-title-padding,16px 16px 8px);font-size:14px;font-size:var(--cell-group-title-font-size,14px);line-height:16px;line-height:var(--cell-group-title-line-height,16px);color:#969799;color:var(--cell-group-title-color,#969799)} -------------------------------------------------------------------------------- /app/dist/cell/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/cell/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/cell/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function titleStyle(data) { 6 | return style([ 7 | { 8 | 'max-width': addUnit(data.titleWidth), 9 | 'min-width': addUnit(data.titleWidth), 10 | }, 11 | data.titleStyle, 12 | ]); 13 | } 14 | 15 | module.exports = { 16 | titleStyle: titleStyle, 17 | }; 18 | -------------------------------------------------------------------------------- /app/dist/checkbox-group/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/checkbox-group/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/checkbox-group/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/dist/checkbox-group/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss'; -------------------------------------------------------------------------------- /app/dist/checkbox/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/checkbox/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/checkbox/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) { 6 | var styles = { 7 | 'font-size': addUnit(iconSize), 8 | }; 9 | 10 | if (checkedColor && value && !disabled && !parentDisabled) { 11 | styles['border-color'] = checkedColor; 12 | styles['background-color'] = checkedColor; 13 | } 14 | 15 | return style(styles); 16 | } 17 | 18 | module.exports = { 19 | iconStyle: iconStyle, 20 | }; 21 | -------------------------------------------------------------------------------- /app/dist/circle/canvas.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | declare type CanvasContext = WechatMiniprogram.CanvasContext; 3 | export declare function adaptor( 4 | ctx: CanvasContext & Record 5 | ): CanvasContext; 6 | export {}; 7 | -------------------------------------------------------------------------------- /app/dist/circle/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/circle/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/circle/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {{ text }} 9 | 10 | -------------------------------------------------------------------------------- /app/dist/circle/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-circle{position:relative;display:inline-block;text-align:center}.van-circle__text{position:absolute;top:50%;left:0;width:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%);color:#323233;color:var(--circle-text-color,#323233)} -------------------------------------------------------------------------------- /app/dist/col/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/col/index.js: -------------------------------------------------------------------------------- 1 | import { useParent } from '../common/relation'; 2 | import { VantComponent } from '../common/component'; 3 | VantComponent({ 4 | relation: useParent('row'), 5 | props: { 6 | span: Number, 7 | offset: Number, 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /app/dist/col/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/col/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/dist/col/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function rootStyle(data) { 6 | if (!data.gutter) { 7 | return ''; 8 | } 9 | 10 | return style({ 11 | 'padding-right': addUnit(data.gutter / 2), 12 | 'padding-left': addUnit(data.gutter / 2), 13 | }); 14 | } 15 | 16 | module.exports = { 17 | rootStyle: rootStyle, 18 | }; 19 | -------------------------------------------------------------------------------- /app/dist/collapse-item/animate.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export declare function setContentAnimate( 3 | context: WechatMiniprogram.Component.TrivialInstance, 4 | expanded: boolean, 5 | mounted: boolean 6 | ): void; 7 | -------------------------------------------------------------------------------- /app/dist/collapse-item/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/collapse-item/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-cell": "../cell/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/collapse/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/collapse/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/collapse/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/dist/collapse/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss'; -------------------------------------------------------------------------------- /app/dist/common/color.d.ts: -------------------------------------------------------------------------------- 1 | export declare const RED = "#ee0a24"; 2 | export declare const BLUE = "#1989fa"; 3 | export declare const WHITE = "#fff"; 4 | export declare const GREEN = "#07c160"; 5 | export declare const ORANGE = "#ff976a"; 6 | export declare const GRAY = "#323233"; 7 | export declare const GRAY_DARK = "#969799"; 8 | -------------------------------------------------------------------------------- /app/dist/common/color.js: -------------------------------------------------------------------------------- 1 | export const RED = '#ee0a24'; 2 | export const BLUE = '#1989fa'; 3 | export const WHITE = '#fff'; 4 | export const GREEN = '#07c160'; 5 | export const ORANGE = '#ff976a'; 6 | export const GRAY = '#323233'; 7 | export const GRAY_DARK = '#969799'; 8 | -------------------------------------------------------------------------------- /app/dist/common/component.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { VantComponentOptions } from '../definitions/index'; 3 | declare function VantComponent< 4 | Data extends WechatMiniprogram.Component.DataOption, 5 | Props extends WechatMiniprogram.Component.PropertyOption, 6 | Methods extends WechatMiniprogram.Component.MethodOption 7 | >(vantOptions: VantComponentOptions): void; 8 | export { VantComponent }; 9 | -------------------------------------------------------------------------------- /app/dist/common/relation.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | declare type TrivialInstance = WechatMiniprogram.Component.TrivialInstance; 3 | export declare function useParent( 4 | name: string, 5 | onEffect?: (this: TrivialInstance) => void 6 | ): { 7 | relations: { 8 | [x: string]: WechatMiniprogram.Component.RelationOption; 9 | }; 10 | mixin: string; 11 | }; 12 | export declare function useChildren( 13 | name: string, 14 | onEffect?: (this: TrivialInstance, target: TrivialInstance) => void 15 | ): { 16 | relations: { 17 | [x: string]: WechatMiniprogram.Component.RelationOption; 18 | }; 19 | mixin: string; 20 | }; 21 | export {}; 22 | -------------------------------------------------------------------------------- /app/dist/common/style/clearfix.wxss: -------------------------------------------------------------------------------- 1 | .van-clearfix:after{display:table;clear:both;content:""} -------------------------------------------------------------------------------- /app/dist/common/style/ellipsis.wxss: -------------------------------------------------------------------------------- 1 | .van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3} -------------------------------------------------------------------------------- /app/dist/common/style/mixins/clearfix.wxss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/dist/common/style/mixins/clearfix.wxss -------------------------------------------------------------------------------- /app/dist/common/style/mixins/ellipsis.wxss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/dist/common/style/mixins/ellipsis.wxss -------------------------------------------------------------------------------- /app/dist/common/style/mixins/hairline.wxss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/dist/common/style/mixins/hairline.wxss -------------------------------------------------------------------------------- /app/dist/common/style/theme.wxss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/dist/common/style/theme.wxss -------------------------------------------------------------------------------- /app/dist/common/style/var.wxss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/dist/common/style/var.wxss -------------------------------------------------------------------------------- /app/dist/common/validator.d.ts: -------------------------------------------------------------------------------- 1 | export declare function isFunction(val: unknown): val is Function; 2 | export declare function isPlainObject( 3 | val: unknown 4 | ): val is Record; 5 | export declare function isPromise(val: unknown): val is Promise; 6 | export declare function isDef(value: unknown): boolean; 7 | export declare function isObj(x: unknown): x is Record; 8 | export declare function isNumber(value: string): boolean; 9 | export declare function isBoolean(value: unknown): value is boolean; 10 | export declare function isImageUrl(url: string): boolean; 11 | export declare function isVideoUrl(url: string): boolean; 12 | -------------------------------------------------------------------------------- /app/dist/common/version.d.ts: -------------------------------------------------------------------------------- 1 | export declare function canIUseModel(): boolean; 2 | export declare function canIUseFormFieldButton(): boolean; 3 | export declare function canIUseAnimate(): boolean; 4 | export declare function canIUseGroupSetData(): boolean; 5 | export declare function canIUseNextTick(): boolean; 6 | export declare function canIUseCanvas2d(): boolean; 7 | -------------------------------------------------------------------------------- /app/dist/count-down/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/count-down/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/count-down/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ formattedTime }} 4 | 5 | -------------------------------------------------------------------------------- /app/dist/count-down/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-count-down{color:#323233;color:var(--count-down-text-color,#323233);font-size:14px;font-size:var(--count-down-font-size,14px);line-height:20px;line-height:var(--count-down-line-height,20px)} -------------------------------------------------------------------------------- /app/dist/count-down/utils.d.ts: -------------------------------------------------------------------------------- 1 | export declare type TimeData = { 2 | days: number; 3 | hours: number; 4 | minutes: number; 5 | seconds: number; 6 | milliseconds: number; 7 | }; 8 | export declare function parseTimeData(time: number): TimeData; 9 | export declare function parseFormat(format: string, timeData: TimeData): string; 10 | export declare function isSameSecond(time1: number, time2: number): boolean; 11 | -------------------------------------------------------------------------------- /app/dist/datetime-picker/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/datetime-picker/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-picker": "../picker/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/datetime-picker/index.wxml: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /app/dist/datetime-picker/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss'; -------------------------------------------------------------------------------- /app/dist/definitions/index.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/dialog/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/dialog/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-popup": "../popup/index", 5 | "van-button": "../button/index", 6 | "van-goods-action": "../goods-action/index", 7 | "van-goods-action-button": "../goods-action-button/index" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/dist/divider/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/divider/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | props: { 4 | dashed: Boolean, 5 | hairline: Boolean, 6 | contentPosition: String, 7 | fontSize: String, 8 | borderColor: String, 9 | textColor: String, 10 | customStyle: String, 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /app/dist/divider/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": {} 4 | } 5 | -------------------------------------------------------------------------------- /app/dist/divider/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/dist/divider/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function rootStyle(data) { 6 | return style([ 7 | { 8 | 'border-color': data.borderColor, 9 | color: data.textColor, 10 | 'font-size': addUnit(data.fontSize), 11 | }, 12 | data.customStyle, 13 | ]); 14 | } 15 | 16 | module.exports = { 17 | rootStyle: rootStyle, 18 | }; 19 | -------------------------------------------------------------------------------- /app/dist/dropdown-item/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/dropdown-item/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-popup": "../popup/index", 5 | "van-cell": "../cell/index", 6 | "van-icon": "../icon/index" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/dist/dropdown-item/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-dropdown-item{position:fixed;right:0;left:0;overflow:hidden}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active .van-dropdown-item__icon,.van-dropdown-item__option--active .van-dropdown-item__title{color:#ee0a24;color:var(--dropdown-menu-option-active-color,#ee0a24)}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__icon{display:block;line-height:inherit} -------------------------------------------------------------------------------- /app/dist/dropdown-item/shared.d.ts: -------------------------------------------------------------------------------- 1 | export interface Option { 2 | text: string; 3 | value: string | number; 4 | icon: string; 5 | } 6 | -------------------------------------------------------------------------------- /app/dist/dropdown-item/shared.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/dropdown-menu/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/dropdown-menu/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/dropdown-menu/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 16 | 17 | {{ computed.displayTitle(item) }} 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/dist/dropdown-menu/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | function displayTitle(item) { 3 | if (item.title) { 4 | return item.title; 5 | } 6 | 7 | var match = item.options.filter(function(option) { 8 | return option.value === item.value; 9 | }); 10 | var displayTitle = match.length ? match[0].text : ''; 11 | return displayTitle; 12 | } 13 | 14 | module.exports = { 15 | displayTitle: displayTitle 16 | }; 17 | -------------------------------------------------------------------------------- /app/dist/empty/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/empty/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | props: { 4 | description: String, 5 | image: { 6 | type: String, 7 | value: 'default', 8 | }, 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /app/dist/empty/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": {} 4 | } -------------------------------------------------------------------------------- /app/dist/empty/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | {{ description }} 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/dist/empty/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var PRESETS = ['error', 'search', 'default', 'network']; 3 | 4 | function imageUrl(image) { 5 | if (PRESETS.indexOf(image) !== -1) { 6 | return 'https://img.yzcdn.cn/vant/empty-image-' + image + '.png'; 7 | } 8 | 9 | return image; 10 | } 11 | 12 | module.exports = { 13 | imageUrl: imageUrl, 14 | }; 15 | -------------------------------------------------------------------------------- /app/dist/empty/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-empty{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:32px 0}.van-empty__image{width:160px;height:160px}.van-empty__image:empty{display:none}.van-empty__image__img{width:100%;height:100%}.van-empty__image:not(:empty)+.van-empty__image{display:none}.van-empty__description{margin-top:16px;padding:0 60px;color:#969799;font-size:14px;line-height:20px}.van-empty__description:empty,.van-empty__description:not(:empty)+.van-empty__description{display:none}.van-empty__bottom{margin-top:24px} -------------------------------------------------------------------------------- /app/dist/field/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/field/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-cell": "../cell/index", 5 | "van-icon": "../icon/index" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/field/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function inputStyle(autosize) { 6 | if (autosize && autosize.constructor === 'Object') { 7 | return style({ 8 | 'min-height': addUnit(autosize.minHeight), 9 | 'max-height': addUnit(autosize.maxHeight), 10 | }); 11 | } 12 | 13 | return ''; 14 | } 15 | 16 | module.exports = { 17 | inputStyle: inputStyle, 18 | }; 19 | -------------------------------------------------------------------------------- /app/dist/field/props.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export declare const commonProps: WechatMiniprogram.Component.PropertyOption; 3 | export declare const inputProps: WechatMiniprogram.Component.PropertyOption; 4 | export declare const textareaProps: WechatMiniprogram.Component.PropertyOption; 5 | -------------------------------------------------------------------------------- /app/dist/goods-action-button/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/goods-action-button/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-button": "../button/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/goods-action-icon/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/goods-action-icon/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | import { button } from '../mixins/button'; 3 | import { link } from '../mixins/link'; 4 | import { openType } from '../mixins/open-type'; 5 | VantComponent({ 6 | classes: ['icon-class', 'text-class'], 7 | mixins: [link, button, openType], 8 | props: { 9 | text: String, 10 | dot: Boolean, 11 | info: String, 12 | icon: String, 13 | disabled: Boolean, 14 | loading: Boolean, 15 | }, 16 | methods: { 17 | onClick(event) { 18 | this.$emit('click', event.detail); 19 | this.jumpLink(); 20 | }, 21 | }, 22 | }); 23 | -------------------------------------------------------------------------------- /app/dist/goods-action-icon/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index", 5 | "van-button": "../button/index" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/goods-action-icon/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-goods-action-icon{display:-webkit-flex!important;display:flex!important;-webkit-flex-direction:column;flex-direction:column;-webkit-justify-content:center!important;justify-content:center!important;line-height:1!important;border:none!important;font-size:10px!important;font-size:var(--goods-action-icon-font-size,10px)!important;color:#646566!important;color:var(--goods-action-icon-text-color,#646566)!important;min-width:48px;min-width:var(--goods-action-icon-width,48px);height:50px!important;height:var(--goods-action-icon-height,50px)!important}.van-goods-action-icon__icon{display:-webkit-flex;display:flex;margin:0 auto 5px;color:#323233;color:var(--goods-action-icon-color,#323233);font-size:18px;font-size:var(--goods-action-icon-size,18px)} -------------------------------------------------------------------------------- /app/dist/goods-action/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/goods-action/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | import { useChildren } from '../common/relation'; 3 | VantComponent({ 4 | relation: useChildren('goods-action-button', function () { 5 | this.children.forEach((item) => { 6 | item.updateStyle(); 7 | }); 8 | }), 9 | props: { 10 | safeAreaInsetBottom: { 11 | type: Boolean, 12 | value: true, 13 | }, 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /app/dist/goods-action/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/goods-action/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/dist/goods-action/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-goods-action{position:fixed;right:0;bottom:0;left:0;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;box-sizing:initial;height:50px;height:var(--goods-action-height,50px);background-color:#fff;background-color:var(--goods-action-background-color,#fff)}.van-goods-action--safe{padding-bottom:env(safe-area-inset-bottom)} -------------------------------------------------------------------------------- /app/dist/grid-item/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/grid-item/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/grid/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/grid/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/grid/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/dist/grid/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function rootStyle(data) { 6 | return style({ 7 | 'padding-left': addUnit(data.gutter), 8 | }); 9 | } 10 | 11 | module.exports = { 12 | rootStyle: rootStyle, 13 | }; 14 | -------------------------------------------------------------------------------- /app/dist/grid/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-grid{position:relative;box-sizing:border-box;overflow:hidden} -------------------------------------------------------------------------------- /app/dist/icon/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/icon/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | props: { 4 | dot: Boolean, 5 | info: null, 6 | size: null, 7 | color: String, 8 | customStyle: String, 9 | classPrefix: { 10 | type: String, 11 | value: 'van-icon', 12 | }, 13 | name: String, 14 | }, 15 | methods: { 16 | onClick() { 17 | this.$emit('click'); 18 | }, 19 | }, 20 | }); 21 | -------------------------------------------------------------------------------- /app/dist/icon/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-info": "../info/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/icon/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /app/dist/image/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/image/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index", 5 | "van-loading": "../loading/index" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/image/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function rootStyle(data) { 6 | return style([ 7 | { 8 | width: addUnit(data.width), 9 | height: addUnit(data.height), 10 | 'border-radius': addUnit(data.radius), 11 | }, 12 | data.radius ? 'overflow: hidden' : null, 13 | ]); 14 | } 15 | 16 | var FIT_MODE_MAP = { 17 | none: 'center', 18 | fill: 'scaleToFill', 19 | cover: 'aspectFill', 20 | contain: 'aspectFit', 21 | widthFix: 'widthFix', 22 | heightFix: 'heightFix', 23 | }; 24 | 25 | function mode(fit) { 26 | return FIT_MODE_MAP[fit]; 27 | } 28 | 29 | module.exports = { 30 | rootStyle: rootStyle, 31 | mode: mode, 32 | }; 33 | -------------------------------------------------------------------------------- /app/dist/index-anchor/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/index-anchor/index.js: -------------------------------------------------------------------------------- 1 | import { getRect } from '../common/utils'; 2 | import { VantComponent } from '../common/component'; 3 | import { useParent } from '../common/relation'; 4 | VantComponent({ 5 | relation: useParent('index-bar'), 6 | props: { 7 | useSlot: Boolean, 8 | index: null, 9 | }, 10 | data: { 11 | active: false, 12 | wrapperStyle: '', 13 | anchorStyle: '', 14 | }, 15 | methods: { 16 | scrollIntoView(scrollTop) { 17 | getRect(this, '.van-index-anchor-wrapper').then((rect) => { 18 | wx.pageScrollTo({ 19 | duration: 0, 20 | scrollTop: scrollTop + rect.top - this.parent.data.stickyOffsetTop, 21 | }); 22 | }); 23 | }, 24 | }, 25 | }); 26 | -------------------------------------------------------------------------------- /app/dist/index-anchor/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/index-anchor/index.wxml: -------------------------------------------------------------------------------- 1 | 5 | 9 | 10 | 11 | {{ index }} 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/dist/index-anchor/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-index-anchor{padding:0 16px;padding:var(--index-anchor-padding,0 16px);color:#323233;color:var(--index-anchor-text-color,#323233);font-weight:500;font-weight:var(--index-anchor-font-weight,500);font-size:14px;font-size:var(--index-anchor-font-size,14px);line-height:32px;line-height:var(--index-anchor-line-height,32px);background-color:initial;background-color:var(--index-anchor-background-color,transparent)}.van-index-anchor--active{right:0;left:0;color:#07c160;color:var(--index-anchor-active-text-color,#07c160);background-color:#fff;background-color:var(--index-anchor-active-background-color,#fff)} -------------------------------------------------------------------------------- /app/dist/index-bar/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/index-bar/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/index-bar/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 19 | {{ item }} 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/dist/index-bar/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-index-bar{position:relative}.van-index-bar__sidebar{position:fixed;top:50%;right:0;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-user-select:none;user-select:none}.van-index-bar__index{font-weight:500;padding:0 4px 0 16px;padding:0 var(--padding-base,4px) 0 var(--padding-md,16px);font-size:10px;font-size:var(--index-bar-index-font-size,10px);line-height:14px;line-height:var(--index-bar-index-line-height,14px)} -------------------------------------------------------------------------------- /app/dist/info/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/info/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | props: { 4 | dot: Boolean, 5 | info: null, 6 | customStyle: String, 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /app/dist/info/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/info/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ dot ? '' : info }} 8 | -------------------------------------------------------------------------------- /app/dist/loading/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/loading/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | props: { 4 | color: String, 5 | vertical: Boolean, 6 | type: { 7 | type: String, 8 | value: 'circular', 9 | }, 10 | size: String, 11 | textSize: String, 12 | }, 13 | data: { 14 | array12: Array.from({ length: 12 }), 15 | }, 16 | }); 17 | -------------------------------------------------------------------------------- /app/dist/loading/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/loading/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/dist/loading/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function spinnerStyle(data) { 6 | return style({ 7 | color: data.color, 8 | width: addUnit(data.size), 9 | height: addUnit(data.size), 10 | }); 11 | } 12 | 13 | function textStyle(data) { 14 | return style({ 15 | 'font-size': addUnit(data.textSize), 16 | }); 17 | } 18 | 19 | module.exports = { 20 | spinnerStyle: spinnerStyle, 21 | textStyle: textStyle, 22 | }; 23 | -------------------------------------------------------------------------------- /app/dist/mixins/basic.d.ts: -------------------------------------------------------------------------------- 1 | export declare const basic: string; 2 | -------------------------------------------------------------------------------- /app/dist/mixins/basic.js: -------------------------------------------------------------------------------- 1 | export const basic = Behavior({ 2 | methods: { 3 | $emit(name, detail, options) { 4 | this.triggerEvent(name, detail, options); 5 | }, 6 | set(data) { 7 | this.setData(data); 8 | return new Promise((resolve) => wx.nextTick(resolve)); 9 | }, 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /app/dist/mixins/button.d.ts: -------------------------------------------------------------------------------- 1 | export declare const button: string; 2 | -------------------------------------------------------------------------------- /app/dist/mixins/button.js: -------------------------------------------------------------------------------- 1 | export const button = Behavior({ 2 | externalClasses: ['hover-class'], 3 | properties: { 4 | id: String, 5 | lang: String, 6 | businessId: Number, 7 | sessionFrom: String, 8 | sendMessageTitle: String, 9 | sendMessagePath: String, 10 | sendMessageImg: String, 11 | showMessageCard: Boolean, 12 | appParameter: String, 13 | ariaLabel: String, 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /app/dist/mixins/link.d.ts: -------------------------------------------------------------------------------- 1 | export declare const link: string; 2 | -------------------------------------------------------------------------------- /app/dist/mixins/link.js: -------------------------------------------------------------------------------- 1 | export const link = Behavior({ 2 | properties: { 3 | url: String, 4 | linkType: { 5 | type: String, 6 | value: 'navigateTo', 7 | }, 8 | }, 9 | methods: { 10 | jumpLink(urlKey = 'url') { 11 | const url = this.data[urlKey]; 12 | if (url) { 13 | if ( 14 | this.data.linkType === 'navigateTo' && 15 | getCurrentPages().length > 9 16 | ) { 17 | wx.redirectTo({ url }); 18 | } else { 19 | wx[this.data.linkType]({ url }); 20 | } 21 | } 22 | }, 23 | }, 24 | }); 25 | -------------------------------------------------------------------------------- /app/dist/mixins/open-type.d.ts: -------------------------------------------------------------------------------- 1 | export declare const openType: string; 2 | -------------------------------------------------------------------------------- /app/dist/mixins/open-type.js: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | export const openType = Behavior({ 3 | properties: { 4 | openType: String, 5 | }, 6 | methods: { 7 | bindGetUserInfo(event) { 8 | this.$emit('getuserinfo', event.detail); 9 | }, 10 | bindContact(event) { 11 | this.$emit('contact', event.detail); 12 | }, 13 | bindGetPhoneNumber(event) { 14 | this.$emit('getphonenumber', event.detail); 15 | }, 16 | bindError(event) { 17 | this.$emit('error', event.detail); 18 | }, 19 | bindLaunchApp(event) { 20 | this.$emit('launchapp', event.detail); 21 | }, 22 | bindOpenSetting(event) { 23 | this.$emit('opensetting', event.detail); 24 | }, 25 | }, 26 | }); 27 | -------------------------------------------------------------------------------- /app/dist/mixins/page-scroll.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | declare type IPageScrollOption = WechatMiniprogram.Page.IPageScrollOption; 3 | declare type Scroller = ( 4 | this: WechatMiniprogram.Component.TrivialInstance, 5 | event?: IPageScrollOption 6 | ) => void; 7 | export declare const pageScrollMixin: (scroller: Scroller) => string; 8 | export {}; 9 | -------------------------------------------------------------------------------- /app/dist/mixins/touch.d.ts: -------------------------------------------------------------------------------- 1 | export declare const touch: string; 2 | -------------------------------------------------------------------------------- /app/dist/mixins/transition.d.ts: -------------------------------------------------------------------------------- 1 | export declare function transition(showDefaultValue: boolean): string; 2 | -------------------------------------------------------------------------------- /app/dist/nav-bar/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/nav-bar/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/nav-bar/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | 4 | function barStyle(data) { 5 | return style({ 6 | 'z-index': data.zIndex, 7 | 'padding-top': data.safeAreaInsetTop ? data.statusBarHeight + 'px' : 0, 8 | }); 9 | } 10 | 11 | module.exports = { 12 | barStyle: barStyle, 13 | }; 14 | -------------------------------------------------------------------------------- /app/dist/notice-bar/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/notice-bar/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/notice-bar/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function rootStyle(data) { 6 | return style({ 7 | color: data.color, 8 | 'background-color': data.backgroundColor, 9 | background: data.background, 10 | }); 11 | } 12 | 13 | module.exports = { 14 | rootStyle: rootStyle, 15 | }; 16 | -------------------------------------------------------------------------------- /app/dist/notify/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/notify/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-transition": "../transition/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/notify/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 15 | 19 | {{ message }} 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/dist/notify/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function rootStyle(data) { 6 | return style({ 7 | 'z-index': data.zIndex, 8 | top: addUnit(data.top), 9 | }); 10 | } 11 | 12 | function notifyStyle(data) { 13 | return style({ 14 | background: data.background, 15 | color: data.color, 16 | }); 17 | } 18 | 19 | module.exports = { 20 | rootStyle: rootStyle, 21 | notifyStyle: notifyStyle, 22 | }; 23 | -------------------------------------------------------------------------------- /app/dist/notify/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-notify{text-align:center;word-wrap:break-word;padding:6px 15px;padding:var(--notify-padding,6px 15px);font-size:14px;font-size:var(--notify-font-size,14px);line-height:20px;line-height:var(--notify-line-height,20px)}.van-notify__container{position:fixed;top:0;left:0;box-sizing:border-box;width:100%}.van-notify--primary{background-color:#1989fa;background-color:var(--notify-primary-background-color,#1989fa)}.van-notify--success{background-color:#07c160;background-color:var(--notify-success-background-color,#07c160)}.van-notify--danger{background-color:#ee0a24;background-color:var(--notify-danger-background-color,#ee0a24)}.van-notify--warning{background-color:#ff976a;background-color:var(--notify-warning-background-color,#ff976a)} -------------------------------------------------------------------------------- /app/dist/notify/notify.d.ts: -------------------------------------------------------------------------------- 1 | interface NotifyOptions { 2 | type?: 'primary' | 'success' | 'danger' | 'warning'; 3 | color?: string; 4 | zIndex?: number; 5 | top?: number; 6 | message: string; 7 | context?: any; 8 | duration?: number; 9 | selector?: string; 10 | background?: string; 11 | safeAreaInsetTop?: boolean; 12 | onClick?: () => void; 13 | onOpened?: () => void; 14 | onClose?: () => void; 15 | } 16 | declare function Notify(options: NotifyOptions | string): any; 17 | declare namespace Notify { 18 | var clear: (options?: NotifyOptions | undefined) => void; 19 | } 20 | export default Notify; 21 | -------------------------------------------------------------------------------- /app/dist/overlay/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/overlay/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | props: { 4 | show: Boolean, 5 | customStyle: String, 6 | duration: { 7 | type: null, 8 | value: 300, 9 | }, 10 | zIndex: { 11 | type: Number, 12 | value: 1, 13 | }, 14 | }, 15 | methods: { 16 | onClick() { 17 | this.$emit('click'); 18 | }, 19 | // for prevent touchmove 20 | noop() {}, 21 | }, 22 | }); 23 | -------------------------------------------------------------------------------- /app/dist/overlay/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-transition": "../transition/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/overlay/index.wxml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/dist/overlay/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.7);background-color:var(--overlay-background-color,rgba(0,0,0,.7))} -------------------------------------------------------------------------------- /app/dist/panel/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/panel/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | classes: ['header-class', 'footer-class'], 4 | props: { 5 | desc: String, 6 | title: String, 7 | status: String, 8 | useFooterSlot: Boolean, 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /app/dist/panel/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-cell": "../cell/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/panel/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/dist/panel/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-panel{background:#fff;background:var(--panel-background-color,#fff)}.van-panel__header-value{color:#ee0a24;color:var(--panel-header-value-color,#ee0a24)}.van-panel__footer{padding:8px 16px;padding:var(--panel-footer-padding,8px 16px)} -------------------------------------------------------------------------------- /app/dist/picker-column/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/picker-column/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/picker-column/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-picker-column{overflow:hidden;text-align:center;color:#000;color:var(--picker-option-text-color,#000);font-size:16px;font-size:var(--picker-option-font-size,16px)}.van-picker-column__item{padding:0 5px}.van-picker-column__item--selected{font-weight:500;font-weight:var(--font-weight-bold,500);color:#323233;color:var(--picker-option-selected-text-color,#323233)}.van-picker-column__item--disabled{opacity:.3;opacity:var(--picker-option-disabled-opacity,.3)} -------------------------------------------------------------------------------- /app/dist/picker/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/picker/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "picker-column": "../picker-column/index", 5 | "loading": "../loading/index" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/picker/shared.d.ts: -------------------------------------------------------------------------------- 1 | export declare const pickerProps: { 2 | title: StringConstructor; 3 | loading: BooleanConstructor; 4 | showToolbar: BooleanConstructor; 5 | cancelButtonText: { 6 | type: StringConstructor; 7 | value: string; 8 | }; 9 | confirmButtonText: { 10 | type: StringConstructor; 11 | value: string; 12 | }; 13 | visibleItemCount: { 14 | type: NumberConstructor; 15 | value: number; 16 | }; 17 | itemHeight: { 18 | type: NumberConstructor; 19 | value: number; 20 | }; 21 | }; 22 | -------------------------------------------------------------------------------- /app/dist/picker/shared.js: -------------------------------------------------------------------------------- 1 | export const pickerProps = { 2 | title: String, 3 | loading: Boolean, 4 | showToolbar: Boolean, 5 | cancelButtonText: { 6 | type: String, 7 | value: '取消', 8 | }, 9 | confirmButtonText: { 10 | type: String, 11 | value: '确认', 12 | }, 13 | visibleItemCount: { 14 | type: Number, 15 | value: 6, 16 | }, 17 | itemHeight: { 18 | type: Number, 19 | value: 44, 20 | }, 21 | }; 22 | -------------------------------------------------------------------------------- /app/dist/picker/toolbar.wxml: -------------------------------------------------------------------------------- 1 | 2 | 9 | {{ cancelButtonText }} 10 | 11 | {{ 12 | title 13 | }} 14 | 21 | {{ confirmButtonText }} 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/dist/popup/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/popup/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index", 5 | "van-overlay": "../overlay/index" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/popup/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | 4 | function popupStyle(data) { 5 | return style([ 6 | { 7 | 'z-index': data.zIndex, 8 | '-webkit-transition-duration': data.currentDuration + 'ms', 9 | 'transition-duration': data.currentDuration + 'ms', 10 | }, 11 | data.display ? null : 'display: none', 12 | data.customStyle, 13 | ]); 14 | } 15 | 16 | module.exports = { 17 | popupStyle: popupStyle, 18 | }; 19 | -------------------------------------------------------------------------------- /app/dist/progress/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/progress/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/progress/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 12 | 17 | {{ computed.pivotText(pivotText, percentage) }} 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/dist/radio-group/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/radio-group/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/radio-group/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/dist/radio-group/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-radio-group--horizontal{display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap} -------------------------------------------------------------------------------- /app/dist/radio/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/radio/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/rate/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/rate/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/rate/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-rate{display:-webkit-inline-flex;display:inline-flex;-webkit-user-select:none;user-select:none}.van-rate__item{position:relative;padding:0 2px;padding:0 var(--rate-horizontal-padding,2px)}.van-rate__icon{display:block;height:1em;font-size:20px;font-size:var(--rate-icon-size,20px)}.van-rate__icon--half{position:absolute;top:0;width:.5em;overflow:hidden;left:2px;left:var(--rate-horizontal-padding,2px)} -------------------------------------------------------------------------------- /app/dist/row/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/row/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | import { useChildren } from '../common/relation'; 3 | VantComponent({ 4 | relation: useChildren('col', function (target) { 5 | const { gutter } = this.data; 6 | if (gutter) { 7 | target.setData({ gutter }); 8 | } 9 | }), 10 | props: { 11 | gutter: { 12 | type: Number, 13 | observer: 'setGutter', 14 | }, 15 | }, 16 | methods: { 17 | setGutter() { 18 | this.children.forEach((col) => { 19 | col.setData(this.data); 20 | }); 21 | }, 22 | }, 23 | }); 24 | -------------------------------------------------------------------------------- /app/dist/row/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/row/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/dist/row/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function rootStyle(data) { 6 | if (!data.gutter) { 7 | return ''; 8 | } 9 | 10 | return style({ 11 | 'margin-right': addUnit(-data.gutter / 2), 12 | 'margin-left': addUnit(-data.gutter / 2), 13 | }); 14 | } 15 | 16 | module.exports = { 17 | rootStyle: rootStyle, 18 | }; 19 | -------------------------------------------------------------------------------- /app/dist/row/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-row:after{display:table;clear:both;content:""} -------------------------------------------------------------------------------- /app/dist/search/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/search/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-field": "../field/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/share-sheet/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/share-sheet/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-popup": "../popup/index", 5 | "options": "./options" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/share-sheet/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | function isMulti(options) { 3 | if (options == null || options[0] == null) { 4 | return false; 5 | } 6 | 7 | return "Array" === options.constructor && "Array" === options[0].constructor; 8 | } 9 | 10 | module.exports = { 11 | isMulti: isMulti 12 | }; 13 | -------------------------------------------------------------------------------- /app/dist/share-sheet/options.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/share-sheet/options.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | props: { 4 | options: Array, 5 | showBorder: Boolean, 6 | }, 7 | methods: { 8 | onSelect(event) { 9 | const { index } = event.currentTarget.dataset; 10 | const option = this.data.options[index]; 11 | this.$emit('select', Object.assign(Object.assign({}, option), { index })); 12 | }, 13 | }, 14 | }); 15 | -------------------------------------------------------------------------------- /app/dist/share-sheet/options.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/share-sheet/options.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 15 | {{ item.name }} 16 | 17 | {{ item.description }} 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/dist/share-sheet/options.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var PRESET_ICONS = ['qq', 'weibo', 'wechat', 'link', 'qrcode', 'poster']; 3 | 4 | function getIconURL(icon) { 5 | if (PRESET_ICONS.indexOf(icon) !== -1) { 6 | return 'https://img.yzcdn.cn/vant/share-icon-' + icon + '.png'; 7 | } 8 | 9 | return icon; 10 | } 11 | 12 | module.exports = { 13 | getIconURL: getIconURL, 14 | }; 15 | -------------------------------------------------------------------------------- /app/dist/sidebar-item/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/sidebar-item/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | import { useParent } from '../common/relation'; 3 | VantComponent({ 4 | classes: ['active-class', 'disabled-class'], 5 | relation: useParent('sidebar'), 6 | props: { 7 | dot: Boolean, 8 | badge: null, 9 | info: null, 10 | title: String, 11 | disabled: Boolean, 12 | }, 13 | methods: { 14 | onClick() { 15 | const { parent } = this; 16 | if (!parent || this.data.disabled) { 17 | return; 18 | } 19 | const index = parent.children.indexOf(this); 20 | parent.setActive(index).then(() => { 21 | this.$emit('click', index); 22 | parent.$emit('change', index); 23 | }); 24 | }, 25 | setActive(selected) { 26 | return this.setData({ selected }); 27 | }, 28 | }, 29 | }); 30 | -------------------------------------------------------------------------------- /app/dist/sidebar-item/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-info": "../info/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/sidebar-item/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 15 | {{ title }} 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/dist/sidebar/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/sidebar/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/sidebar/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/dist/sidebar/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-sidebar{width:80px;width:var(--sidebar-width,80px)} -------------------------------------------------------------------------------- /app/dist/skeleton/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/skeleton/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": {} 4 | } 5 | -------------------------------------------------------------------------------- /app/dist/slider/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/slider/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/slider/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function barStyle(barHeight, activeColor) { 6 | return style({ 7 | height: addUnit(barHeight), 8 | background: activeColor, 9 | }); 10 | } 11 | 12 | module.exports = { 13 | barStyle: barStyle, 14 | }; 15 | -------------------------------------------------------------------------------- /app/dist/stepper/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/stepper/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/stepper/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function buttonStyle(data) { 6 | return style({ 7 | width: addUnit(data.buttonSize), 8 | height: addUnit(data.buttonSize), 9 | }); 10 | } 11 | 12 | function inputStyle(data) { 13 | return style({ 14 | width: addUnit(data.inputWidth), 15 | height: addUnit(data.buttonSize), 16 | }); 17 | } 18 | 19 | module.exports = { 20 | buttonStyle: buttonStyle, 21 | inputStyle: inputStyle, 22 | }; 23 | -------------------------------------------------------------------------------- /app/dist/steps/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/steps/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | import { GREEN, GRAY_DARK } from '../common/color'; 3 | VantComponent({ 4 | classes: ['desc-class'], 5 | props: { 6 | icon: String, 7 | steps: Array, 8 | active: Number, 9 | direction: { 10 | type: String, 11 | value: 'horizontal', 12 | }, 13 | activeColor: { 14 | type: String, 15 | value: GREEN, 16 | }, 17 | inactiveColor: { 18 | type: String, 19 | value: GRAY_DARK, 20 | }, 21 | activeIcon: { 22 | type: String, 23 | value: 'checked', 24 | }, 25 | inactiveIcon: String, 26 | }, 27 | methods: { 28 | onClick(event) { 29 | const { index } = event.currentTarget.dataset; 30 | this.$emit('click-step', index); 31 | }, 32 | }, 33 | }); 34 | -------------------------------------------------------------------------------- /app/dist/steps/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/sticky/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/sticky/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/sticky/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/dist/sticky/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function wrapStyle(data) { 6 | return style({ 7 | transform: data.transform 8 | ? 'translate3d(0, ' + data.transform + 'px, 0)' 9 | : '', 10 | top: data.fixed ? addUnit(data.offsetTop) : '', 11 | 'z-index': data.zIndex, 12 | }); 13 | } 14 | 15 | function containerStyle(data) { 16 | return style({ 17 | height: data.fixed ? addUnit(data.height) : '', 18 | 'z-index': data.zIndex, 19 | }); 20 | } 21 | 22 | module.exports = { 23 | wrapStyle: wrapStyle, 24 | containerStyle: containerStyle, 25 | }; 26 | -------------------------------------------------------------------------------- /app/dist/sticky/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-sticky{position:relative}.van-sticky-wrap--fixed{position:fixed;right:0;left:0} -------------------------------------------------------------------------------- /app/dist/submit-bar/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/submit-bar/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-button": "../button/index", 5 | "van-icon": "../icon/index" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/swipe-cell/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/swipe-cell/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/swipe-cell/index.wxml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/dist/swipe-cell/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-swipe-cell{position:relative;overflow:hidden}.van-swipe-cell__left,.van-swipe-cell__right{position:absolute;top:0;height:100%}.van-swipe-cell__left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.van-swipe-cell__right{right:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)} -------------------------------------------------------------------------------- /app/dist/switch/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/switch/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-loading": "../loading/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/switch/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/dist/switch/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function rootStyle(data) { 6 | var currentColor = data.checked ? data.activeColor : data.inactiveColor; 7 | 8 | return style({ 9 | 'font-size': addUnit(data.size), 10 | 'background-color': currentColor, 11 | }); 12 | } 13 | 14 | var BLUE = '#1989fa'; 15 | var GRAY_DARK = '#969799'; 16 | 17 | function loadingColor(data) { 18 | return data.checked 19 | ? data.activeColor || BLUE 20 | : data.inactiveColor || GRAY_DARK; 21 | } 22 | 23 | module.exports = { 24 | rootStyle: rootStyle, 25 | loadingColor: loadingColor, 26 | }; 27 | -------------------------------------------------------------------------------- /app/dist/tab/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/tab/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/tab/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/dist/tab/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';:host{-webkit-flex-shrink:0;flex-shrink:0;width:100%}.van-tab__pane,:host{box-sizing:border-box}.van-tab__pane{overflow-y:auto;-webkit-overflow-scrolling:touch}.van-tab__pane--active{height:auto}.van-tab__pane--inactive{height:0;overflow:visible} -------------------------------------------------------------------------------- /app/dist/tabbar-item/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/tabbar-item/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index", 5 | "van-info": "../info/index" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/tabbar-item/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/dist/tabbar-item/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';:host{-webkit-flex:1;flex:1}.van-tabbar-item{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;height:100%;color:#646566;color:var(--tabbar-item-text-color,#646566);font-size:12px;font-size:var(--tabbar-item-font-size,12px);line-height:1;line-height:var(--tabbar-item-line-height,1)}.van-tabbar-item__icon{position:relative;margin-bottom:4px;margin-bottom:var(--tabbar-item-margin-bottom,4px);font-size:22px;font-size:var(--tabbar-item-icon-size,22px)}.van-tabbar-item__icon__inner{display:block;min-width:1em}.van-tabbar-item--active{color:#1989fa;color:var(--tabbar-item-active-color,#1989fa)}.van-tabbar-item__info{margin-top:2px} -------------------------------------------------------------------------------- /app/dist/tabbar/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/tabbar/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/tabbar/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/dist/tabbar/index.wxss: -------------------------------------------------------------------------------- 1 | @import '../common/index.wxss';.van-tabbar{display:-webkit-flex;display:flex;box-sizing:initial;width:100%;height:50px;height:var(--tabbar-height,50px);background-color:#fff;background-color:var(--tabbar-background-color,#fff)}.van-tabbar--fixed{position:fixed;bottom:0;left:0}.van-tabbar--safe{padding-bottom:env(safe-area-inset-bottom)} -------------------------------------------------------------------------------- /app/dist/tabs/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/tabs/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-info": "../info/index", 5 | "van-sticky": "../sticky/index" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/tag/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/tag/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | props: { 4 | size: String, 5 | mark: Boolean, 6 | color: String, 7 | plain: Boolean, 8 | round: Boolean, 9 | textColor: String, 10 | type: { 11 | type: String, 12 | value: 'default', 13 | }, 14 | closeable: Boolean, 15 | }, 16 | methods: { 17 | onClose() { 18 | this.$emit('close'); 19 | }, 20 | }, 21 | }); 22 | -------------------------------------------------------------------------------- /app/dist/tag/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/dist/tag/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 15 | 16 | -------------------------------------------------------------------------------- /app/dist/tag/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | 4 | function rootStyle(data) { 5 | return style({ 6 | 'background-color': data.plain ? '' : data.color, 7 | color: data.textColor || data.plain ? data.textColor || data.color : '', 8 | }); 9 | } 10 | 11 | module.exports = { 12 | rootStyle: rootStyle, 13 | }; 14 | -------------------------------------------------------------------------------- /app/dist/toast/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/toast/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | VantComponent({ 3 | props: { 4 | show: Boolean, 5 | mask: Boolean, 6 | message: String, 7 | forbidClick: Boolean, 8 | zIndex: { 9 | type: Number, 10 | value: 1000, 11 | }, 12 | type: { 13 | type: String, 14 | value: 'text', 15 | }, 16 | loadingType: { 17 | type: String, 18 | value: 'circular', 19 | }, 20 | position: { 21 | type: String, 22 | value: 'middle', 23 | }, 24 | }, 25 | methods: { 26 | // for prevent touchmove 27 | noop() {}, 28 | }, 29 | }); 30 | -------------------------------------------------------------------------------- /app/dist/toast/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index", 5 | "van-loading": "../loading/index", 6 | "van-overlay": "../overlay/index", 7 | "van-transition": "../transition/index" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/dist/transition/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/transition/index.js: -------------------------------------------------------------------------------- 1 | import { VantComponent } from '../common/component'; 2 | import { transition } from '../mixins/transition'; 3 | VantComponent({ 4 | classes: [ 5 | 'enter-class', 6 | 'enter-active-class', 7 | 'enter-to-class', 8 | 'leave-class', 9 | 'leave-active-class', 10 | 'leave-to-class', 11 | ], 12 | mixins: [transition(true)], 13 | }); 14 | -------------------------------------------------------------------------------- /app/dist/transition/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true 3 | } 4 | -------------------------------------------------------------------------------- /app/dist/transition/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/dist/transition/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | 4 | function rootStyle(data) { 5 | return style([ 6 | { 7 | '-webkit-transition-duration': data.currentDuration + 'ms', 8 | 'transition-duration': data.currentDuration + 'ms', 9 | }, 10 | data.display ? null : 'display: none', 11 | data.customStyle, 12 | ]); 13 | } 14 | 15 | module.exports = { 16 | rootStyle: rootStyle, 17 | }; 18 | -------------------------------------------------------------------------------- /app/dist/tree-select/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/tree-select/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index", 5 | "van-sidebar": "../sidebar/index", 6 | "van-sidebar-item": "../sidebar-item/index" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/dist/tree-select/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var array = require('../wxs/array.wxs'); 3 | 4 | function isActive (activeList, itemId) { 5 | if (array.isArray(activeList)) { 6 | return activeList.indexOf(itemId) > -1; 7 | } 8 | 9 | return activeList === itemId; 10 | } 11 | 12 | module.exports.isActive = isActive; 13 | -------------------------------------------------------------------------------- /app/dist/uploader/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /app/dist/uploader/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "component": true, 3 | "usingComponents": { 4 | "van-icon": "../icon/index", 5 | "van-loading": "../loading/index" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/dist/uploader/index.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var style = require('../wxs/style.wxs'); 3 | var addUnit = require('../wxs/add-unit.wxs'); 4 | 5 | function sizeStyle(data) { 6 | return style({ 7 | width: addUnit(data.previewSize), 8 | height: addUnit(data.previewSize), 9 | }); 10 | } 11 | 12 | module.exports = { 13 | sizeStyle: sizeStyle, 14 | }; 15 | -------------------------------------------------------------------------------- /app/dist/uploader/shared.d.ts: -------------------------------------------------------------------------------- 1 | export declare const chooseImageProps: { 2 | sizeType: { 3 | type: ArrayConstructor; 4 | value: string[]; 5 | }; 6 | capture: { 7 | type: ArrayConstructor; 8 | value: string[]; 9 | }; 10 | }; 11 | export declare const chooseVideoProps: { 12 | capture: { 13 | type: ArrayConstructor; 14 | value: string[]; 15 | }; 16 | compressed: { 17 | type: BooleanConstructor; 18 | value: boolean; 19 | }; 20 | maxDuration: { 21 | type: NumberConstructor; 22 | value: number; 23 | }; 24 | camera: { 25 | type: StringConstructor; 26 | value: string; 27 | }; 28 | }; 29 | -------------------------------------------------------------------------------- /app/dist/uploader/shared.js: -------------------------------------------------------------------------------- 1 | // props for choose image 2 | export const chooseImageProps = { 3 | sizeType: { 4 | type: Array, 5 | value: ['original', 'compressed'], 6 | }, 7 | capture: { 8 | type: Array, 9 | value: ['album', 'camera'], 10 | }, 11 | }; 12 | // props for choose video 13 | export const chooseVideoProps = { 14 | capture: { 15 | type: Array, 16 | value: ['album', 'camera'], 17 | }, 18 | compressed: { 19 | type: Boolean, 20 | value: true, 21 | }, 22 | maxDuration: { 23 | type: Number, 24 | value: 60, 25 | }, 26 | camera: { 27 | type: String, 28 | value: 'back', 29 | }, 30 | }; 31 | -------------------------------------------------------------------------------- /app/dist/uploader/utils.d.ts: -------------------------------------------------------------------------------- 1 | export interface File { 2 | url: string; 3 | size?: number; 4 | name?: string; 5 | type: string; 6 | duration?: number; 7 | time?: number; 8 | isImage?: boolean; 9 | isVideo?: boolean; 10 | } 11 | export declare function isImageFile(item: File): boolean; 12 | export declare function isVideoFile(item: File): boolean; 13 | export declare function chooseFile({ 14 | accept, 15 | multiple, 16 | capture, 17 | compressed, 18 | maxDuration, 19 | sizeType, 20 | camera, 21 | maxCount, 22 | }: { 23 | accept: any; 24 | multiple: any; 25 | capture: any; 26 | compressed: any; 27 | maxDuration: any; 28 | sizeType: any; 29 | camera: any; 30 | maxCount: any; 31 | }): Promise; 32 | -------------------------------------------------------------------------------- /app/dist/wxs/add-unit.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var REGEXP = getRegExp('^-?\d+(\.\d+)?$'); 3 | 4 | function addUnit(value) { 5 | if (value == null) { 6 | return undefined; 7 | } 8 | 9 | return REGEXP.test('' + value) ? value + 'px' : value; 10 | } 11 | 12 | module.exports = addUnit; 13 | -------------------------------------------------------------------------------- /app/dist/wxs/array.wxs: -------------------------------------------------------------------------------- 1 | function isArray(array) { 2 | return array && array.constructor === 'Array'; 3 | } 4 | 5 | module.exports.isArray = isArray; 6 | -------------------------------------------------------------------------------- /app/dist/wxs/object.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var REGEXP = getRegExp('{|}|"', 'g'); 3 | 4 | function keys(obj) { 5 | return JSON.stringify(obj) 6 | .replace(REGEXP, '') 7 | .split(',') 8 | .map(function(item) { 9 | return item.split(':')[0]; 10 | }); 11 | } 12 | 13 | module.exports.keys = keys; 14 | -------------------------------------------------------------------------------- /app/dist/wxs/style.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var object = require('./object.wxs'); 3 | var array = require('./array.wxs'); 4 | 5 | function style(styles) { 6 | if (array.isArray(styles)) { 7 | return styles 8 | .filter(function (item) { 9 | return item != null && item !== ''; 10 | }) 11 | .map(function (item) { 12 | return style(item); 13 | }) 14 | .join(';'); 15 | } 16 | 17 | if ('Object' === styles.constructor) { 18 | return object 19 | .keys(styles) 20 | .filter(function (key) { 21 | return styles[key] != null && styles[key] !== ''; 22 | }) 23 | .map(function (key) { 24 | return [key, [styles[key]]].join(':'); 25 | }) 26 | .join(';'); 27 | } 28 | 29 | return styles; 30 | } 31 | 32 | module.exports = style; 33 | -------------------------------------------------------------------------------- /app/dist/wxs/utils.wxs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var bem = require('./bem.wxs'); 3 | var memoize = require('./memoize.wxs'); 4 | var addUnit = require('./add-unit.wxs'); 5 | 6 | module.exports = { 7 | bem: memoize(bem), 8 | memoize: memoize, 9 | addUnit: addUnit 10 | }; 11 | -------------------------------------------------------------------------------- /app/img/goodscar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/img/goodscar.png -------------------------------------------------------------------------------- /app/img/goodscar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/img/goodscar1.png -------------------------------------------------------------------------------- /app/img/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/img/home.png -------------------------------------------------------------------------------- /app/img/home1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/img/home1.png -------------------------------------------------------------------------------- /app/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/img/logo.png -------------------------------------------------------------------------------- /app/img/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/img/message.png -------------------------------------------------------------------------------- /app/img/message1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/img/message1.png -------------------------------------------------------------------------------- /app/img/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/img/my.png -------------------------------------------------------------------------------- /app/img/my1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/app/img/my1.png -------------------------------------------------------------------------------- /app/pages/address/add/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/address/add/index.wxss: -------------------------------------------------------------------------------- 1 | page { 2 | padding-top: 50px; 3 | padding-bottom:170rpx; 4 | } 5 | .cu-custom{ 6 | position: absolute; 7 | top: 0px; 8 | width: 100%; 9 | } 10 | .box{ 11 | position: absolute; 12 | top: 64px; 13 | width: 100%; 14 | } 15 | .cu-custom .cu-bar{ 16 | padding-right:inherit; 17 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 18 | } 19 | .bg-gradual-green { 20 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 21 | } 22 | .text-green, .line-green, .lines-green { 23 | color:#e45c5c; 24 | } 25 | .cu-form-group picker .picker{ 26 | text-align: left; 27 | } 28 | 29 | .canui-foor-fixed{ 30 | text-align:center; 31 | bottom:20rpx; 32 | background:#f1f1f1; 33 | } 34 | -------------------------------------------------------------------------------- /app/pages/address/edit/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-uploader": "../../../dist/uploader/index", 13 | "van-radio": "../../../dist/radio/index", 14 | "van-radio-group": "../../../dist/radio-group/index", 15 | "van-datetime-picker": "../../../dist/datetime-picker/index", 16 | "van-calendar": "../../../dist/calendar/index" 17 | } 18 | } -------------------------------------------------------------------------------- /app/pages/address/edit/index.wxss: -------------------------------------------------------------------------------- 1 | page { 2 | padding-top: 50px; 3 | padding-bottom:170rpx; 4 | } 5 | .cu-custom{ 6 | position: absolute; 7 | top: 0px; 8 | width: 100%; 9 | } 10 | .box{ 11 | position: absolute; 12 | top: 64px; 13 | width: 100%; 14 | } 15 | .cu-custom .cu-bar{ 16 | padding-right:inherit; 17 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 18 | } 19 | .bg-gradual-green { 20 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 21 | } 22 | .text-green, .line-green, .lines-green { 23 | color:#e45c5c; 24 | } 25 | -------------------------------------------------------------------------------- /app/pages/auth/auth.js: -------------------------------------------------------------------------------- 1 | const app = getApp(); 2 | Page({ 3 | data: { 4 | StatusBar: app.globalData.StatusBar, 5 | CustomBar: app.globalData.CustomBar, 6 | ColorList: app.globalData.ColorList, 7 | }, 8 | onGetUserInfo: function (e) { 9 | if (!this.logged && e.detail.userInfo) { 10 | app.globalData.userInfo = e.detail.userInfo; 11 | wx.switchTab({ 12 | url: '/pages/index/index', 13 | }) 14 | } 15 | } 16 | }); 17 | -------------------------------------------------------------------------------- /app/pages/auth/auth.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /app/pages/auth/auth.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 易汇天下 4 | v0.0.1 5 | 6 | 7 | 重庆古蔓文化传播有限公司 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/pages/auth/auth.wxss: -------------------------------------------------------------------------------- 1 | .UCenter-bg { 2 | background-image: url(https://yhtx.itianc.com/wxxcx/57b6c21fa72901.jpg); 3 | background-size: cover; 4 | height: 700rpx; 5 | display: flex; 6 | justify-content: center; 7 | overflow: hidden; 8 | position: relative; 9 | flex-direction: column; 10 | align-items: center; 11 | color: #fff; 12 | font-weight: 300; 13 | text-shadow: 0 0 3px rgba(0,0,0,0.3); 14 | } 15 | .UCenter-bg::after { 16 | content: ""; 17 | position: absolute; 18 | width: 100vw; 19 | height: 50vw; 20 | background-color: #f1f1f1; 21 | transform: rotate(-10deg) scale(2,2); 22 | bottom: -60vw; 23 | left: 0; 24 | right: 0; 25 | margin: auto; 26 | 27 | } 28 | .UCenter-bg text{ 29 | opacity: 0.8; 30 | } 31 | .UCenter-bg image { 32 | width: 250rpx; 33 | height: 250rpx; 34 | } -------------------------------------------------------------------------------- /app/pages/coupon/add/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-uploader": "../../../dist/uploader/index", 13 | "van-radio": "../../../dist/radio/index", 14 | "van-radio-group": "../../../dist/radio-group/index" 15 | } 16 | } -------------------------------------------------------------------------------- /app/pages/coupon/detail/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-tag": "../../../dist/tag/index", 4 | "van-row": "../../../dist/row/index", 5 | "van-col": "../../../dist/col/index" 6 | } 7 | } -------------------------------------------------------------------------------- /app/pages/coupon/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-row": "../../../dist/row/index", 4 | "van-col": "../../../dist/col/index" 5 | } 6 | } -------------------------------------------------------------------------------- /app/pages/goods/add/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-uploader": "../../../dist/uploader/index", 13 | "van-picker": "../../../dist/picker/index", 14 | "van-radio": "../../../dist/radio/index", 15 | "van-radio-group": "../../../dist/radio-group/index" 16 | } 17 | } -------------------------------------------------------------------------------- /app/pages/goods/edit/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-uploader": "../../../dist/uploader/index", 13 | "van-picker": "../../../dist/picker/index", 14 | "van-radio": "../../../dist/radio/index", 15 | "van-radio-group": "../../../dist/radio-group/index" 16 | } 17 | } -------------------------------------------------------------------------------- /app/pages/home/bulletin/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/home/doc/index.js: -------------------------------------------------------------------------------- 1 | const app = getApp(); 2 | 3 | Page({ 4 | data: { 5 | StatusBar: app.globalData.StatusBar, 6 | CustomBar: app.globalData.CustomBar, 7 | hidden: true, 8 | }, 9 | onLoad: function (option) { 10 | console.log(option.id); 11 | wx.getSetting({ 12 | success: res => { 13 | if (!res.authSetting['scope.userInfo']) { 14 | wx.redirectTo({ 15 | url: '/pages/auth/auth' 16 | }) 17 | } 18 | } 19 | }); 20 | } 21 | 22 | }); 23 | -------------------------------------------------------------------------------- /app/pages/home/doc/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/home/doc/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 穿承 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/pages/home/doc/index.wxss: -------------------------------------------------------------------------------- 1 | page { 2 | padding-top: 50px; 3 | padding-bottom:170rpx; 4 | } 5 | .cu-custom{ 6 | position: absolute; 7 | top: 0px; 8 | width: 100%; 9 | } 10 | .box{ 11 | position: absolute; 12 | top: 64px; 13 | width: 100%; 14 | } 15 | .cu-custom .cu-bar{ 16 | padding-right:inherit; 17 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 18 | } 19 | .bg-gradual-green { 20 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 21 | } 22 | .text-green, .line-green, .lines-green { 23 | color:#e45c5c; 24 | } 25 | -------------------------------------------------------------------------------- /app/pages/home/groom/index.js: -------------------------------------------------------------------------------- 1 | const app = getApp(); 2 | let http = require('../../../utils/request') 3 | Page({ 4 | data: { 5 | StatusBar: app.globalData.StatusBar, 6 | CustomBar: app.globalData.CustomBar, 7 | hidden: true, 8 | shopList: [] 9 | }, 10 | onLoad: function (option) { 11 | this.getShopList() 12 | }, 13 | shopDeatil(e) { 14 | wx.navigateTo({ 15 | url: '/pages/shop/index/index?shopId='+e.currentTarget.dataset.shopid+'' 16 | }); 17 | }, 18 | getShopList() { 19 | http.get('selShopDetailList').then((r) => { 20 | r.data.forEach(element => { 21 | if (element.goods) { 22 | element.goods.forEach(item => { 23 | item.image = item.images.split(',')[0] 24 | }); 25 | } 26 | }); 27 | this.setData({ 28 | shopList: r.data 29 | }) 30 | }) 31 | } 32 | }); 33 | -------------------------------------------------------------------------------- /app/pages/home/groom/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/home/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/home/joinus/index.js: -------------------------------------------------------------------------------- 1 | const app = getApp(); 2 | 3 | Page({ 4 | data: { 5 | StatusBar: app.globalData.StatusBar, 6 | CustomBar: app.globalData.CustomBar, 7 | hidden: true, 8 | region: ['重庆市', '重庆市', '江北区'], 9 | }, 10 | onLoad: function (option) { 11 | console.log(option.id); 12 | wx.getSetting({ 13 | success: res => { 14 | if (!res.authSetting['scope.userInfo']) { 15 | wx.redirectTo({ 16 | url: '/pages/auth/auth' 17 | }) 18 | } 19 | } 20 | }); 21 | }, 22 | RegionChange: function (e) { 23 | this.setData({ 24 | region: e.detail.value 25 | }) 26 | }, 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /app/pages/home/joinus/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/home/joinus/index.wxss: -------------------------------------------------------------------------------- 1 | page { 2 | padding-top: 50px; 3 | padding-bottom:170rpx; 4 | } 5 | .cu-custom{ 6 | position: absolute; 7 | top: 0px; 8 | width: 100%; 9 | } 10 | .box{ 11 | position: absolute; 12 | top: 64px; 13 | width: 100%; 14 | } 15 | .cu-custom .cu-bar{ 16 | padding-right:inherit; 17 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 18 | } 19 | .bg-gradual-green { 20 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 21 | } 22 | .text-green, .line-green, .lines-green { 23 | color:#e45c5c; 24 | } 25 | -------------------------------------------------------------------------------- /app/pages/home/search/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index" 4 | } 5 | } -------------------------------------------------------------------------------- /app/pages/home/search/index.wxss: -------------------------------------------------------------------------------- 1 | page { 2 | padding-top: 50px; 3 | padding-bottom:170rpx; 4 | } 5 | .cu-custom{ 6 | position: absolute; 7 | top: 0px; 8 | width: 100%; 9 | } 10 | .cu-custom .cu-bar{ 11 | padding-right:inherit; 12 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 13 | } 14 | .canui-goods-nav{ 15 | position: relative; 16 | top: 70px; 17 | } 18 | .canui-goods-list{ 19 | position: relative; 20 | top: 71px; 21 | } 22 | -------------------------------------------------------------------------------- /app/pages/order/album/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-icon": "../../../dist/icon/index", 13 | "van-row": "../../../dist/row/index", 14 | "van-col": "../../../dist/col/index" 15 | } 16 | } -------------------------------------------------------------------------------- /app/pages/order/detail/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/order/detail/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | pages/order/detail/index.wxml 3 | -------------------------------------------------------------------------------- /app/pages/order/detail/index.wxss: -------------------------------------------------------------------------------- 1 | /* pages/order/detail/index.wxss */ -------------------------------------------------------------------------------- /app/pages/order/details/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/order/evaluate/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-icon": "../../../dist/icon/index", 13 | "van-row": "../../../dist/row/index", 14 | "van-col": "../../../dist/col/index" 15 | } 16 | } -------------------------------------------------------------------------------- /app/pages/order/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-icon": "../../../dist/icon/index", 13 | "van-row": "../../../dist/row/index", 14 | "van-col": "../../../dist/col/index" 15 | } 16 | } -------------------------------------------------------------------------------- /app/pages/order/music/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-icon": "../../../dist/icon/index", 13 | "van-row": "../../../dist/row/index", 14 | "van-col": "../../../dist/col/index" 15 | } 16 | } -------------------------------------------------------------------------------- /app/pages/order/music/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 歌曲列表 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/pages/order/play/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-icon": "../../../dist/icon/index", 13 | "van-row": "../../../dist/row/index", 14 | "van-col": "../../../dist/col/index" 15 | } 16 | } -------------------------------------------------------------------------------- /app/pages/scar/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/scar/order/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/shop/goods/details.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-tag": "../../../dist/tag/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-icon": "../../../dist/icon/index" 13 | } 14 | } -------------------------------------------------------------------------------- /app/pages/shop/index/details.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/shop/index/details.wxss: -------------------------------------------------------------------------------- 1 | page { 2 | padding-top: 50px; 3 | padding-bottom:170rpx; 4 | } 5 | .cu-custom{ 6 | position: absolute; 7 | top: 0px; 8 | width: 100%; 9 | } 10 | .cu-custom .cu-bar{ 11 | padding-right:inherit; 12 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 13 | } 14 | .box{ 15 | position: absolute; 16 | top: 64px; 17 | width: 100%; 18 | } 19 | .cu-list.menu-avatar>.canui-jsd{ 20 | padding-left:30rpx; 21 | } 22 | -------------------------------------------------------------------------------- /app/pages/shop/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-tag": "../../../dist/tag/index", 4 | "van-row": "../../../dist/row/index", 5 | "van-col": "../../../dist/col/index", 6 | "van-button": "../../../dist/button/index" 7 | } 8 | } -------------------------------------------------------------------------------- /app/pages/shop/search/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/shop/search/index.wxss: -------------------------------------------------------------------------------- 1 | page { 2 | padding-top: 50px; 3 | padding-bottom:170rpx; 4 | } 5 | .cu-custom{ 6 | position: absolute; 7 | top: 0px; 8 | width: 100%; 9 | } 10 | .cu-custom .cu-bar{ 11 | padding-right:inherit; 12 | background-image:linear-gradient(45deg, #ed1c24, #ed1c24); 13 | } 14 | .canui-goods-list{ 15 | position: relative; 16 | top: 70px; 17 | } 18 | -------------------------------------------------------------------------------- /app/pages/user/address/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index" 4 | } 5 | } -------------------------------------------------------------------------------- /app/pages/user/alert/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-cell": "../../../dist/cell/index", 5 | "van-cell-group": "../../../dist/cell-group/index", 6 | "van-row": "../../../dist/row/index", 7 | "van-col": "../../../dist/col/index" 8 | } 9 | } -------------------------------------------------------------------------------- /app/pages/user/audit/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index", 4 | "van-panel": "../../../dist/panel/index", 5 | "van-button": "../../../dist/button/index", 6 | "van-popup": "../../../dist/popup/index", 7 | "van-rate": "../../../dist/rate/index", 8 | "van-field": "../../../dist/field/index", 9 | "van-cell": "../../../dist/cell/index", 10 | "van-cell-group": "../../../dist/cell-group/index", 11 | "van-notify": "../../../dist/notify/index", 12 | "van-uploader": "../../../dist/uploader/index" 13 | } 14 | } -------------------------------------------------------------------------------- /app/pages/user/detail/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/user/goods/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index" 4 | } 5 | } -------------------------------------------------------------------------------- /app/pages/user/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/user/message/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "enablePullDownRefresh": true, 3 | "backgroundTextStyle": "dark", 4 | "usingComponents": { 5 | "van-empty": "../../../dist/empty/index" 6 | } 7 | } -------------------------------------------------------------------------------- /app/pages/user/post/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | "van-empty": "../../../dist/empty/index" 4 | } 5 | } -------------------------------------------------------------------------------- /app/pages/vipcard/details/index.js: -------------------------------------------------------------------------------- 1 | const app = getApp(); 2 | Page({ 3 | data: { 4 | StatusBar: app.globalData.StatusBar, 5 | CustomBar: app.globalData.CustomBar, 6 | TabbarBot: app.globalData.tabbar_bottom 7 | }, 8 | onLoad: function (options) { 9 | let that = this; 10 | } 11 | 12 | }); 13 | -------------------------------------------------------------------------------- /app/pages/vipcard/details/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/pages/vipcard/index/index.js: -------------------------------------------------------------------------------- 1 | const app = getApp(); 2 | Page({ 3 | data: { 4 | StatusBar: app.globalData.StatusBar, 5 | CustomBar: app.globalData.CustomBar, 6 | TabbarBot: app.globalData.tabbar_bottom, 7 | TabCur: 1,scrollLeft:0, 8 | SortMenu: [{id:1,name:"使用中"},{id:2,name:"已失效"}] 9 | }, 10 | onLoad: function (options) { 11 | let that = this; 12 | }, 13 | tabSelect(e) { 14 | console.log(e.currentTarget.dataset.id); 15 | this.setData({ 16 | TabCur: e.currentTarget.dataset.id, 17 | scrollLeft: (e.currentTarget.dataset.id-1)*60 18 | }) 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /app/pages/vipcard/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {} 3 | } -------------------------------------------------------------------------------- /app/sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", 3 | "rules": [{ 4 | "action": "allow", 5 | "page": "*" 6 | }] 7 | } -------------------------------------------------------------------------------- /app/utils/util.js: -------------------------------------------------------------------------------- 1 | const formatTime = date => { 2 | const year = date.getFullYear() 3 | const month = date.getMonth() + 1 4 | const day = date.getDate() 5 | const hour = date.getHours() 6 | const minute = date.getMinutes() 7 | const second = date.getSeconds() 8 | 9 | return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') 10 | } 11 | 12 | const formatNumber = n => { 13 | n = n.toString() 14 | return n[1] ? n : '0' + n 15 | } 16 | 17 | module.exports = { 18 | formatTime: formatTime 19 | } 20 | -------------------------------------------------------------------------------- /backend/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Example user template template 3 | ### Example user template 4 | 5 | # IntelliJ project files 6 | .idea 7 | *.iml 8 | out 9 | gen 10 | /target/ 11 | /log/ 12 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/FebsApplication.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs; 2 | 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.boot.builder.SpringApplicationBuilder; 5 | import org.springframework.scheduling.annotation.EnableAsync; 6 | import org.springframework.scheduling.annotation.EnableScheduling; 7 | import org.springframework.transaction.annotation.EnableTransactionManagement; 8 | 9 | @SpringBootApplication 10 | @EnableTransactionManagement 11 | @EnableScheduling 12 | @EnableAsync 13 | public class FebsApplication { 14 | 15 | public static void main(String[] args) { 16 | new SpringApplicationBuilder(FebsApplication.class) 17 | .run(args); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/annotation/IsCron.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.annotation; 2 | 3 | import cc.mrbird.febs.common.validator.CronValidator; 4 | 5 | import javax.validation.Constraint; 6 | import javax.validation.Payload; 7 | import java.lang.annotation.ElementType; 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | import java.lang.annotation.Target; 11 | 12 | @Target({ElementType.FIELD}) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Constraint(validatedBy = CronValidator.class) 15 | public @interface IsCron { 16 | 17 | String message(); 18 | 19 | Class[] groups() default {}; 20 | 21 | Class[] payload() default {}; 22 | } 23 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/annotation/Limit.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.annotation; 2 | 3 | import cc.mrbird.febs.common.domain.LimitType; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | @Target(ElementType.METHOD) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface Limit { 13 | 14 | // 资源名称,用于描述接口功能 15 | String name() default ""; 16 | 17 | // 资源 key 18 | String key() default ""; 19 | 20 | // key prefix 21 | String prefix() default ""; 22 | 23 | // 时间的,单位秒 24 | int period(); 25 | 26 | // 限制访问次数 27 | int count(); 28 | 29 | // 限制类型 30 | LimitType limitType() default LimitType.CUSTOMER; 31 | } 32 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/annotation/Log.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.METHOD) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface Log { 11 | String value() default ""; 12 | } 13 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/config/MyWebMvcConfigurerAdapter.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 6 | 7 | @Configuration 8 | public class MyWebMvcConfigurerAdapter implements WebMvcConfigurer { 9 | 10 | @Override 11 | public void addResourceHandlers(ResourceHandlerRegistry registry) { 12 | registry.addResourceHandler("/imagesWeb/**").addResourceLocations("file:G:/Project/20240725在线音乐播放/db/"); 13 | WebMvcConfigurer.super.addResourceHandlers(registry); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/config/MybatisPlusConfig.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.config; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | @Configuration 9 | @MapperScan(value = {"cc.mrbird.febs.*.dao"}) 10 | public class MybatisPlusConfig { 11 | 12 | /** 13 | * 分页插件 14 | */ 15 | @Bean 16 | public PaginationInterceptor paginationInterceptor() { 17 | return new PaginationInterceptor(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/controller/BaseController.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.controller; 2 | 3 | import com.baomidou.mybatisplus.core.metadata.IPage; 4 | 5 | import java.util.HashMap; 6 | import java.util.Map; 7 | 8 | public class BaseController { 9 | 10 | protected Map getDataTable(IPage pageInfo) { 11 | Map rspData = new HashMap<>(); 12 | rspData.put("rows", pageInfo.getRecords()); 13 | rspData.put("total", pageInfo.getTotal()); 14 | return rspData; 15 | } 16 | 17 | 18 | } 19 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/domain/FebsResponse.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.domain; 2 | 3 | import java.util.HashMap; 4 | 5 | public class FebsResponse extends HashMap { 6 | 7 | private static final long serialVersionUID = -8713837118340960775L; 8 | 9 | public FebsResponse message(String message) { 10 | this.put("message", message); 11 | return this; 12 | } 13 | 14 | public FebsResponse data(Object data) { 15 | this.put("data", data); 16 | return this; 17 | } 18 | 19 | @Override 20 | public FebsResponse put(String key, Object value) { 21 | super.put(key, value); 22 | return this; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/domain/LimitType.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.domain; 2 | 3 | public enum LimitType { 4 | // 传统类型 5 | CUSTOMER, 6 | // 根据 IP 限制 7 | IP; 8 | } 9 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/domain/QueryRequest.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.domain; 2 | 3 | import lombok.Data; 4 | import lombok.ToString; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | public class QueryRequest implements Serializable { 10 | 11 | private static final long serialVersionUID = -4869594085374385813L; 12 | 13 | private int pageSize = 10; 14 | private int pageNum = 1; 15 | 16 | private String sortField; 17 | private String sortOrder; 18 | } 19 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/domain/RegexpConstant.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.domain; 2 | 3 | /** 4 | * 正则常量 5 | */ 6 | public class RegexpConstant { 7 | 8 | // 简单手机号正则(这里只是简单校验是否为11位,实际规则很复杂) 9 | public static final String MOBILE_REG = "[1]\\d{10}"; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/domain/router/RouterMeta.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.domain.router; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * Vue路由 Meta 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @JsonInclude(JsonInclude.Include.NON_NULL) 15 | public class RouterMeta implements Serializable { 16 | 17 | private static final long serialVersionUID = 5499925008927195914L; 18 | 19 | private Boolean closeable; 20 | 21 | private Boolean isShow; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/exception/FebsException.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.exception; 2 | 3 | /** 4 | * FEBS 系统内部异常 5 | */ 6 | public class FebsException extends Exception { 7 | 8 | private static final long serialVersionUID = -994962710559017255L; 9 | 10 | public FebsException(String message) { 11 | super(message); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/exception/LimitAccessException.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.exception; 2 | 3 | /** 4 | * 限流异常 5 | */ 6 | public class LimitAccessException extends Exception { 7 | 8 | private static final long serialVersionUID = -3608667856397125671L; 9 | 10 | public LimitAccessException(String message) { 11 | super(message); 12 | } 13 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/exception/RedisConnectException.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.exception; 2 | 3 | /** 4 | * Redis 连接异常 5 | */ 6 | public class RedisConnectException extends Exception { 7 | 8 | private static final long serialVersionUID = 1639374111871115063L; 9 | 10 | public RedisConnectException(String message) { 11 | super(message); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/exception/TokenTimeoutException.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.exception; 2 | 3 | import org.apache.shiro.authc.AuthenticationException; 4 | 5 | /** 6 | * token过期抛出这个 7 | */ 8 | public class TokenTimeoutException extends AuthenticationException { 9 | 10 | private static final long serialVersionUID = -8313101744886192005L; 11 | 12 | public TokenTimeoutException(String message) { 13 | super(message); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/function/CacheSelector.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.function; 2 | 3 | @FunctionalInterface 4 | public interface CacheSelector { 5 | T select() throws Exception; 6 | } 7 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/function/JedisExecutor.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.function; 2 | 3 | import cc.mrbird.febs.common.exception.RedisConnectException; 4 | 5 | @FunctionalInterface 6 | public interface JedisExecutor { 7 | R excute(T t) throws RedisConnectException; 8 | } 9 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/properties/FebsProperties.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.properties; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Data 8 | @Configuration 9 | @ConfigurationProperties(prefix = "febs") 10 | public class FebsProperties { 11 | 12 | private ShiroProperties shiro = new ShiroProperties(); 13 | 14 | private boolean openAopLog = true; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/properties/ShiroProperties.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.properties; 2 | 3 | public class ShiroProperties { 4 | 5 | private String anonUrl; 6 | 7 | /** 8 | * token默认有效时间 1天 9 | */ 10 | private Long jwtTimeOut = 86400L; 11 | 12 | public String getAnonUrl() { 13 | return anonUrl; 14 | } 15 | 16 | public void setAnonUrl(String anonUrl) { 17 | this.anonUrl = anonUrl; 18 | } 19 | 20 | public Long getJwtTimeOut() { 21 | return jwtTimeOut; 22 | } 23 | 24 | public void setJwtTimeOut(Long jwtTimeOut) { 25 | this.jwtTimeOut = jwtTimeOut; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/utils/HttpContextUtil.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.utils; 2 | 3 | import org.springframework.web.context.request.RequestContextHolder; 4 | import org.springframework.web.context.request.ServletRequestAttributes; 5 | 6 | import javax.servlet.http.HttpServletRequest; 7 | import java.util.Objects; 8 | 9 | public class HttpContextUtil { 10 | 11 | private HttpContextUtil(){ 12 | 13 | } 14 | public static HttpServletRequest getHttpServletRequest() { 15 | return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/common/validator/CronValidator.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.common.validator; 2 | 3 | import cc.mrbird.febs.common.annotation.IsCron; 4 | import org.quartz.CronExpression; 5 | 6 | import javax.validation.ConstraintValidator; 7 | import javax.validation.ConstraintValidatorContext; 8 | 9 | /** 10 | * 校验是否为合法的 Cron表达式 11 | */ 12 | public class CronValidator implements ConstraintValidator { 13 | 14 | @Override 15 | public void initialize(IsCron isCron) { 16 | } 17 | 18 | @Override 19 | public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { 20 | try { 21 | return CronExpression.isValidExpression(value); 22 | } catch (Exception e) { 23 | return false; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/cos/dao/BulletinInfoMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.cos.dao; 2 | 3 | import cc.mrbird.febs.cos.entity.BulletinInfo; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import com.baomidou.mybatisplus.core.metadata.IPage; 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | import java.util.LinkedHashMap; 10 | 11 | /** 12 | * @author FanK 13 | */ 14 | public interface BulletinInfoMapper extends BaseMapper { 15 | 16 | /** 17 | * 分页获取公告信息 18 | * @param page 分页对象 19 | * @param bulletinInfo 公告信息 20 | * @return 结果 21 | */ 22 | IPage> getBulletinByPage(Page page, @Param("bulletinInfo") BulletinInfo bulletinInfo); 23 | } 24 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/cos/dao/LyricsInfoMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.cos.dao; 2 | 3 | import cc.mrbird.febs.cos.entity.LyricsInfo; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import com.baomidou.mybatisplus.core.metadata.IPage; 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | import java.util.LinkedHashMap; 10 | 11 | /** 12 | * 歌词管理 mapper层 13 | * 14 | * @author FanK 15 | */ 16 | public interface LyricsInfoMapper extends BaseMapper { 17 | 18 | /** 19 | * 分页获取歌词信息 20 | * 21 | * @param page 分页对象 22 | * @param lyricsInfo 歌词信息 23 | * @return 结果 24 | */ 25 | IPage> queryLyricsPage(Page page, @Param("lyricsInfo") LyricsInfo lyricsInfo); 26 | } 27 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/cos/dao/UserInfoMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.cos.dao; 2 | 3 | import cc.mrbird.febs.cos.entity.UserInfo; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import com.baomidou.mybatisplus.core.metadata.IPage; 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | import java.util.LinkedHashMap; 10 | 11 | /** 12 | * 用户管理 mapper层 13 | * 14 | * @author FanK 15 | */ 16 | public interface UserInfoMapper extends BaseMapper { 17 | 18 | /** 19 | * 分页获取用户信息 20 | * 21 | * @param page 分页对象 22 | * @param userInfo 用户信息 23 | * @return 结果 24 | */ 25 | IPage> queryUserPage(Page page, @Param("userInfo") UserInfo userInfo); 26 | } 27 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/cos/service/IBulletinInfoService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.cos.service; 2 | 3 | import cc.mrbird.febs.cos.entity.BulletinInfo; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | 8 | import java.util.LinkedHashMap; 9 | 10 | /** 11 | * @author FanK 12 | */ 13 | public interface IBulletinInfoService extends IService { 14 | 15 | /** 16 | * 分页获取公告信息 17 | * @param page 分页对象 18 | * @param bulletinInfo 公告信息 19 | * @return 结果 20 | */ 21 | IPage> getBulletinByPage(Page page, BulletinInfo bulletinInfo); 22 | } 23 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/cos/service/ILyricsInfoService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.cos.service; 2 | 3 | import cc.mrbird.febs.cos.entity.LyricsInfo; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | import java.util.LinkedHashMap; 10 | 11 | /** 12 | * 歌词管理 service层 13 | * 14 | * @author FanK 15 | */ 16 | public interface ILyricsInfoService extends IService { 17 | 18 | /** 19 | * 分页获取歌词信息 20 | * 21 | * @param page 分页对象 22 | * @param lyricsInfo 歌词信息 23 | * @return 结果 24 | */ 25 | IPage> queryLyricsPage(Page page, LyricsInfo lyricsInfo); 26 | } 27 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/cos/service/IMailService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.cos.service; 2 | 3 | public interface IMailService { 4 | 5 | /** 6 | * 发送文本邮件 7 | * @param to 收件人 8 | * @param subject 主题 9 | * @param content 内容 10 | */ 11 | void sendSimpleMail(String to, String subject, String content); 12 | 13 | /** 14 | * 发送HTML邮件 15 | * @param to 收件人 16 | * @param subject 主题 17 | * @param content 内容 18 | */ 19 | void sendHtmlMail(String to, String subject, String content); 20 | 21 | 22 | 23 | /** 24 | * 发送带附件的邮件 25 | * @param to 收件人 26 | * @param subject 主题 27 | * @param content 内容 28 | * @param filePath 附件 29 | */ 30 | void sendAttachmentsMail(String to, String subject, String content, String filePath); 31 | } 32 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/cos/service/IUserInfoService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.cos.service; 2 | 3 | import cc.mrbird.febs.cos.entity.UserInfo; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | import java.util.LinkedHashMap; 10 | 11 | /** 12 | * 用户管理 service层 13 | * 14 | * @author FanK 15 | */ 16 | public interface IUserInfoService extends IService { 17 | 18 | /** 19 | * 分页获取用户信息 20 | * 21 | * @param page 分页对象 22 | * @param userInfo 用户信息 23 | * @return 结果 24 | */ 25 | IPage> queryUserPage(Page page, UserInfo userInfo); 26 | } 27 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/dao/DeptMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.dao; 2 | 3 | import cc.mrbird.febs.system.domain.Dept; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | public interface DeptMapper extends BaseMapper { 7 | 8 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/dao/DictMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.dao; 2 | 3 | import cc.mrbird.febs.system.domain.Dict; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | public interface DictMapper extends BaseMapper { 7 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/dao/LogMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.dao; 2 | 3 | import cc.mrbird.febs.system.domain.SysLog; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | public interface LogMapper extends BaseMapper { 7 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/dao/MenuMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.dao; 2 | 3 | import cc.mrbird.febs.system.domain.Menu; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | import java.util.List; 7 | 8 | public interface MenuMapper extends BaseMapper { 9 | 10 | List findUserPermissions(String userName); 11 | 12 | List findUserMenus(String userName); 13 | 14 | /** 15 | * 查找当前菜单/按钮关联的用户 ID 16 | * 17 | * @param menuId menuId 18 | * @return 用户 ID集合 19 | */ 20 | List findUserIdsByMenuId(String menuId); 21 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/dao/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.dao; 2 | 3 | import cc.mrbird.febs.system.domain.Role; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | import java.util.List; 7 | 8 | public interface RoleMapper extends BaseMapper { 9 | 10 | List findUserRole(String userName); 11 | 12 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/dao/RoleMenuMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.dao; 2 | 3 | import cc.mrbird.febs.system.domain.RoleMenu; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | public interface RoleMenuMapper extends BaseMapper { 7 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/dao/TestMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.dao; 2 | 3 | import cc.mrbird.febs.system.domain.Test; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | public interface TestMapper extends BaseMapper { 7 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/dao/UserConfigMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.dao; 2 | 3 | import cc.mrbird.febs.system.domain.UserConfig; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | public interface UserConfigMapper extends BaseMapper { 7 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/dao/UserMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.dao; 2 | 3 | import cc.mrbird.febs.system.domain.User; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import com.baomidou.mybatisplus.core.metadata.IPage; 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | public interface UserMapper extends BaseMapper { 10 | 11 | IPage findUserDetail(Page page, @Param("user") User user); 12 | 13 | /** 14 | * 获取单个用户详情 15 | * 16 | * @param username 用户名 17 | * @return 用户信息 18 | */ 19 | User findDetail(String username); 20 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/dao/UserRoleMapper.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.dao; 2 | 3 | import cc.mrbird.febs.system.domain.UserRole; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | public interface UserRoleMapper extends BaseMapper { 8 | 9 | /** 10 | * 根据用户Id删除该用户的角色关系 11 | * 12 | * @param userId 用户ID 13 | * @return boolean 14 | * @author lzx 15 | * @date 2019年03月04日17:46:49 16 | */ 17 | Boolean deleteByUserId(@Param("userId") Long userId); 18 | 19 | /** 20 | * 根据角色Id删除该角色的用户关系 21 | * 22 | * @param roleId 角色ID 23 | * @return boolean 24 | * @author lzx 25 | * @date 2019年03月04日17:47:16 26 | */ 27 | Boolean deleteByRoleId(@Param("roleId") Long roleId); 28 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/domain/LoginLog.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.domain; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | import lombok.ToString; 6 | 7 | import java.util.Date; 8 | 9 | @TableName("t_login_log") 10 | @Data 11 | public class LoginLog { 12 | /** 13 | * 用户 ID 14 | */ 15 | private String username; 16 | 17 | /** 18 | * 登录时间 19 | */ 20 | private Date loginTime; 21 | 22 | /** 23 | * 登录地点 24 | */ 25 | private String location; 26 | 27 | private String ip; 28 | } 29 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/domain/RoleMenu.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.domain; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @TableName("t_role_menu") 9 | @Data 10 | public class RoleMenu implements Serializable { 11 | 12 | private static final long serialVersionUID = -7573904024872252113L; 13 | 14 | private Long roleId; 15 | 16 | private Long menuId; 17 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/domain/UserRole.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.domain; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @TableName("t_user_role") 9 | @Data 10 | public class UserRole implements Serializable{ 11 | 12 | private static final long serialVersionUID = -3166012934498268403L; 13 | 14 | private Long userId; 15 | 16 | private Long roleId; 17 | 18 | } -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/service/DeptService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.service; 2 | 3 | 4 | import cc.mrbird.febs.common.domain.QueryRequest; 5 | import cc.mrbird.febs.system.domain.Dept; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | public interface DeptService extends IService { 12 | 13 | Map findDepts(QueryRequest request, Dept dept); 14 | 15 | List findDepts(Dept dept, QueryRequest request); 16 | 17 | void createDept(Dept dept); 18 | 19 | void updateDept(Dept dept); 20 | 21 | void deleteDepts(String[] deptIds); 22 | } 23 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/service/DictService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.service; 2 | 3 | import cc.mrbird.febs.common.domain.QueryRequest; 4 | import cc.mrbird.febs.system.domain.Dict; 5 | import com.baomidou.mybatisplus.core.metadata.IPage; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | 8 | 9 | public interface DictService extends IService { 10 | 11 | IPage findDicts(QueryRequest request, Dict dict); 12 | 13 | void createDict(Dict dict); 14 | 15 | void updateDict(Dict dicdt); 16 | 17 | void deleteDicts(String[] dictIds); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/service/LogService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.service; 2 | 3 | import cc.mrbird.febs.common.domain.QueryRequest; 4 | import cc.mrbird.febs.system.domain.SysLog; 5 | import com.baomidou.mybatisplus.core.metadata.IPage; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | import com.fasterxml.jackson.core.JsonProcessingException; 8 | import org.aspectj.lang.ProceedingJoinPoint; 9 | import org.springframework.scheduling.annotation.Async; 10 | 11 | 12 | public interface LogService extends IService { 13 | 14 | IPage findLogs(QueryRequest request, SysLog sysLog); 15 | 16 | void deleteLogs(String[] logIds); 17 | 18 | @Async 19 | void saveLog(ProceedingJoinPoint point, SysLog log) throws JsonProcessingException; 20 | } 21 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/service/LoginLogService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.service; 2 | 3 | import cc.mrbird.febs.system.domain.LoginLog; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | public interface LoginLogService extends IService { 7 | 8 | void saveLoginLog (LoginLog loginLog); 9 | } 10 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/service/MenuService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.service; 2 | 3 | import cc.mrbird.febs.system.domain.Menu; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | public interface MenuService extends IService { 10 | 11 | List findUserPermissions(String username); 12 | 13 | List findUserMenus(String username); 14 | 15 | Map findMenus(Menu menu); 16 | 17 | List findMenuList(Menu menu); 18 | 19 | void createMenu(Menu menu); 20 | 21 | void updateMenu(Menu menu) throws Exception; 22 | 23 | /** 24 | * 递归删除菜单/按钮 25 | * 26 | * @param menuIds menuIds 27 | */ 28 | void deleteMeuns(String[] menuIds) throws Exception; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/service/RoleMenuServie.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.service; 2 | 3 | import cc.mrbird.febs.system.domain.RoleMenu; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | import java.util.List; 7 | 8 | public interface RoleMenuServie extends IService { 9 | 10 | void deleteRoleMenusByRoleId(String[] roleIds); 11 | 12 | void deleteRoleMenusByMenuId(String[] menuIds); 13 | 14 | List getRoleMenusByRoleId(String roleId); 15 | } 16 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/service/RoleService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.service; 2 | 3 | import cc.mrbird.febs.common.domain.QueryRequest; 4 | import cc.mrbird.febs.system.domain.Role; 5 | import com.baomidou.mybatisplus.core.metadata.IPage; 6 | import com.baomidou.mybatisplus.extension.service.IService; 7 | 8 | import java.util.List; 9 | 10 | public interface RoleService extends IService { 11 | 12 | IPage findRoles(Role role, QueryRequest request); 13 | 14 | List findUserRole(String userName); 15 | 16 | Role findByName(String roleName); 17 | 18 | void createRole(Role role); 19 | 20 | void deleteRoles(String[] roleIds) throws Exception; 21 | 22 | void updateRole(Role role) throws Exception; 23 | } 24 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/service/TestService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.service; 2 | 3 | import cc.mrbird.febs.system.domain.Test; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | import java.util.List; 7 | 8 | public interface TestService extends IService { 9 | 10 | List findTests(); 11 | 12 | /** 13 | * 批量插入 14 | * @param list List 15 | */ 16 | void batchInsert(List list); 17 | } 18 | -------------------------------------------------------------------------------- /backend/src/main/java/cc/mrbird/febs/system/service/UserRoleService.java: -------------------------------------------------------------------------------- 1 | package cc.mrbird.febs.system.service; 2 | 3 | 4 | import cc.mrbird.febs.system.domain.UserRole; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | 7 | import java.util.List; 8 | 9 | public interface UserRoleService extends IService { 10 | 11 | void deleteUserRolesByRoleId(String[] roleIds); 12 | 13 | void deleteUserRolesByUserId(String[] userIds); 14 | 15 | List findUserIdsByRoleId(String[] roleIds); 16 | } 17 | -------------------------------------------------------------------------------- /backend/src/main/resources/ValidationMessages.properties: -------------------------------------------------------------------------------- 1 | required=\u4E0D\u80FD\u4E3A\u7A7A 2 | range=\u6709\u6548\u957f\u5ea6{min}\u5230{max}\u4e2a\u5b57\u7b26 3 | email=\u90ae\u7bb1\u683c\u5f0f\u4e0d\u5408\u6cd5 4 | mobile=\u624b\u673a\u53f7\u4e0d\u5408\u6cd5 5 | noMoreThan=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7{max}\u4e2a\u5b57\u7b26 6 | invalid=\u503c\u4e0d\u5408\u6cd5 -------------------------------------------------------------------------------- /backend/src/main/resources/generator/templates/mapper.java.ftl: -------------------------------------------------------------------------------- 1 | package ${package.Mapper}; 2 | 3 | import ${package.Entity}.${entity}; 4 | import ${superMapperClassPackage}; 5 | 6 | /** 7 | * ${table.comment!} mapper层 8 | * 9 | * @author ${author} 10 | */ 11 | <#if kotlin> 12 | interface ${table.mapperName} : ${superMapperClass}<${entity}> 13 | <#else> 14 | public interface ${table.mapperName} extends ${superMapperClass}<${entity}> { 15 | 16 | } 17 | 18 | -------------------------------------------------------------------------------- /backend/src/main/resources/generator/templates/service.java.ftl: -------------------------------------------------------------------------------- 1 | package ${package.Service}; 2 | 3 | import ${package.Entity}.${entity}; 4 | import ${superServiceClassPackage}; 5 | 6 | /** 7 | * ${table.comment!} service层 8 | * 9 | * @author ${author} 10 | */ 11 | <#if kotlin> 12 | interface ${table.serviceName} : ${superServiceClass}<${entity}> 13 | <#else> 14 | public interface ${table.serviceName} extends ${superServiceClass}<${entity}> { 15 | 16 | } 17 | 18 | -------------------------------------------------------------------------------- /backend/src/main/resources/generator/templates/serviceImpl.java.ftl: -------------------------------------------------------------------------------- 1 | package ${package.ServiceImpl}; 2 | 3 | import ${package.Entity}.${entity}; 4 | import ${package.Mapper}.${table.mapperName}; 5 | import ${package.Service}.${table.serviceName}; 6 | import ${superServiceImplClassPackage}; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * ${table.comment!} 实现层 11 | * 12 | * @author ${author} 13 | */ 14 | @Service 15 | <#if kotlin> 16 | open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} { 17 | 18 | } 19 | <#else> 20 | public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} { 21 | 22 | } 23 | 24 | -------------------------------------------------------------------------------- /backend/src/main/resources/ip2region/ip2region.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/backend/src/main/resources/ip2region/ip2region.db -------------------------------------------------------------------------------- /backend/src/main/resources/mapper/system/UserRoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | DELETE FROM t_user_role WHERE user_id = #{userId} 14 | 15 | 16 | 17 | 18 | DELETE FROM t_user_role WHERE role_id = #{roleId} 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /backend/src/main/resources/spy.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/backend/src/main/resources/spy.properties -------------------------------------------------------------------------------- /frontend/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-vue-jsx", "transform-runtime"], 12 | "env": { 13 | "test": { 14 | "presets": ["env", "stage-2"], 15 | "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"] 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /frontend/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /frontend/.eslintignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /config/ 3 | /dist/ 4 | /*.js 5 | /test/unit/coverage/ 6 | -------------------------------------------------------------------------------- /frontend/.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=vue 2 | 3 | *.css linguist-language=vue 4 | 5 | *.html linguist-language=vue 6 | -------------------------------------------------------------------------------- /frontend/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | -------------------------------------------------------------------------------- /frontend/.idea/frontend.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /frontend/.idea/git_toolbox_blame.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /frontend/.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /frontend/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "autoprefixer": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /frontend/build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/build/logo.png -------------------------------------------------------------------------------- /frontend/build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const config = require('../config') 4 | const isProduction = process.env.NODE_ENV === 'production' 5 | const sourceMapEnabled = isProduction 6 | ? config.build.productionSourceMap 7 | : config.dev.cssSourceMap 8 | 9 | module.exports = { 10 | loaders: utils.cssLoaders({ 11 | sourceMap: sourceMapEnabled, 12 | extract: isProduction 13 | }), 14 | cssSourceMap: sourceMapEnabled, 15 | cacheBusting: config.dev.cacheBusting, 16 | transformToRequire: { 17 | video: ['src', 'poster'], 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /frontend/config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /frontend/config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /frontend/config/test.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const devEnv = require('./dev.env') 4 | 5 | module.exports = merge(devEnv, { 6 | NODE_ENV: '"testing"' 7 | }) 8 | -------------------------------------------------------------------------------- /frontend/src/components/datetime/RangeDate.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /frontend/src/components/exception/typeConfig.js: -------------------------------------------------------------------------------- 1 | const config = { 2 | 403: { 3 | img: 'https://gw.alipayobjects.com/zos/rmsportal/wZcnGqRDyhPOEYFcZDnb.svg', 4 | title: '403', 5 | desc: '抱歉,你无权访问该页面' 6 | }, 7 | 404: { 8 | img: 'https://gw.alipayobjects.com/zos/rmsportal/KpnpchXsobRgLElEozzI.svg', 9 | title: '404', 10 | desc: '抱歉,你访问的页面不存在或仍在开发中' 11 | }, 12 | 500: { 13 | img: 'https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg', 14 | title: '500', 15 | desc: '抱歉,服务器出错了' 16 | } 17 | } 18 | 19 | export default config 20 | -------------------------------------------------------------------------------- /frontend/src/components/setting/SettingItem.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | 15 | 26 | -------------------------------------------------------------------------------- /frontend/src/components/setting/StyleItem.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 16 | 17 | 37 | -------------------------------------------------------------------------------- /frontend/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import account from './modules/account' 4 | import setting from './modules/setting' 5 | 6 | Vue.use(Vuex) 7 | 8 | export default new Vuex.Store({ 9 | modules: { 10 | account, 11 | setting 12 | } 13 | }) 14 | -------------------------------------------------------------------------------- /frontend/src/utils/common.js: -------------------------------------------------------------------------------- 1 | export function triggerWindowResizeEvent () { 2 | let event = document.createEvent('HTMLEvents') 3 | event.initEvent('resize', true, true) 4 | event.eventType = 'message' 5 | window.dispatchEvent(event) 6 | } 7 | -------------------------------------------------------------------------------- /frontend/src/utils/device.js: -------------------------------------------------------------------------------- 1 | import enquireJs from 'enquire.js' 2 | 3 | const enquireScreen = function (call) { 4 | const hanlder = { 5 | match: function () { 6 | call && call(true) 7 | }, 8 | unmatch: function () { 9 | call && call(false) 10 | } 11 | } 12 | enquireJs.register('only screen and (max-width: 767.99px)', hanlder) 13 | } 14 | 15 | export default enquireScreen 16 | -------------------------------------------------------------------------------- /frontend/src/utils/install.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | 3 | import {hasPermission, hasNoPermission, hasAnyPermission, hasRole, hasAnyRole} from 'utils/permissionDirect' 4 | 5 | const Plugins = [ 6 | hasPermission, 7 | hasNoPermission, 8 | hasAnyPermission, 9 | hasRole, 10 | hasAnyRole 11 | ] 12 | 13 | Plugins.map((plugin) => { 14 | Vue.use(plugin) 15 | }) 16 | 17 | export default Vue 18 | -------------------------------------------------------------------------------- /frontend/src/utils/localstorage.js: -------------------------------------------------------------------------------- 1 | let db = { 2 | save (key, value) { 3 | localStorage.setItem(key, JSON.stringify(value)) 4 | }, 5 | get (key, defaultValue = {}) { 6 | return JSON.parse(localStorage.getItem(key)) || defaultValue 7 | }, 8 | remove (key) { 9 | localStorage.removeItem(key) 10 | }, 11 | clear () { 12 | localStorage.clear() 13 | } 14 | } 15 | 16 | export default db 17 | -------------------------------------------------------------------------------- /frontend/src/views/common/EmptyPageView.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /frontend/src/views/common/GlobalFooter.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 17 | 18 | 37 | -------------------------------------------------------------------------------- /frontend/src/views/error/403.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | 12 | 15 | -------------------------------------------------------------------------------- /frontend/src/views/error/404.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | 12 | 15 | -------------------------------------------------------------------------------- /frontend/src/views/error/500.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | 12 | 15 | -------------------------------------------------------------------------------- /frontend/src/views/monitor/RedisTerminal.vue: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | -------------------------------------------------------------------------------- /frontend/src/views/system/dept/DeptInputTree.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 36 | -------------------------------------------------------------------------------- /frontend/src/views/system/user/UserInfo.less: -------------------------------------------------------------------------------- 1 | .user-info { 2 | background: #fff; 3 | padding: 0 10px 10px 10px; 4 | } 5 | .user-info-side { 6 | background: #fff; 7 | } 8 | .user-info-side { 9 | max-width: 10rem !important; 10 | min-width: 10rem !important; 11 | width: 10rem !important; 12 | } 13 | .user-content-one{ 14 | margin-right: 1.2rem; 15 | } 16 | p { 17 | margin-bottom: 1rem; 18 | max-width: 15.5rem; 19 | } 20 | i { 21 | margin-right: .8rem; 22 | } 23 | -------------------------------------------------------------------------------- /frontend/static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/.gitkeep -------------------------------------------------------------------------------- /frontend/static/avatar/17e420c250804efe904a09a33796d5a10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/17e420c250804efe904a09a33796d5a10.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/17e420c250804efe904a09a33796d5a16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/17e420c250804efe904a09a33796d5a16.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/19034103295190235.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/19034103295190235.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/1d22f3e41d284f50b2c8fc32e0788698.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/1d22f3e41d284f50b2c8fc32e0788698.jpeg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165754.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165754.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165815.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165815.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165821.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165821.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165827.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165827.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165834.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165834.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165840.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165840.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165846.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165846.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165855.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165855.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165909.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165909.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165914.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165914.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165920.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165920.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165927.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165927.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165936.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165936.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165942.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165942.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165947.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165947.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414165955.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414165955.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/20180414170003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/20180414170003.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/2dd7a2d09fa94bf8b5c52e5318868b4df.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/2dd7a2d09fa94bf8b5c52e5318868b4df.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/496b3ace787342f7954b7045b8b06804.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/496b3ace787342f7954b7045b8b06804.jpeg -------------------------------------------------------------------------------- /frontend/static/avatar/595ba7b05f2e485eb50565a50cb6cc3c.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/595ba7b05f2e485eb50565a50cb6cc3c.jpeg -------------------------------------------------------------------------------- /frontend/static/avatar/5997fedcc7bd4cffbd350b40d1b5b9824.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/5997fedcc7bd4cffbd350b40d1b5b9824.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/5997fedcc7bd4cffbd350b40d1b5b987.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/5997fedcc7bd4cffbd350b40d1b5b987.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/87d8194bc9834e9f8f0228e9e530beb1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/87d8194bc9834e9f8f0228e9e530beb1.jpeg -------------------------------------------------------------------------------- /frontend/static/avatar/8f5b60ef00714a399ee544d331231820.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/8f5b60ef00714a399ee544d331231820.jpeg -------------------------------------------------------------------------------- /frontend/static/avatar/964e40b005724165b8cf772355796c8c.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/964e40b005724165b8cf772355796c8c.jpeg -------------------------------------------------------------------------------- /frontend/static/avatar/BiazfanxmamNRoxxVxka.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/BiazfanxmamNRoxxVxka.png -------------------------------------------------------------------------------- /frontend/static/avatar/WhxKECPNujWoWEFNdnJE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/WhxKECPNujWoWEFNdnJE.png -------------------------------------------------------------------------------- /frontend/static/avatar/a3b10296862e40edb811418d64455d00.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/a3b10296862e40edb811418d64455d00.jpeg -------------------------------------------------------------------------------- /frontend/static/avatar/a43456282d684e0b9319cf332f8ac468.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/a43456282d684e0b9319cf332f8ac468.jpeg -------------------------------------------------------------------------------- /frontend/static/avatar/bba284ac05b041a8b8b0d1927868d5c9x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/bba284ac05b041a8b8b0d1927868d5c9x.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/c7c4ee7be3eb4e73a19887dc713505145.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/c7c4ee7be3eb4e73a19887dc713505145.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/cnrhVkzwxjPwAaCfPbdc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/cnrhVkzwxjPwAaCfPbdc.png -------------------------------------------------------------------------------- /frontend/static/avatar/default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/default.jpg -------------------------------------------------------------------------------- /frontend/static/avatar/ff698bb2d25c4d218b3256b46c706ece.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/ff698bb2d25c4d218b3256b46c706ece.jpeg -------------------------------------------------------------------------------- /frontend/static/avatar/gaOngJwsRYRaVAuXXcmB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/gaOngJwsRYRaVAuXXcmB.png -------------------------------------------------------------------------------- /frontend/static/avatar/jZUIxmJycoymBprLOUbT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/jZUIxmJycoymBprLOUbT.png -------------------------------------------------------------------------------- /frontend/static/avatar/ubnKSIfAJTxIgXOKlciN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/avatar/ubnKSIfAJTxIgXOKlciN.png -------------------------------------------------------------------------------- /frontend/static/img/1work-4997565_1280.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/1work-4997565_1280.png -------------------------------------------------------------------------------- /frontend/static/img/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/delete.png -------------------------------------------------------------------------------- /frontend/static/img/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/download.png -------------------------------------------------------------------------------- /frontend/static/img/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/error.png -------------------------------------------------------------------------------- /frontend/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/favicon.ico -------------------------------------------------------------------------------- /frontend/static/img/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/home.png -------------------------------------------------------------------------------- /frontend/static/img/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/loading.png -------------------------------------------------------------------------------- /frontend/static/img/logo-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/logo-blue.png -------------------------------------------------------------------------------- /frontend/static/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/logo.png -------------------------------------------------------------------------------- /frontend/static/img/record.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/record.png -------------------------------------------------------------------------------- /frontend/static/img/template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/template.png -------------------------------------------------------------------------------- /frontend/static/img/total.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/total.png -------------------------------------------------------------------------------- /frontend/static/img/work-4997565_1280.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/work-4997565_1280.png -------------------------------------------------------------------------------- /frontend/static/img/work-4997565_12801.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fankekeke/music_cloud_cos/bd6faf25badc864e1ea918daf9b7c7586d3f9227/frontend/static/img/work-4997565_12801.png -------------------------------------------------------------------------------- /frontend/static/less/Common.less: -------------------------------------------------------------------------------- 1 | .search{ 2 | margin-bottom: 54px; 3 | } 4 | .fold{ 5 | width: calc(100% - 216px); 6 | display: inline-block 7 | } 8 | .operator{ 9 | margin-bottom: 18px; 10 | } 11 | @media screen and (max-width: 900px) { 12 | .fold { 13 | width: 100%; 14 | } 15 | } 16 | .operator button { 17 | margin-right: 5px; 18 | } 19 | i { 20 | cursor: pointer; 21 | } 22 | --------------------------------------------------------------------------------