diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 00000000..527ae1b0 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src/assets/css/base.css b/src/assets/css/base.css new file mode 100644 index 00000000..4009616a --- /dev/null +++ b/src/assets/css/base.css @@ -0,0 +1,81 @@ +@import "./normalize.css"; +:root { + --color-text: #000; + --color-high-text: #ff5777; + --color-tint: #ff8198; + --color-background: #f2f2f2; + --font-size: 14px; + --line-height: 1.5; +} + +*, +*::before, +*::after { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif; + user-select: none; + /* 禁止用户鼠标在页面上选中文字/图片等 */ + -webkit-tap-highlight-color: transparent; + /* webkit是苹果浏览器引擎,tap点击,highlight背景高亮,color颜色,颜色用数值调节 */ + background: var(--color-background); + color: var(--color-text); + width: 100vw; +} + +a { + color: var(--color-text); + text-decoration: none; +} + +.clear-fix::after { + clear: both; + content: ''; + display: block; + width: 0; + height: 0; + visibility: hidden; +} + +.clear-fix { + zoom: 1; +} + +.arrow-right { + border-top: 1px solid #999; + border-left: 1px solid #999; + width: 9px; + height: 9px; + background-color: transparent; + transform: rotate(135deg); + display: inline-block; + margin-left: .1rem; +} + +.left { + float: left; +} + +.right { + float: right; +} + +@font-face { + font-family: 'icomoon'; + src: url('../fonts/icomoon.eot?wum72a'); + src: url('../fonts/icomoon.eot?wum72a#iefix') format('embedded-opentype'), url('../fonts/icomoon.ttf?wum72a') format('truetype'), url('../fonts/icomoon.woff?wum72a') format('woff'), url('../fonts/icomoon.svg?wum72a#icomoon') format('svg'); + font-weight: normal; + font-style: normal; + font-display: block; +} + +.icon-font { + width: 1em; height: 1em; + vertical-align: -0.15em; + fill: currentColor; + overflow: hidden; +} \ No newline at end of file diff --git a/src/assets/css/list_base.css b/src/assets/css/list_base.css new file mode 100644 index 00000000..f98df8d8 --- /dev/null +++ b/src/assets/css/list_base.css @@ -0,0 +1,78 @@ +.nav { + background-color: #54bf8e; + color: #fff; +} + +.content { + position: fixed; + top: 50px; + left: 0; + right: 0px; + bottom: 49px; +} + + +.block { + height: 88px; +} +.ignore-pull-down1, +.ignore-pull-down2 { + height: 80px; + width: 100vw; + text-align: center; + position: absolute; + top: -80px; + line-height: 80px; +} +.ignore-pull-down2 { + line-height: 120px; +} +.loading { + width: 60px; + height: 20px; + background-color: pink; + position: absolute; + bottom: 0; + left: 50%; + transform: translate3d(-50%, 0, 0); + display: flex; +} +.ball1, +.ball2, +.ball3 { + width: 10px; + height: 10px; + background-color: #4fc08d; + border-radius: 50%; + position: absolute; + bottom: 10px; +} +.ball1 { + right: calc(50% + 15px); +} +.ball2 { + left: calc(50% - 5px); +} +.ball3 { + left: calc(50% + 15px); +} +.ball1 { + animation: loading 1.2s linear infinite; +} +.ball2 { + animation: loading 1.2s 0.4s linear infinite; +} +.ball3 { + animation: loading 1.2s 0.8s linear infinite; +} +@keyframes loading { + 16.667% { + transform: scale(2); + } + 33.333% { + transform: scale(1); + } + 100% { + transform: scale(1); + } +} diff --git a/src/assets/css/normalize.css b/src/assets/css/normalize.css new file mode 100644 index 00000000..f1ade34d --- /dev/null +++ b/src/assets/css/normalize.css @@ -0,0 +1,419 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + + +/* Document + ========================================================================== */ + + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + + +/* Sections + ========================================================================== */ + + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + + +/* Grouping content + ========================================================================== */ + + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ +} + + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + + +/* Text-level semantics + ========================================================================== */ + + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ +} + + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + + +/* Embedded content + ========================================================================== */ + + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + + +/* Forms + ========================================================================== */ + + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ +} + + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ +} + + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + + ::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + + +/* Interactive + ========================================================================== */ + + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + + +/* Misc + ========================================================================== */ + + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} \ No newline at end of file diff --git a/src/assets/css/resetVant.css b/src/assets/css/resetVant.css new file mode 100644 index 00000000..5f3a9cc5 --- /dev/null +++ b/src/assets/css/resetVant.css @@ -0,0 +1,16 @@ +.van-uploader__preview-image { + width: 98px!important; + height: 98px!important; +} +.van-uploader__preview:nth-child(3), +.van-uploader__preview:nth-child(6), +.van-uploader__preview:nth-child(9){ + margin-right: 0!important; +} +.van-uploader__upload { + width: 98px!important; + height: 98px!important; + box-sizing: border-box; + /* border: 1px dashed #888; */ + margin-right: 0!important; +} \ No newline at end of file diff --git a/src/assets/css/vant2.7.1.css b/src/assets/css/vant2.7.1.css new file mode 100644 index 00000000..c5c099ee --- /dev/null +++ b/src/assets/css/vant2.7.1.css @@ -0,0 +1 @@ +html{-webkit-tap-highlight-color:transparent}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Segoe UI,Arial,Roboto,'PingFang SC','Hiragino Sans GB','Microsoft Yahei',sans-serif}a{text-decoration:none}button,input,textarea{color:inherit;font:inherit}[class*=van-]:focus,a:focus,button:focus,input:focus,textarea:focus{outline:0}ol,ul{margin:0;padding:0;list-style:none}.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical}.van-clearfix::after{display:table;clear:both;content:''}[class*=van-hairline]::after{position:absolute;box-sizing:border-box;content:' ';pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid #ebedf0;-webkit-transform:scale(.5);transform:scale(.5)}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--top::after{border-top-width:1px}.van-hairline--left::after{border-left-width:1px}.van-hairline--right::after{border-right-width:1px}.van-hairline--bottom::after{border-bottom-width:1px}.van-hairline--top-bottom::after,.van-hairline-unset--top-bottom::after{border-width:1px 0}.van-hairline--surround::after{border-width:1px}@-webkit-keyframes van-slide-up-enter{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes van-slide-up-enter{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-webkit-keyframes van-slide-up-leave{to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes van-slide-up-leave{to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-webkit-keyframes van-slide-down-enter{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes van-slide-down-enter{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@-webkit-keyframes van-slide-down-leave{to{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes van-slide-down-leave{to{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@-webkit-keyframes van-slide-left-enter{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes van-slide-left-enter{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@-webkit-keyframes van-slide-left-leave{to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes van-slide-left-leave{to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@-webkit-keyframes van-slide-right-enter{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes van-slide-right-enter{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@-webkit-keyframes van-slide-right-leave{to{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes van-slide-right-leave{to{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@-webkit-keyframes van-fade-in{from{opacity:0}to{opacity:1}}@keyframes van-fade-in{from{opacity:0}to{opacity:1}}@-webkit-keyframes van-fade-out{from{opacity:1}to{opacity:0}}@keyframes van-fade-out{from{opacity:1}to{opacity:0}}@-webkit-keyframes van-rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes van-rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.van-fade-enter-active{-webkit-animation:.3s van-fade-in both ease-out;animation:.3s van-fade-in both ease-out}.van-fade-leave-active{-webkit-animation:.3s van-fade-out both ease-in;animation:.3s van-fade-out both ease-in}.van-slide-up-enter-active{-webkit-animation:van-slide-up-enter .3s both ease-out;animation:van-slide-up-enter .3s both ease-out}.van-slide-up-leave-active{-webkit-animation:van-slide-up-leave .3s both ease-in;animation:van-slide-up-leave .3s both ease-in}.van-slide-down-enter-active{-webkit-animation:van-slide-down-enter .3s both ease-out;animation:van-slide-down-enter .3s both ease-out}.van-slide-down-leave-active{-webkit-animation:van-slide-down-leave .3s both ease-in;animation:van-slide-down-leave .3s both ease-in}.van-slide-left-enter-active{-webkit-animation:van-slide-left-enter .3s both ease-out;animation:van-slide-left-enter .3s both ease-out}.van-slide-left-leave-active{-webkit-animation:van-slide-left-leave .3s both ease-in;animation:van-slide-left-leave .3s both ease-in}.van-slide-right-enter-active{-webkit-animation:van-slide-right-enter .3s both ease-out;animation:van-slide-right-enter .3s both ease-out}.van-slide-right-leave-active{-webkit-animation:van-slide-right-leave .3s both ease-in;animation:van-slide-right-leave .3s both ease-in}.van-overlay{position:fixed;top:0;left:0;z-index:1;width:100%;height:100%;background-color:rgba(0,0,0,.7)}.van-info{position:absolute;top:0;right:0;box-sizing:border-box;min-width:16px;padding:0 3px;color:#fff;font-weight:500;font-size:12px;font-family:Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif;line-height:14px;text-align:center;background-color:#ee0a24;border:1px solid #fff;border-radius:16px;-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%);-webkit-transform-origin:100%;transform-origin:100%}.van-info--dot{width:8px;min-width:0;height:8px;background-color:#ee0a24;border-radius:100%}.van-sidebar-item{position:relative;display:block;box-sizing:border-box;padding:20px 12px;overflow:hidden;color:#323233;font-size:14px;line-height:20px;word-wrap:break-word;background-color:#f7f8fa;cursor:pointer;-webkit-user-select:none;user-select:none}.van-sidebar-item:active{background-color:#f2f3f5}.van-sidebar-item__text{position:relative;display:inline-block}.van-sidebar-item:not(:last-child)::after{border-bottom-width:1px}.van-sidebar-item--select{color:#323233;font-weight:500}.van-sidebar-item--select,.van-sidebar-item--select:active{background-color:#fff}.van-sidebar-item--select::before{position:absolute;top:50%;left:0;width:4px;height:16px;background-color:#ee0a24;-webkit-transform:translateY(-50%);transform:translateY(-50%);content:''}.van-sidebar-item--disabled{color:#c8c9cc;cursor:not-allowed}.van-sidebar-item--disabled:active{background-color:#f7f8fa}@font-face{font-weight:400;font-family:vant-icon;font-style:normal;font-display:auto;src:url(https://img.yzcdn.cn/vant/vant-icon-db1de1.woff2) format('woff2'),url(https://img.yzcdn.cn/vant/vant-icon-db1de1.woff) format('woff'),url(https://img.yzcdn.cn/vant/vant-icon-db1de1.ttf) format('truetype')}.van-icon{position:relative;display:inline-block;font:normal normal normal 14px/1 vant-icon;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}.van-icon::before{display:inline-block}.van-icon-add-o::before{content:"\F000"}.van-icon-add-square::before{content:"\F001"}.van-icon-add::before{content:"\F002"}.van-icon-after-sale::before{content:"\F003"}.van-icon-aim::before{content:"\F004"}.van-icon-alipay::before{content:"\F005"}.van-icon-apps-o::before{content:"\F006"}.van-icon-arrow-down::before{content:"\F007"}.van-icon-arrow-left::before{content:"\F008"}.van-icon-arrow-up::before{content:"\F009"}.van-icon-arrow::before{content:"\F00A"}.van-icon-ascending::before{content:"\F00B"}.van-icon-audio::before{content:"\F00C"}.van-icon-award-o::before{content:"\F00D"}.van-icon-award::before{content:"\F00E"}.van-icon-bag-o::before{content:"\F00F"}.van-icon-bag::before{content:"\F010"}.van-icon-balance-list-o::before{content:"\F011"}.van-icon-balance-list::before{content:"\F012"}.van-icon-balance-o::before{content:"\F013"}.van-icon-balance-pay::before{content:"\F014"}.van-icon-bar-chart-o::before{content:"\F015"}.van-icon-bars::before{content:"\F016"}.van-icon-bell::before{content:"\F017"}.van-icon-bill-o::before{content:"\F018"}.van-icon-bill::before{content:"\F019"}.van-icon-birthday-cake-o::before{content:"\F01A"}.van-icon-bookmark-o::before{content:"\F01B"}.van-icon-bookmark::before{content:"\F01C"}.van-icon-browsing-history-o::before{content:"\F01D"}.van-icon-browsing-history::before{content:"\F01E"}.van-icon-brush-o::before{content:"\F01F"}.van-icon-bulb-o::before{content:"\F020"}.van-icon-bullhorn-o::before{content:"\F021"}.van-icon-calender-o::before{content:"\F022"}.van-icon-card::before{content:"\F023"}.van-icon-cart-circle-o::before{content:"\F024"}.van-icon-cart-circle::before{content:"\F025"}.van-icon-cart-o::before{content:"\F026"}.van-icon-cart::before{content:"\F027"}.van-icon-cash-back-record::before{content:"\F028"}.van-icon-cash-on-deliver::before{content:"\F029"}.van-icon-cashier-o::before{content:"\F02A"}.van-icon-certificate::before{content:"\F02B"}.van-icon-chart-trending-o::before{content:"\F02C"}.van-icon-chat-o::before{content:"\F02D"}.van-icon-chat::before{content:"\F02E"}.van-icon-checked::before{content:"\F02F"}.van-icon-circle::before{content:"\F030"}.van-icon-clear::before{content:"\F031"}.van-icon-clock-o::before{content:"\F032"}.van-icon-clock::before{content:"\F033"}.van-icon-close::before{content:"\F034"}.van-icon-closed-eye::before{content:"\F035"}.van-icon-cluster-o::before{content:"\F036"}.van-icon-cluster::before{content:"\F037"}.van-icon-column::before{content:"\F038"}.van-icon-comment-circle-o::before{content:"\F039"}.van-icon-comment-circle::before{content:"\F03A"}.van-icon-comment-o::before{content:"\F03B"}.van-icon-comment::before{content:"\F03C"}.van-icon-completed::before{content:"\F03D"}.van-icon-contact::before{content:"\F03E"}.van-icon-coupon-o::before{content:"\F03F"}.van-icon-coupon::before{content:"\F040"}.van-icon-credit-pay::before{content:"\F041"}.van-icon-cross::before{content:"\F042"}.van-icon-debit-pay::before{content:"\F043"}.van-icon-delete::before{content:"\F044"}.van-icon-descending::before{content:"\F045"}.van-icon-description::before{content:"\F046"}.van-icon-desktop-o::before{content:"\F047"}.van-icon-diamond-o::before{content:"\F048"}.van-icon-diamond::before{content:"\F049"}.van-icon-discount::before{content:"\F04A"}.van-icon-down::before{content:"\F04B"}.van-icon-ecard-pay::before{content:"\F04C"}.van-icon-edit::before{content:"\F04D"}.van-icon-ellipsis::before{content:"\F04E"}.van-icon-empty::before{content:"\F04F"}.van-icon-envelop-o::before{content:"\F050"}.van-icon-exchange::before{content:"\F051"}.van-icon-expand-o::before{content:"\F052"}.van-icon-expand::before{content:"\F053"}.van-icon-eye-o::before{content:"\F054"}.van-icon-eye::before{content:"\F055"}.van-icon-fail::before{content:"\F056"}.van-icon-failure::before{content:"\F057"}.van-icon-filter-o::before{content:"\F058"}.van-icon-fire-o::before{content:"\F059"}.van-icon-fire::before{content:"\F05A"}.van-icon-flag-o::before{content:"\F05B"}.van-icon-flower-o::before{content:"\F05C"}.van-icon-free-postage::before{content:"\F05D"}.van-icon-friends-o::before{content:"\F05E"}.van-icon-friends::before{content:"\F05F"}.van-icon-gem-o::before{content:"\F060"}.van-icon-gem::before{content:"\F061"}.van-icon-gift-card-o::before{content:"\F062"}.van-icon-gift-card::before{content:"\F063"}.van-icon-gift-o::before{content:"\F064"}.van-icon-gift::before{content:"\F065"}.van-icon-gold-coin-o::before{content:"\F066"}.van-icon-gold-coin::before{content:"\F067"}.van-icon-good-job-o::before{content:"\F068"}.van-icon-good-job::before{content:"\F069"}.van-icon-goods-collect-o::before{content:"\F06A"}.van-icon-goods-collect::before{content:"\F06B"}.van-icon-graphic::before{content:"\F06C"}.van-icon-home-o::before{content:"\F06D"}.van-icon-hot-o::before{content:"\F06E"}.van-icon-hot-sale-o::before{content:"\F06F"}.van-icon-hot-sale::before{content:"\F070"}.van-icon-hot::before{content:"\F071"}.van-icon-hotel-o::before{content:"\F072"}.van-icon-idcard::before{content:"\F073"}.van-icon-info-o::before{content:"\F074"}.van-icon-info::before{content:"\F075"}.van-icon-invition::before{content:"\F076"}.van-icon-label-o::before{content:"\F077"}.van-icon-label::before{content:"\F078"}.van-icon-like-o::before{content:"\F079"}.van-icon-like::before{content:"\F07A"}.van-icon-live::before{content:"\F07B"}.van-icon-location-o::before{content:"\F07C"}.van-icon-location::before{content:"\F07D"}.van-icon-lock::before{content:"\F07E"}.van-icon-logistics::before{content:"\F07F"}.van-icon-manager-o::before{content:"\F080"}.van-icon-manager::before{content:"\F081"}.van-icon-map-marked::before{content:"\F082"}.van-icon-medal-o::before{content:"\F083"}.van-icon-medal::before{content:"\F084"}.van-icon-more-o::before{content:"\F085"}.van-icon-more::before{content:"\F086"}.van-icon-music-o::before{content:"\F087"}.van-icon-music::before{content:"\F088"}.van-icon-new-arrival-o::before{content:"\F089"}.van-icon-new-arrival::before{content:"\F08A"}.van-icon-new-o::before{content:"\F08B"}.van-icon-new::before{content:"\F08C"}.van-icon-newspaper-o::before{content:"\F08D"}.van-icon-notes-o::before{content:"\F08E"}.van-icon-orders-o::before{content:"\F08F"}.van-icon-other-pay::before{content:"\F090"}.van-icon-paid::before{content:"\F091"}.van-icon-passed::before{content:"\F092"}.van-icon-pause-circle-o::before{content:"\F093"}.van-icon-pause-circle::before{content:"\F094"}.van-icon-pause::before{content:"\F095"}.van-icon-peer-pay::before{content:"\F096"}.van-icon-pending-payment::before{content:"\F097"}.van-icon-phone-circle-o::before{content:"\F098"}.van-icon-phone-circle::before{content:"\F099"}.van-icon-phone-o::before{content:"\F09A"}.van-icon-phone::before{content:"\F09B"}.van-icon-photo-o::before{content:"\F09C"}.van-icon-photo::before{content:"\F09D"}.van-icon-photograph::before{content:"\F09E"}.van-icon-play-circle-o::before{content:"\F09F"}.van-icon-play-circle::before{content:"\F0A0"}.van-icon-play::before{content:"\F0A1"}.van-icon-plus::before{content:"\F0A2"}.van-icon-point-gift-o::before{content:"\F0A3"}.van-icon-point-gift::before{content:"\F0A4"}.van-icon-points::before{content:"\F0A5"}.van-icon-printer::before{content:"\F0A6"}.van-icon-qr-invalid::before{content:"\F0A7"}.van-icon-qr::before{content:"\F0A8"}.van-icon-question-o::before{content:"\F0A9"}.van-icon-question::before{content:"\F0AA"}.van-icon-records::before{content:"\F0AB"}.van-icon-refund-o::before{content:"\F0AC"}.van-icon-replay::before{content:"\F0AD"}.van-icon-scan::before{content:"\F0AE"}.van-icon-search::before{content:"\F0AF"}.van-icon-send-gift-o::before{content:"\F0B0"}.van-icon-send-gift::before{content:"\F0B1"}.van-icon-service-o::before{content:"\F0B2"}.van-icon-service::before{content:"\F0B3"}.van-icon-setting-o::before{content:"\F0B4"}.van-icon-setting::before{content:"\F0B5"}.van-icon-share::before{content:"\F0B6"}.van-icon-shop-collect-o::before{content:"\F0B7"}.van-icon-shop-collect::before{content:"\F0B8"}.van-icon-shop-o::before{content:"\F0B9"}.van-icon-shop::before{content:"\F0BA"}.van-icon-shopping-cart-o::before{content:"\F0BB"}.van-icon-shopping-cart::before{content:"\F0BC"}.van-icon-shrink::before{content:"\F0BD"}.van-icon-sign::before{content:"\F0BE"}.van-icon-smile-comment-o::before{content:"\F0BF"}.van-icon-smile-comment::before{content:"\F0C0"}.van-icon-smile-o::before{content:"\F0C1"}.van-icon-smile::before{content:"\F0C2"}.van-icon-star-o::before{content:"\F0C3"}.van-icon-star::before{content:"\F0C4"}.van-icon-stop-circle-o::before{content:"\F0C5"}.van-icon-stop-circle::before{content:"\F0C6"}.van-icon-stop::before{content:"\F0C7"}.van-icon-success::before{content:"\F0C8"}.van-icon-thumb-circle-o::before{content:"\F0C9"}.van-icon-thumb-circle::before{content:"\F0CA"}.van-icon-todo-list-o::before{content:"\F0CB"}.van-icon-todo-list::before{content:"\F0CC"}.van-icon-tosend::before{content:"\F0CD"}.van-icon-tv-o::before{content:"\F0CE"}.van-icon-umbrella-circle::before{content:"\F0CF"}.van-icon-underway-o::before{content:"\F0D0"}.van-icon-underway::before{content:"\F0D1"}.van-icon-upgrade::before{content:"\F0D2"}.van-icon-user-circle-o::before{content:"\F0D3"}.van-icon-user-o::before{content:"\F0D4"}.van-icon-video-o::before{content:"\F0D5"}.van-icon-video::before{content:"\F0D6"}.van-icon-vip-card-o::before{content:"\F0D7"}.van-icon-vip-card::before{content:"\F0D8"}.van-icon-volume-o::before{content:"\F0D9"}.van-icon-volume::before{content:"\F0DA"}.van-icon-wap-home-o::before{content:"\F0DB"}.van-icon-wap-home::before{content:"\F0DC"}.van-icon-wap-nav::before{content:"\F0DD"}.van-icon-warn-o::before{content:"\F0DE"}.van-icon-warning-o::before{content:"\F0DF"}.van-icon-warning::before{content:"\F0E0"}.van-icon-weapp-nav::before{content:"\F0E1"}.van-icon-wechat::before{content:"\F0E2"}.van-icon-youzan-shield::before{content:"\F0E3"}.van-icon__image{width:1em;height:1em;object-fit:contain}.van-tabbar-item{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-flex:1;-webkit-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;color:#646566;font-size:12px;line-height:1;cursor:pointer}.van-tabbar-item__icon{position:relative;margin-bottom:5px;font-size:18px}.van-tabbar-item__icon .van-icon{display:block;min-width:1em}.van-tabbar-item__icon img{display:block;height:18px}.van-tabbar-item--active{color:#1989fa}.van-tabbar-item .van-info{margin-top:2px}.van-step{position:relative;-webkit-box-flex:1;-webkit-flex:1;flex:1;color:#969799;font-size:14px}.van-step__circle{display:block;width:5px;height:5px;background-color:#969799;border-radius:50%}.van-step__line{position:absolute;background-color:#ebedf0;-webkit-transition:background-color .3s;transition:background-color .3s}.van-step--horizontal{float:left}.van-step--horizontal:first-child .van-step__title{margin-left:0;-webkit-transform:none;transform:none}.van-step--horizontal:last-child{position:absolute;right:1px;width:auto}.van-step--horizontal:last-child .van-step__title{margin-left:0;-webkit-transform:none;transform:none}.van-step--horizontal:last-child .van-step__circle-container{right:-9px;left:auto}.van-step--horizontal .van-step__circle-container{position:absolute;top:30px;left:-8px;z-index:1;padding:0 8px;background-color:#fff;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.van-step--horizontal .van-step__title{display:inline-block;margin-left:3px;font-size:12px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media (max-width:321px){.van-step--horizontal .van-step__title{font-size:11px}}.van-step--horizontal .van-step__line{top:30px;left:0;width:100%;height:1px}.van-step--horizontal .van-step__icon{display:block;font-size:12px}.van-step--horizontal .van-step--process{color:#323233}.van-step--vertical{display:block;float:none;padding:10px 10px 10px 0;line-height:18px}.van-step--vertical:not(:last-child)::after{border-bottom-width:1px}.van-step--vertical:first-child::before{position:absolute;top:0;left:-15px;z-index:1;width:1px;height:20px;background-color:#fff;content:''}.van-step--vertical .van-step__circle-container{position:absolute;top:19px;left:-15px;z-index:2;font-size:12px;line-height:1;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.van-step--vertical .van-step__line{top:16px;left:-15px;width:1px;height:100%}.van-step:last-child .van-step__line{width:0}.van-step--finish{color:#323233}.van-step--finish .van-step__circle,.van-step--finish .van-step__line{background-color:#07c160}.van-step__icon,.van-step__title{-webkit-transition:color .3s;transition:color .3s}.van-step__icon--active,.van-step__title--active{color:#07c160}.van-rate{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none}.van-rate__item{position:relative}.van-rate__item:not(:last-child){padding-right:4px}.van-rate__icon{display:block;width:1em;color:#c8c9cc;font-size:20px}.van-rate__icon--half{position:absolute;top:0;left:0;width:.5em;overflow:hidden}.van-rate__icon--full{color:#ffd21e}.van-rate__icon--disabled{color:#bdbdbd}.van-rate--disabled{cursor:not-allowed}.van-rate--readonly{cursor:default}.van-notice-bar{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;height:40px;padding:0 16px;color:#ed6a0c;font-size:14px;line-height:24px;background-color:#fffbe8}.van-notice-bar__left-icon,.van-notice-bar__right-icon{min-width:22px;font-size:16px}.van-notice-bar__right-icon{text-align:right;cursor:pointer}.van-notice-bar__wrap{position:relative;-webkit-box-flex:1;-webkit-flex:1;flex:1;height:24px;overflow:hidden}.van-notice-bar__content{position:absolute;white-space:nowrap}.van-notice-bar__content.van-ellipsis{max-width:100%}.van-notice-bar__play{-webkit-animation:van-notice-bar-play linear both;animation:van-notice-bar-play linear both}.van-notice-bar__play--infinite{-webkit-animation:van-notice-bar-play-infinite linear infinite both;animation:van-notice-bar-play-infinite linear infinite both}.van-notice-bar--wrapable{height:auto;padding:8px 16px}.van-notice-bar--wrapable .van-notice-bar__wrap{height:auto}.van-notice-bar--wrapable .van-notice-bar__content{position:relative;white-space:normal;word-wrap:break-word}@-webkit-keyframes van-notice-bar-play{to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes van-notice-bar-play{to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@-webkit-keyframes van-notice-bar-play-infinite{to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes van-notice-bar-play-infinite{to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.van-nav-bar{position:relative;z-index:1;height:46px;line-height:46px;text-align:center;background-color:#fff;-webkit-user-select:none;user-select:none}.van-nav-bar .van-icon{color:#1989fa}.van-nav-bar__arrow{min-width:1em;margin-right:4px;font-size:16px}.van-nav-bar--fixed{position:fixed;top:0;left:0;width:100%}.van-nav-bar__title{max-width:60%;margin:0 auto;color:#323233;font-weight:500;font-size:16px}.van-nav-bar__left,.van-nav-bar__right{position:absolute;top:0;bottom:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;padding:0 16px;font-size:14px;cursor:pointer}.van-nav-bar__left:active,.van-nav-bar__right:active{opacity:.7}.van-nav-bar__left{left:0}.van-nav-bar__right{right:0}.van-nav-bar__text{color:#1989fa}.van-grid-item{position:relative;box-sizing:border-box}.van-grid-item--square{height:0}.van-grid-item__content{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;box-sizing:border-box;height:100%;padding:16px 8px;background-color:#fff}.van-grid-item__content::after{z-index:1;border-width:0 1px 1px 0}.van-grid-item__content--square{position:absolute;top:0;right:0;left:0}.van-grid-item__content--center{-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.van-grid-item__content--surround::after{border-width:1px}.van-grid-item__content--clickable{cursor:pointer}.van-grid-item__content--clickable:active{background-color:#f2f3f5}.van-grid-item__icon{font-size:28px}.van-grid-item__icon-wrapper{position:relative}.van-grid-item__text{color:#646566;font-size:12px;word-wrap:break-word}.van-grid-item__icon+.van-grid-item__text{margin-top:8px}.van-goods-action-icon{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;min-width:48px;height:100%;color:#646566;font-size:10px;line-height:1;text-align:center;background-color:#fff;cursor:pointer}.van-goods-action-icon:active{background-color:#f2f3f5}.van-goods-action-icon__icon{position:relative;width:1em;margin:0 auto 5px;color:#323233;font-size:18px}.van-checkbox{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.van-checkbox--disabled{cursor:not-allowed}.van-checkbox--label-disabled{cursor:default}.van-checkbox--horizontal{margin-right:12px}.van-checkbox__icon{-webkit-box-flex:0;-webkit-flex:none;flex:none;height:1em;font-size:20px;line-height:1em;cursor:pointer}.van-checkbox__icon .van-icon{display:block;box-sizing:border-box;width:1.25em;height:1.25em;color:transparent;font-size:.8em;line-height:inherit;text-align:center;border:1px solid #c8c9cc;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:color,border-color,background-color;transition-property:color,border-color,background-color}.van-checkbox__icon--round .van-icon{border-radius:100%}.van-checkbox__icon--checked .van-icon{color:#fff;background-color:#1989fa;border-color:#1989fa}.van-checkbox__icon--disabled{cursor:not-allowed}.van-checkbox__icon--disabled .van-icon{background-color:#ebedf0;border-color:#c8c9cc}.van-checkbox__icon--disabled.van-checkbox__icon--checked .van-icon{color:#c8c9cc}.van-checkbox__label{margin-left:8px;color:#323233;line-height:20px}.van-checkbox__label--left{margin:0 8px 0 0}.van-checkbox__label--disabled{color:#c8c9cc}.van-coupon{margin:0 12px 12px;overflow:hidden;background-color:#fff;border-radius:8px;box-shadow:0 0 4px rgba(0,0,0,.1)}.van-coupon:active{background-color:#f2f3f5}.van-coupon__content{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;box-sizing:border-box;min-height:84px;padding:14px 0;color:#323233}.van-coupon__head{position:relative;min-width:96px;padding:0 8px;color:#ee0a24;text-align:center}.van-coupon__amount,.van-coupon__condition,.van-coupon__name,.van-coupon__valid{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-coupon__amount{margin-bottom:6px;font-weight:500;font-size:30px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-coupon__amount span{font-weight:400;font-size:40%}.van-coupon__amount span:not(:empty){margin-left:2px}.van-coupon__condition{font-size:12px;line-height:16px;white-space:pre-wrap}.van-coupon__body{position:relative;-webkit-box-flex:1;-webkit-flex:1;flex:1;border-radius:0 8px 8px 0}.van-coupon__name{margin-bottom:10px;font-weight:700;font-size:14px;line-height:20px}.van-coupon__valid{font-size:12px}.van-coupon__corner{position:absolute;top:0;right:16px;bottom:0}.van-coupon__description{padding:8px 16px;font-size:12px;border-top:1px dashed #ebedf0}.van-coupon--disabled:active{background-color:#fff}.van-coupon--disabled .van-coupon-item__content{height:74px}.van-coupon--disabled .van-coupon__head{color:inherit}.van-image{position:relative;display:inline-block}.van-image--round{overflow:hidden;border-radius:50%}.van-image--round img{border-radius:inherit}.van-image__error,.van-image__img,.van-image__loading{display:block;width:100%;height:100%}.van-image__error,.van-image__loading{position:absolute;top:0;left:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;color:#969799;font-size:14px;background-color:#f7f8fa}.van-image__loading-icon{font-size:22px}.van-image__error-icon{font-size:22px}.van-radio{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.van-radio--disabled{cursor:not-allowed}.van-radio--label-disabled{cursor:default}.van-radio--horizontal{margin-right:12px}.van-radio__icon{-webkit-box-flex:0;-webkit-flex:none;flex:none;height:1em;font-size:20px;line-height:1em;cursor:pointer}.van-radio__icon .van-icon{display:block;box-sizing:border-box;width:1.25em;height:1.25em;color:transparent;font-size:.8em;line-height:inherit;text-align:center;border:1px solid #c8c9cc;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:color,border-color,background-color;transition-property:color,border-color,background-color}.van-radio__icon--round .van-icon{border-radius:100%}.van-radio__icon--checked .van-icon{color:#fff;background-color:#1989fa;border-color:#1989fa}.van-radio__icon--disabled{cursor:not-allowed}.van-radio__icon--disabled .van-icon{background-color:#ebedf0;border-color:#c8c9cc}.van-radio__icon--disabled.van-radio__icon--checked .van-icon{color:#c8c9cc}.van-radio__label{margin-left:8px;color:#323233;line-height:20px}.van-radio__label--left{margin:0 8px 0 0}.van-radio__label--disabled{color:#c8c9cc}.van-tag{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;padding:.2em .5em;color:#fff;font-size:10px;line-height:normal;border-radius:.2em}.van-tag::after{border-color:currentColor;border-radius:.4em}.van-tag--default{background-color:#969799}.van-tag--default.van-tag--plain{color:#969799}.van-tag--danger{background-color:#ee0a24}.van-tag--danger.van-tag--plain{color:#ee0a24}.van-tag--primary{background-color:#1989fa}.van-tag--primary.van-tag--plain{color:#1989fa}.van-tag--success{background-color:#07c160}.van-tag--success.van-tag--plain{color:#07c160}.van-tag--warning{background-color:#ff976a}.van-tag--warning.van-tag--plain{color:#ff976a}.van-tag--plain{background-color:#fff}.van-tag--mark{padding-right:.7em}.van-tag--mark,.van-tag--mark::after{border-radius:0 999px 999px 0}.van-tag--round,.van-tag--round::after{border-radius:999px}.van-tag--medium{font-size:12px}.van-tag--large{font-size:14px}.van-tag__close{min-width:1em;margin-left:2px;cursor:pointer}.van-card{position:relative;box-sizing:border-box;padding:8px 16px;color:#323233;font-size:12px;background-color:#fafafa}.van-card:not(:first-child){margin-top:8px}.van-card__header{display:-webkit-box;display:-webkit-flex;display:flex}.van-card__thumb{position:relative;-webkit-box-flex:0;-webkit-flex:none;flex:none;width:88px;height:88px;margin-right:8px}.van-card__thumb img{border-radius:8px}.van-card__content{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-flex:1;-webkit-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;min-width:0;min-height:88px}.van-card__content--centered{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.van-card__desc,.van-card__title{word-wrap:break-word}.van-card__title{max-height:32px;font-weight:500;line-height:16px}.van-card__desc{max-height:20px;color:#646566;line-height:20px}.van-card__bottom{line-height:20px}.van-card__price{display:inline-block;color:#323233;font-weight:500;font-size:12px}.van-card__price-integer{font-size:16px;font-family:Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif}.van-card__price-decimal{font-family:Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif}.van-card__origin-price{display:inline-block;margin-left:5px;color:#969799;font-size:10px;text-decoration:line-through}.van-card__num{float:right;color:#969799}.van-card__tag{position:absolute;top:2px;left:0}.van-card__footer{-webkit-box-flex:0;-webkit-flex:none;flex:none;text-align:right}.van-card__footer .van-button{margin-left:5px}.van-cell{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;box-sizing:border-box;width:100%;padding:10px 16px;overflow:hidden;color:#323233;font-size:14px;line-height:24px;background-color:#fff}.van-cell:not(:last-child)::after{position:absolute;box-sizing:border-box;content:' ';pointer-events:none;right:0;bottom:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-cell--borderless::after{display:none}.van-cell__label{margin-top:3px;color:#969799;font-size:12px;line-height:18px}.van-cell__title,.van-cell__value{-webkit-box-flex:1;-webkit-flex:1;flex:1}.van-cell__value{position:relative;overflow:hidden;color:#969799;text-align:right;vertical-align:middle;word-wrap:break-word}.van-cell__value--alone{color:#323233;text-align:left}.van-cell__left-icon,.van-cell__right-icon{min-width:1em;height:24px;font-size:16px;line-height:24px}.van-cell__left-icon{margin-right:5px}.van-cell__right-icon{margin-left:5px;color:#969799}.van-cell--clickable{cursor:pointer}.van-cell--clickable:active{background-color:#f2f3f5}.van-cell--required{overflow:visible}.van-cell--required::before{position:absolute;left:8px;color:#ee0a24;font-size:14px;content:'*'}.van-cell--center{-webkit-box-align:center;-webkit-align-items:center;align-items:center}.van-cell--large{padding-top:12px;padding-bottom:12px}.van-cell--large .van-cell__title{font-size:16px}.van-cell--large .van-cell__label{font-size:14px}.van-coupon-cell--selected{color:#323233}.van-contact-card{padding:16px}.van-contact-card__value{margin-left:5px;line-height:20px}.van-contact-card--add .van-contact-card__value{line-height:40px}.van-contact-card--add .van-cell__left-icon{color:#1989fa;font-size:40px}.van-contact-card::before{position:absolute;right:0;bottom:0;left:0;height:2px;background:-webkit-repeating-linear-gradient(135deg,#ff6c6c 0,#ff6c6c 20%,transparent 0,transparent 25%,#1989fa 0,#1989fa 45%,transparent 0,transparent 50%);background:repeating-linear-gradient(-45deg,#ff6c6c 0,#ff6c6c 20%,transparent 0,transparent 25%,#1989fa 0,#1989fa 45%,transparent 0,transparent 50%);background-size:80px;content:''}.van-collapse-item__title .van-cell__right-icon::before{-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.van-collapse-item__title::after{visibility:hidden}.van-collapse-item__title--expanded .van-cell__right-icon::before{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.van-collapse-item__title--expanded::after{visibility:visible}.van-collapse-item__title--disabled{cursor:not-allowed}.van-collapse-item__title--disabled,.van-collapse-item__title--disabled .van-cell__right-icon{color:#c8c9cc}.van-collapse-item__title--disabled:active{background-color:#fff}.van-collapse-item__wrapper{overflow:hidden;-webkit-transition:height .3s ease-in-out;transition:height .3s ease-in-out;will-change:height}.van-collapse-item__content{padding:16px;color:#969799;font-size:13px;line-height:1.5;background-color:#fff}.van-field__label{-webkit-box-flex:0;-webkit-flex:none;flex:none;box-sizing:border-box;width:90px}.van-field__label--center{text-align:center}.van-field__label--right{padding-right:16px;text-align:right}.van-field__value{overflow:visible}.van-field__body{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.van-field__control{display:block;box-sizing:border-box;width:100%;min-width:0;margin:0;padding:0;color:#323233;line-height:inherit;text-align:left;background-color:transparent;border:0;resize:none}.van-field__control::-webkit-input-placeholder{color:#969799}.van-field__control::placeholder{color:#969799}.van-field__control:disabled{color:#969799;background-color:transparent;cursor:not-allowed;opacity:1;-webkit-text-fill-color:currentColor}.van-field__control:read-only{cursor:default}.van-field__control--center{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;text-align:center}.van-field__control--right{-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;text-align:right}.van-field__control--custom{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;min-height:24px}.van-field__control[type=date],.van-field__control[type=datetime-local],.van-field__control[type=time]{min-height:24px}.van-field__control[type=search]{-webkit-appearance:none}.van-field__button,.van-field__clear,.van-field__icon,.van-field__right-icon{-webkit-flex-shrink:0;flex-shrink:0}.van-field__clear,.van-field__right-icon{margin-right:-8px;padding:0 8px;line-height:inherit}.van-field__clear{color:#c8c9cc;font-size:16px;cursor:pointer}.van-field__left-icon .van-icon,.van-field__right-icon .van-icon{display:block;min-width:1em;font-size:16px;line-height:inherit}.van-field__left-icon{margin-right:5px}.van-field__right-icon{color:#969799}.van-field__button{padding-left:8px}.van-field__error-message{color:#ee0a24;font-size:12px;text-align:left}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}.van-field__word-limit{margin-top:4px;color:#646566;font-size:12px;line-height:16px;text-align:right}.van-field__word-num--full{color:#ee0a24}.van-field--error .van-field__control::-webkit-input-placeholder{color:#ee0a24;-webkit-text-fill-color:currentColor}.van-field--error .van-field__control,.van-field--error .van-field__control::placeholder{color:#ee0a24;-webkit-text-fill-color:currentColor}.van-field--min-height .van-field__control{min-height:60px}.van-stepper{font-size:0;-webkit-user-select:none;user-select:none}.van-stepper__minus,.van-stepper__plus{position:relative;box-sizing:border-box;width:28px;height:28px;margin:0;padding:4px;color:#323233;vertical-align:middle;background-color:#f2f3f5;border:0;cursor:pointer}.van-stepper__minus::before,.van-stepper__plus::before{width:13px;height:1px}.van-stepper__minus::after,.van-stepper__plus::after{width:1px;height:13px}.van-stepper__minus::after,.van-stepper__minus::before,.van-stepper__plus::after,.van-stepper__plus::before{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;background-color:currentColor;content:''}.van-stepper__minus:active,.van-stepper__plus:active{background-color:#e8e8e8}.van-stepper__minus--disabled,.van-stepper__plus--disabled{color:#c8c9cc;background-color:#f7f8fa;cursor:not-allowed}.van-stepper__minus--disabled:active,.van-stepper__plus--disabled:active{background-color:#f7f8fa}.van-stepper__minus{border-radius:4px 0 0 4px}.van-stepper__minus::after{display:none}.van-stepper__plus{border-radius:0 4px 4px 0}.van-stepper__input{box-sizing:border-box;width:32px;height:28px;margin:0 2px;padding:0;color:#323233;font-size:14px;text-align:center;vertical-align:middle;background-color:#f2f3f5;border:0;border-width:1px 0;border-radius:0;-webkit-appearance:none}.van-stepper__input:disabled{color:#c8c9cc;background-color:#f2f3f5;-webkit-text-fill-color:currentColor;opacity:1}.van-stepper__input:read-only{cursor:default}.van-search{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;box-sizing:border-box;padding:10px 12px;background-color:#fff}.van-search__content{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-flex:1;-webkit-flex:1;flex:1;padding-left:8px;background-color:#f7f8fa;border-radius:2px}.van-search__content--round{border-radius:999px}.van-search__label{padding:0 5px;color:#323233;font-size:14px;line-height:34px}.van-search .van-cell{-webkit-box-flex:1;-webkit-flex:1;flex:1;padding:5px 8px 5px 0;background-color:transparent}.van-search .van-cell__left-icon{color:#969799}.van-search--show-action{padding-right:0}.van-search input::-webkit-search-cancel-button,.van-search input::-webkit-search-decoration,.van-search input::-webkit-search-results-button,.van-search input::-webkit-search-results-decoration{display:none}.van-search__action{padding:0 8px;color:#323233;font-size:14px;line-height:34px;cursor:pointer;-webkit-user-select:none;user-select:none}.van-search__action:active{background-color:#f2f3f5}.van-overflow-hidden{overflow:hidden!important}.van-popup{position:fixed;max-height:100%;overflow-y:auto;background-color:#fff;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-overflow-scrolling:touch}.van-popup--center{top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.van-popup--center.van-popup--round{border-radius:20px}.van-popup--top{top:0;left:0;width:100%}.van-popup--top.van-popup--round{border-radius:0 0 20px 20px}.van-popup--right{top:50%;right:0;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.van-popup--right.van-popup--round{border-radius:20px 0 0 20px}.van-popup--bottom{bottom:0;left:0;width:100%}.van-popup--bottom.van-popup--round{border-radius:20px 20px 0 0}.van-popup--left{top:50%;left:0;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.van-popup--left.van-popup--round{border-radius:0 20px 20px 0}.van-popup--safe-area-inset-bottom{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.van-popup-slide-bottom-enter-active,.van-popup-slide-left-enter-active,.van-popup-slide-right-enter-active,.van-popup-slide-top-enter-active{-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.van-popup-slide-bottom-leave-active,.van-popup-slide-left-leave-active,.van-popup-slide-right-leave-active,.van-popup-slide-top-leave-active{-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}.van-popup-slide-top-enter,.van-popup-slide-top-leave-active{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.van-popup-slide-right-enter,.van-popup-slide-right-leave-active{-webkit-transform:translate3d(100%,-50%,0);transform:translate3d(100%,-50%,0)}.van-popup-slide-bottom-enter,.van-popup-slide-bottom-leave-active{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.van-popup-slide-left-enter,.van-popup-slide-left-leave-active{-webkit-transform:translate3d(-100%,-50%,0);transform:translate3d(-100%,-50%,0)}.van-popup__close-icon{position:absolute;z-index:1;color:#c8c9cc;font-size:22px;cursor:pointer}.van-popup__close-icon:active{color:#969799}.van-popup__close-icon--top-left{top:16px;left:16px}.van-popup__close-icon--top-right{top:16px;right:16px}.van-popup__close-icon--bottom-left{bottom:16px;left:16px}.van-popup__close-icon--bottom-right{right:16px;bottom:16px}.van-share-sheet__header{padding:12px 16px 4px;text-align:center}.van-share-sheet__title{margin-top:8px;color:#323233;font-weight:400;font-size:14px;line-height:20px}.van-share-sheet__description{display:block;margin-top:8px;color:#969799;font-size:12px;line-height:16px}.van-share-sheet__options{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;padding:16px 0 16px 24px;overflow-x:auto;-webkit-overflow-scrolling:touch}.van-share-sheet__options--border::before{position:absolute;box-sizing:border-box;content:' ';pointer-events:none;top:0;right:0;left:16px;border-top:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-share-sheet__options::after{display:block;-webkit-flex-shrink:0;flex-shrink:0;width:24px;content:''}.van-share-sheet__option{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;margin-right:32px;cursor:pointer;-webkit-user-select:none;user-select:none}.van-share-sheet__option:last-child{margin-right:0}.van-share-sheet__option:active{opacity:.7}.van-share-sheet__icon{width:48px;height:48px}.van-share-sheet__name{margin-top:8px;color:#646566;font-size:12px}.van-share-sheet__cancel{display:block;width:100%;padding:0;font-size:16px;line-height:48px;text-align:center;background:#fff;border:none;cursor:pointer}.van-share-sheet__cancel::before{display:block;height:8px;background-color:#f7f8fa;content:' '}.van-share-sheet__cancel:active{background-color:#f2f3f5}.van-notify{box-sizing:border-box;padding:8px 16px;color:#fff;font-size:14px;line-height:20px;white-space:pre-wrap;text-align:center;word-wrap:break-word}.van-notify--primary{background-color:#1989fa}.van-notify--success{background-color:#07c160}.van-notify--danger{background-color:#ee0a24}.van-notify--warning{background-color:#ff976a}.van-dropdown-item{position:fixed;right:0;left:0;z-index:10;overflow:hidden}.van-dropdown-item__icon{display:block;line-height:inherit}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active{color:#1989fa}.van-dropdown-item__option--active .van-dropdown-item__icon{color:#1989fa}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__content{position:absolute;max-height:80%}.van-loading{position:relative;color:#c8c9cc;font-size:0;vertical-align:middle}.van-loading__spinner{position:relative;display:inline-block;width:30px;max-width:100%;height:30px;max-height:100%;vertical-align:middle;-webkit-animation:van-rotate .8s linear infinite;animation:van-rotate .8s linear infinite}.van-loading__spinner--spinner{-webkit-animation-timing-function:steps(12);animation-timing-function:steps(12)}.van-loading__spinner--spinner i{position:absolute;top:0;left:0;width:100%;height:100%}.van-loading__spinner--spinner i::before{display:block;width:2px;height:25%;margin:0 auto;background-color:currentColor;border-radius:40%;content:' '}.van-loading__spinner--circular{-webkit-animation-duration:2s;animation-duration:2s}.van-loading__circular{display:block;width:100%;height:100%}.van-loading__circular circle{-webkit-animation:van-circular 1.5s ease-in-out infinite;animation:van-circular 1.5s ease-in-out infinite;stroke:currentColor;stroke-width:3;stroke-linecap:round}.van-loading__text{display:inline-block;margin-left:8px;color:#969799;font-size:14px;vertical-align:middle}.van-loading--vertical{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.van-loading--vertical .van-loading__text{margin:8px 0 0}@-webkit-keyframes van-circular{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40}100%{stroke-dasharray:90,150;stroke-dashoffset:-120}}@keyframes van-circular{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40}100%{stroke-dasharray:90,150;stroke-dashoffset:-120}}.van-loading__spinner--spinner i:nth-of-type(1){-webkit-transform:rotate(30deg);transform:rotate(30deg);opacity:1}.van-loading__spinner--spinner i:nth-of-type(2){-webkit-transform:rotate(60deg);transform:rotate(60deg);opacity:.9375}.van-loading__spinner--spinner i:nth-of-type(3){-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:.875}.van-loading__spinner--spinner i:nth-of-type(4){-webkit-transform:rotate(120deg);transform:rotate(120deg);opacity:.8125}.van-loading__spinner--spinner i:nth-of-type(5){-webkit-transform:rotate(150deg);transform:rotate(150deg);opacity:.75}.van-loading__spinner--spinner i:nth-of-type(6){-webkit-transform:rotate(180deg);transform:rotate(180deg);opacity:.6875}.van-loading__spinner--spinner i:nth-of-type(7){-webkit-transform:rotate(210deg);transform:rotate(210deg);opacity:.625}.van-loading__spinner--spinner i:nth-of-type(8){-webkit-transform:rotate(240deg);transform:rotate(240deg);opacity:.5625}.van-loading__spinner--spinner i:nth-of-type(9){-webkit-transform:rotate(270deg);transform:rotate(270deg);opacity:.5}.van-loading__spinner--spinner i:nth-of-type(10){-webkit-transform:rotate(300deg);transform:rotate(300deg);opacity:.4375}.van-loading__spinner--spinner i:nth-of-type(11){-webkit-transform:rotate(330deg);transform:rotate(330deg);opacity:.375}.van-loading__spinner--spinner i:nth-of-type(12){-webkit-transform:rotate(360deg);transform:rotate(360deg);opacity:.3125}.van-pull-refresh{overflow:hidden;-webkit-user-select:none;user-select:none}.van-pull-refresh__track{position:relative;height:100%;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.van-pull-refresh__head{position:absolute;left:0;width:100%;height:50px;overflow:hidden;color:#969799;font-size:14px;line-height:50px;text-align:center;-webkit-transform:translateY(-100%);transform:translateY(-100%)}.van-number-keyboard{position:fixed;bottom:0;left:0;z-index:100;width:100%;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom);background-color:#f2f3f5;-webkit-user-select:none;user-select:none}.van-number-keyboard--with-title{border-radius:20px 20px 0 0}.van-number-keyboard__header{position:relative;box-sizing:content-box;height:30px;padding-top:6px;color:#646566;font-size:14px;line-height:30px;text-align:center}.van-number-keyboard__title{display:inline-block;font-weight:400}.van-number-keyboard__title-left{position:absolute;left:0}.van-number-keyboard__body{display:-webkit-box;display:-webkit-flex;display:flex;padding:6px 0 0 6px}.van-number-keyboard__keys{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-flex:3;-webkit-flex:3;flex:3;-webkit-flex-wrap:wrap;flex-wrap:wrap}.van-number-keyboard__close{position:absolute;right:0;padding:0 16px;color:#576b95;font-size:14px;background-color:transparent;border:none;cursor:pointer}.van-number-keyboard__close:active{opacity:.7}.van-number-keyboard__sidebar{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-flex:1;-webkit-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.van-number-keyboard--unfit{padding-bottom:0}.van-key{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;width:100%;height:56px;padding:0;font-size:28px;line-height:1.5;background-color:#fff;border:none;border-radius:8px;cursor:pointer}.van-key--large{height:100%}.van-key--blue,.van-key--delete{font-size:16px}.van-key--active{background-color:#ebedf0}.van-key--blue{color:#fff;background-color:#1989fa}.van-key--blue.van-key--active{background-color:#0570db}.van-key__wrapper{-webkit-box-flex:1;-webkit-flex:1;flex:1;-webkit-flex-basis:33%;flex-basis:33%;box-sizing:border-box;padding:0 6px 6px 0}.van-key__wrapper--wider{-webkit-flex-basis:66%;flex-basis:66%}.van-key__delete-icon{width:32px;height:22px}.van-key__collapse-icon{width:30px;height:24px}.van-key__loading-icon{color:#fff}.van-list__error-text,.van-list__finished-text,.van-list__loading{color:#969799;font-size:14px;line-height:50px;text-align:center}.van-list__placeholder{height:0;pointer-events:none}.van-switch{position:relative;display:inline-block;box-sizing:content-box;width:2em;height:1em;font-size:30px;background-color:#fff;border:1px solid rgba(0,0,0,.1);border-radius:1em;cursor:pointer;-webkit-transition:background-color .3s;transition:background-color .3s}.van-switch__node{position:absolute;top:0;left:0;z-index:1;width:1em;height:1em;background-color:#fff;border-radius:100%;box-shadow:0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05);-webkit-transition:-webkit-transform .3s cubic-bezier(.3,1.05,.4,1.05);transition:-webkit-transform .3s cubic-bezier(.3,1.05,.4,1.05);transition:transform .3s cubic-bezier(.3,1.05,.4,1.05);transition:transform .3s cubic-bezier(.3,1.05,.4,1.05),-webkit-transform .3s cubic-bezier(.3,1.05,.4,1.05)}.van-switch__loading{top:25%;left:25%;width:50%;height:50%;line-height:1}.van-switch--on{background-color:#1989fa}.van-switch--on .van-switch__node{-webkit-transform:translateX(1em);transform:translateX(1em)}.van-switch--on .van-switch__loading{color:#1989fa}.van-switch--disabled{cursor:not-allowed;opacity:.5}.van-switch--loading{cursor:default}.van-switch-cell{padding-top:9px;padding-bottom:9px}.van-switch-cell--large{padding-top:11px;padding-bottom:11px}.van-switch-cell .van-switch{float:right}.van-button{position:relative;display:inline-block;box-sizing:border-box;height:44px;margin:0;padding:0;font-size:16px;line-height:42px;text-align:center;border-radius:2px;cursor:pointer;-webkit-transition:opacity .2s;transition:opacity .2s;-webkit-appearance:none;-webkit-text-size-adjust:100%}.van-button::before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:#000;border:inherit;border-color:#000;border-radius:inherit;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);opacity:0;content:' '}.van-button:active::before{opacity:.1}.van-button--disabled::before,.van-button--loading::before{display:none}.van-button--default{color:#323233;background-color:#fff;border:1px solid #ebedf0}.van-button--primary{color:#fff;background-color:#07c160;border:1px solid #07c160}.van-button--info{color:#fff;background-color:#1989fa;border:1px solid #1989fa}.van-button--danger{color:#fff;background-color:#ee0a24;border:1px solid #ee0a24}.van-button--warning{color:#fff;background-color:#ff976a;border:1px solid #ff976a}.van-button--plain{background-color:#fff}.van-button--plain.van-button--primary{color:#07c160}.van-button--plain.van-button--info{color:#1989fa}.van-button--plain.van-button--danger{color:#ee0a24}.van-button--plain.van-button--warning{color:#ff976a}.van-button--large{width:100%;height:50px;line-height:48px}.van-button--normal{padding:0 15px;font-size:14px}.van-button--small{min-width:60px;height:30px;padding:0 8px;font-size:12px;line-height:28px}.van-button__loading{display:inline-block;color:inherit;vertical-align:top}.van-button--mini{display:inline-block;min-width:50px;height:22px;font-size:10px;line-height:20px}.van-button--mini+.van-button--mini{margin-left:4px}.van-button--block{display:block;width:100%}.van-button--disabled{cursor:not-allowed;opacity:.5}.van-button--loading{cursor:default}.van-button--round{border-radius:999px}.van-button--square{border-radius:0}.van-button__icon{min-width:1em;font-size:1.2em;line-height:inherit;vertical-align:top}.van-button__icon+.van-button__text,.van-button__loading+.van-button__text{display:inline-block;margin-left:5px;vertical-align:top}.van-button--hairline{border-width:0}.van-button--hairline::after{border-color:inherit;border-radius:4px}.van-button--hairline.van-button--round::after{border-radius:999px}.van-button--hairline.van-button--square::after{border-radius:0}.van-submit-bar{position:fixed;bottom:0;left:0;z-index:100;width:100%;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom);background-color:#fff;-webkit-user-select:none;user-select:none}.van-submit-bar__tip{padding:8px 12px;color:#f56723;font-size:12px;line-height:1.5;background-color:#fff7cc}.van-submit-bar__tip-icon{min-width:18px;font-size:12px;vertical-align:middle}.van-submit-bar__tip-text{vertical-align:middle}.van-submit-bar__bar{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;height:50px;padding:0 16px;font-size:14px}.van-submit-bar__text{-webkit-box-flex:1;-webkit-flex:1;flex:1;padding-right:12px;color:#323233;text-align:right}.van-submit-bar__text span{display:inline-block}.van-submit-bar__suffix-label{margin-left:5px;font-weight:500}.van-submit-bar__price{color:#ee0a24;font-weight:500;font-size:12px}.van-submit-bar__price--integer{font-size:20px;font-family:Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif}.van-submit-bar__button{width:110px;height:40px;font-weight:500;line-height:40px;border:none}.van-submit-bar__button--danger{background:-webkit-linear-gradient(left,#ff6034,#ee0a24);background:linear-gradient(to right,#ff6034,#ee0a24)}.van-submit-bar--unfit{padding-bottom:0}.van-goods-action-button{-webkit-box-flex:1;-webkit-flex:1;flex:1;height:40px;font-weight:500;font-size:14px;line-height:40px;border:none}.van-goods-action-button--first{margin-left:5px;border-top-left-radius:20px;border-bottom-left-radius:20px}.van-goods-action-button--last{margin-right:5px;border-top-right-radius:20px;border-bottom-right-radius:20px}.van-goods-action-button--warning{background:-webkit-linear-gradient(left,#ffd01e,#ff8917);background:linear-gradient(to right,#ffd01e,#ff8917)}.van-goods-action-button--danger{background:-webkit-linear-gradient(left,#ff6034,#ee0a24);background:linear-gradient(to right,#ff6034,#ee0a24)}@media (max-width:321px){.van-goods-action-button{font-size:13px}}.van-dialog{position:fixed;top:45%;left:50%;width:320px;overflow:hidden;font-size:16px;background-color:#fff;border-radius:16px;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:.3s;transition:.3s;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform}@media (max-width:321px){.van-dialog{width:90%}}.van-dialog__header{padding-top:24px;font-weight:500;line-height:24px;text-align:center}.van-dialog__header--isolated{padding:24px 0}.van-dialog__message{max-height:60vh;padding:24px;overflow-y:auto;font-size:14px;line-height:20px;white-space:pre-wrap;text-align:center;word-wrap:break-word;-webkit-overflow-scrolling:touch}.van-dialog__message--has-title{padding-top:12px;color:#646566}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__footer{overflow:hidden;-webkit-user-select:none;user-select:none}.van-dialog__footer--buttons{display:-webkit-box;display:-webkit-flex;display:flex}.van-dialog__footer--buttons .van-button{-webkit-box-flex:1;-webkit-flex:1;flex:1}.van-dialog .van-button{border:0}.van-dialog__confirm,.van-dialog__confirm:active{color:#1989fa}.van-dialog-bounce-enter{-webkit-transform:translate3d(-50%,-50%,0) scale(.7);transform:translate3d(-50%,-50%,0) scale(.7);opacity:0}.van-dialog-bounce-leave-active{-webkit-transform:translate3d(-50%,-50%,0) scale(.9);transform:translate3d(-50%,-50%,0) scale(.9);opacity:0}.van-contact-edit{padding:16px}.van-contact-edit__fields{overflow:hidden;border-radius:4px}.van-contact-edit__fields .van-cell__title{max-width:65px}.van-contact-edit__switch-cell{margin-top:10px;padding-top:9px;padding-bottom:9px;overflow:hidden;border-radius:4px}.van-contact-edit__switch-cell .van-cell__value{-webkit-box-flex:0;-webkit-flex:none;flex:none}.van-contact-edit__switch-cell .van-switch{vertical-align:top}.van-contact-edit__buttons{padding:32px 0}.van-contact-edit .van-button{margin-bottom:12px;font-size:16px}.van-toast{position:fixed;top:50%;left:50%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;box-sizing:content-box;width:88px;max-width:70%;min-height:88px;padding:16px;color:#fff;font-size:14px;line-height:20px;white-space:pre-wrap;text-align:center;word-wrap:break-word;background-color:rgba(50,50,51,.88);border-radius:8px;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.van-toast--unclickable{overflow:hidden}.van-toast--unclickable *{pointer-events:none}.van-toast--html,.van-toast--text{width:-webkit-fit-content;width:fit-content;min-width:96px;min-height:0;padding:8px 12px}.van-toast--html .van-toast__text,.van-toast--text .van-toast__text{margin-top:0}.van-toast--top{top:50px}.van-toast--bottom{top:auto;bottom:50px}.van-toast__icon{font-size:40px}.van-toast__loading{padding:4px;color:#fff}.van-toast__text{margin-top:8px}.van-calendar{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;height:100%;background-color:#fff}.van-calendar__popup.van-popup--bottom,.van-calendar__popup.van-popup--top{height:80%}.van-calendar__popup.van-popup--left,.van-calendar__popup.van-popup--right{height:100%}.van-calendar__popup .van-popup__close-icon{top:11px}.van-calendar__header{-webkit-flex-shrink:0;flex-shrink:0;box-shadow:0 2px 10px rgba(125,126,128,.16)}.van-calendar__header-subtitle,.van-calendar__header-title,.van-calendar__month-title{height:44px;font-weight:500;line-height:44px;text-align:center}.van-calendar__header-title{font-size:16px}.van-calendar__header-subtitle{font-size:14px}.van-calendar__month-title{font-size:14px}.van-calendar__weekdays{display:-webkit-box;display:-webkit-flex;display:flex}.van-calendar__weekday{-webkit-box-flex:1;-webkit-flex:1;flex:1;font-size:12px;line-height:30px;text-align:center}.van-calendar__body{-webkit-box-flex:1;-webkit-flex:1;flex:1;overflow:auto;-webkit-overflow-scrolling:touch}.van-calendar__days{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{position:absolute;top:50%;left:50%;z-index:0;color:rgba(242,243,245,.8);font-size:160px;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);pointer-events:none}.van-calendar__day,.van-calendar__selected-day{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;text-align:center}.van-calendar__day{position:relative;width:14.285%;height:64px;font-size:16px;cursor:pointer}.van-calendar__day--end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected,.van-calendar__day--start,.van-calendar__day--start-end{color:#fff;background-color:#ee0a24}.van-calendar__day--start{border-radius:4px 0 0 4px}.van-calendar__day--end{border-radius:0 4px 4px 0}.van-calendar__day--multiple-selected,.van-calendar__day--start-end{border-radius:4px}.van-calendar__day--middle{color:#ee0a24}.van-calendar__day--middle::after{position:absolute;top:0;right:0;bottom:0;left:0;background-color:currentColor;opacity:.1;content:''}.van-calendar__day--disabled{color:#c8c9cc;cursor:default}.van-calendar__bottom-info,.van-calendar__top-info{position:absolute;right:0;left:0;font-size:10px;line-height:14px}@media (max-width:350px){.van-calendar__bottom-info,.van-calendar__top-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{width:54px;height:54px;color:#fff;background-color:#ee0a24;border-radius:4px}.van-calendar__footer{-webkit-flex-shrink:0;flex-shrink:0;padding:0 16px;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.van-calendar__footer--unfit{padding-bottom:0}.van-calendar__confirm{height:36px;margin:7px 0;line-height:34px}.van-picker{position:relative;background-color:#fff;-webkit-user-select:none;user-select:none;-webkit-text-size-adjust:100%}.van-picker__toolbar{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;height:44px;line-height:44px}.van-picker__cancel,.van-picker__confirm{padding:0 16px;color:#1989fa;font-size:14px;background-color:transparent;border:none;cursor:pointer}.van-picker__cancel:active,.van-picker__confirm:active{background-color:#f2f3f5}.van-picker__title{max-width:50%;font-weight:500;font-size:16px;text-align:center}.van-picker__columns{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;cursor:grab}.van-picker__loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;color:#1989fa;background-color:rgba(255,255,255,.9)}.van-picker__frame{position:absolute;top:50%;left:0;z-index:3;width:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%);pointer-events:none}.van-picker__mask{position:absolute;top:0;left:0;z-index:2;width:100%;height:100%;background-image:-webkit-linear-gradient(top,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4)),-webkit-linear-gradient(bottom,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4));background-image:linear-gradient(180deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4)),linear-gradient(0deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4));background-repeat:no-repeat;background-position:top,bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:none}.van-picker-column{-webkit-box-flex:1;-webkit-flex:1;flex:1;overflow:hidden;font-size:16px;text-align:center}.van-picker-column__wrapper{-webkit-transition-timing-function:cubic-bezier(.23,1,.68,1);transition-timing-function:cubic-bezier(.23,1,.68,1)}.van-picker-column__item{padding:0 5px;color:#000}.van-picker-column__item--disabled{opacity:.3}.van-address-edit{padding:12px}.van-address-edit__fields{overflow:hidden;border-radius:8px}.van-address-edit__default{margin-top:12px;overflow:hidden;border-radius:8px}.van-address-edit__buttons{padding:32px 4px}.van-address-edit__buttons .van-button{margin-bottom:12px}.van-address-edit-detail{padding:0}.van-address-edit-detail__search-item{background-color:#f2f3f5}.van-address-edit-detail__keyword{color:#ee0a24}.van-address-edit-detail__finish{color:#1989fa;font-size:12px}.van-action-sheet{max-height:80%;color:#323233}.van-action-sheet__cancel,.van-action-sheet__item{display:block;width:100%;padding:0;font-size:16px;line-height:50px;text-align:center;background-color:#fff;border:none;cursor:pointer}.van-action-sheet__cancel:active,.van-action-sheet__item:active{background-color:#f2f3f5}.van-action-sheet__item{height:50px}.van-action-sheet__item--disabled,.van-action-sheet__item--loading{color:#c8c9cc}.van-action-sheet__item--disabled:active,.van-action-sheet__item--loading:active{background-color:#fff}.van-action-sheet__item--disabled{cursor:not-allowed}.van-action-sheet__item--loading{cursor:default}.van-action-sheet__subname{margin-left:4px;color:#646566;font-size:12px}.van-action-sheet__cancel::before{display:block;height:8px;background-color:#f7f8fa;content:' '}.van-action-sheet__header{font-weight:500;font-size:16px;line-height:44px;text-align:center}.van-action-sheet__description{padding:16px;color:#646566;font-size:14px;line-height:20px;text-align:center}.van-action-sheet__close{position:absolute;top:0;right:0;padding:0 16px;color:#c8c9cc;font-size:22px;line-height:inherit}.van-action-sheet__close:active{color:#969799}.van-radio-group--horizontal{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.van-contact-list{box-sizing:border-box;height:100%;padding-bottom:50px}.van-contact-list__item{padding:16px}.van-contact-list__item-value{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;padding-right:32px;padding-left:8px}.van-contact-list__item-tag{-webkit-box-flex:0;-webkit-flex:none;flex:none;margin-left:8px;padding-top:0;padding-bottom:0;line-height:1.4em}.van-contact-list__group{box-sizing:border-box;height:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch}.van-contact-list__edit{font-size:16px}.van-contact-list__bottom{position:fixed;right:0;bottom:0;left:0;z-index:999;padding:5px 16px;background-color:#fff}.van-contact-list__add{height:40px;line-height:38px}.van-address-list{box-sizing:border-box;height:100%;padding:12px 12px 100px}.van-address-list__bottom{position:fixed;bottom:0;left:0;z-index:999;box-sizing:border-box;width:100%;padding:5px 16px;background-color:#fff}.van-address-list__add{height:40px;line-height:38px}.van-address-list__disabled-text{padding:20px 0 16px;color:#969799;font-size:14px;line-height:20px}.van-address-item{padding:12px;background-color:#fff;border-radius:8px}.van-address-item:not(:last-child){margin-bottom:12px}.van-address-item__value{padding-right:44px}.van-address-item__name{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;margin-bottom:8px;font-size:16px;line-height:22px}.van-address-item__tag{-webkit-box-flex:0;-webkit-flex:none;flex:none;margin-left:8px;padding-top:0;padding-bottom:0;line-height:1.4em}.van-address-item__address{color:#323233;font-size:13px;line-height:18px}.van-address-item--disabled .van-address-item__address,.van-address-item--disabled .van-address-item__name{color:#c8c9cc}.van-address-item__edit{position:absolute;top:50%;right:16px;color:#969799;font-size:20px;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.van-address-item .van-cell{padding:0}.van-address-item .van-radio__label{margin-left:12px}.van-address-item .van-radio__icon--checked .van-icon{background-color:#ee0a24;border-color:#ee0a24}.van-cell-group{background-color:#fff}.van-cell-group__title{padding:16px 16px 8px;color:#969799;font-size:14px;line-height:16px}.van-panel{background:#fff}.van-panel__header-value{color:#ee0a24}.van-panel__footer{padding:8px 16px}.van-checkbox-group--horizontal{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.van-circle{position:relative;display:inline-block;text-align:center}.van-circle svg{position:absolute;top:0;left:0;width:100%;height:100%}.van-circle__layer{fill:none;stroke-linecap:round}.van-circle__text{position:absolute;top:50%;left:0;box-sizing:border-box;width:100%;padding:0 4px;color:#323233;font-weight:500;font-size:14px;line-height:18px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.van-col{float:left;box-sizing:border-box;min-height:1px}.van-col--1{width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{width:100%}.van-col--offset-24{margin-left:100%}.van-count-down{color:#323233;font-size:14px;line-height:20px}.van-tab__pane,.van-tab__pane-wrapper{-webkit-flex-shrink:0;flex-shrink:0;box-sizing:border-box;width:100%}.van-tab__pane-wrapper--inactive{height:0;overflow:visible}.van-sticky--fixed{position:fixed;top:0;right:0;left:0;z-index:99}.van-tab{position:relative;-webkit-box-flex:1;-webkit-flex:1;flex:1;box-sizing:border-box;min-width:0;padding:0 5px;color:#646566;font-size:14px;line-height:44px;text-align:center;cursor:pointer}.van-tab--active{color:#323233;font-weight:500}.van-tab--disabled{color:#c8c9cc;cursor:not-allowed}.van-tab__text{position:relative}.van-tabs{position:relative}.van-tabs__wrap{overflow:hidden}.van-tabs__wrap--page-top{position:fixed}.van-tabs__wrap--content-bottom{top:auto;bottom:0}.van-tabs__wrap--scrollable .van-tab{-webkit-box-flex:0;-webkit-flex:0 0 22%;flex:0 0 22%}.van-tabs__wrap--scrollable .van-tab--complete{-webkit-box-flex:1;-webkit-flex:1 0 auto;flex:1 0 auto}.van-tabs__wrap--scrollable .van-tabs__nav{overflow:hidden;overflow-x:auto;-webkit-overflow-scrolling:touch}.van-tabs__wrap--scrollable .van-tabs__nav::-webkit-scrollbar{display:none}.van-tabs__nav{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;background-color:#fff;-webkit-user-select:none;user-select:none}.van-tabs__nav--line{box-sizing:content-box;height:100%;padding-bottom:15px}.van-tabs__nav--card{box-sizing:border-box;height:30px;margin:0 16px;border:1px solid #ee0a24;border-radius:2px}.van-tabs__nav--card .van-tab{color:#ee0a24;line-height:28px;border-right:1px solid #ee0a24}.van-tabs__nav--card .van-tab:last-child{border-right:none}.van-tabs__nav--card .van-tab.van-tab--active{color:#fff;background-color:#ee0a24}.van-tabs__nav--card .van-tab--disabled{color:#c8c9cc}.van-tabs__line{position:absolute;bottom:15px;left:0;z-index:1;height:3px;background-color:#ee0a24;border-radius:3px}.van-tabs__track{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;width:100%;height:100%;will-change:left}.van-tabs__content--animated{overflow:hidden}.van-tabs--line .van-tabs__wrap{height:44px}.van-tabs--card>.van-tabs__wrap{height:30px}.van-coupon-list{position:relative;height:100%;background-color:#f7f8fa}.van-coupon-list__field{padding:5px 0 5px 16px}.van-coupon-list__field .van-field__body{height:34px;padding-left:12px;line-height:34px;background:#f7f8fa;border-radius:17px}.van-coupon-list__field .van-field__body::-webkit-input-placeholder{color:#c8c9cc}.van-coupon-list__field .van-field__body::placeholder{color:#c8c9cc}.van-coupon-list__field .van-field__clear{margin-right:0}.van-coupon-list__exchange-bar{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;background-color:#fff}.van-coupon-list__exchange{-webkit-box-flex:0;-webkit-flex:none;flex:none;height:32px;font-size:16px;line-height:30px;border:0}.van-coupon-list .van-tabs__wrap{box-shadow:0 6px 12px -12px #969799}.van-coupon-list__list{box-sizing:border-box;padding:16px 0 24px;overflow-y:auto;-webkit-overflow-scrolling:touch}.van-coupon-list__list--with-bottom{padding-bottom:66px}.van-coupon-list__bottom{position:absolute;bottom:0;left:0;z-index:999;box-sizing:border-box;width:100%;padding:5px 16px;font-weight:500;background-color:#fff}.van-coupon-list__close{height:40px;line-height:38px}.van-coupon-list__empty{padding-top:60px;text-align:center}.van-coupon-list__empty p{margin:16px 0;color:#969799;font-size:14px;line-height:20px}.van-coupon-list__empty img{width:200px;height:200px}.van-divider{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;margin:16px 0;color:#969799;font-size:14px;line-height:24px;border-color:#ebedf0;border-style:solid;border-width:0}.van-divider::after,.van-divider::before{display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;box-sizing:border-box;height:1px;border-color:inherit;border-style:inherit;border-width:1px 0 0}.van-divider::before{content:''}.van-divider--hairline::after,.van-divider--hairline::before{-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-divider--dashed{border-style:dashed}.van-divider--content-center::before,.van-divider--content-left::before,.van-divider--content-right::before{margin-right:16px}.van-divider--content-center::after,.van-divider--content-left::after,.van-divider--content-right::after{margin-left:16px;content:''}.van-divider--content-left::before{max-width:10%}.van-divider--content-right::after{max-width:10%}.van-dropdown-menu{-webkit-user-select:none;user-select:none}.van-dropdown-menu__bar{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;height:48px;background-color:#fff;box-shadow:0 2px 12px rgba(100,101,102,.08)}.van-dropdown-menu__bar--opened{z-index:11}.van-dropdown-menu__item{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-flex:1;-webkit-flex:1;flex:1;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;min-width:0;cursor:pointer}.van-dropdown-menu__item:active{opacity:.7}.van-dropdown-menu__item--disabled:active{opacity:1}.van-dropdown-menu__item--disabled .van-dropdown-menu__title{color:#969799}.van-dropdown-menu__title{position:relative;box-sizing:border-box;max-width:100%;padding:0 8px;color:#323233;font-size:15px;line-height:22px}.van-dropdown-menu__title::after{position:absolute;top:50%;right:-4px;margin-top:-5px;border:3px solid;border-color:transparent transparent #dcdee0 #dcdee0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:.8;content:''}.van-dropdown-menu__title--active{color:#1989fa}.van-dropdown-menu__title--active::after{border-color:transparent transparent currentColor currentColor}.van-dropdown-menu__title--down::after{margin-top:-1px;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.van-empty{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack: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 img{width:100%;height:100%}.van-empty__description{margin-top:16px;padding:0 60px;color:#969799;font-size:14px;line-height:20px}.van-empty__bottom{margin-top:24px}.van-goods-action{position:fixed;right:0;bottom:0;left:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;box-sizing:content-box;height:50px;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom);background-color:#fff}.van-goods-action--unfit{padding-bottom:0}.van-grid{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.van-swipe{position:relative;overflow:hidden;cursor:grab;-webkit-user-select:none;user-select:none}.van-swipe__track{display:-webkit-box;display:-webkit-flex;display:flex;height:100%}.van-swipe__track--vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.van-swipe__indicators{position:absolute;bottom:12px;left:50%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.van-swipe__indicators--vertical{top:50%;bottom:auto;left:12px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.van-swipe__indicators--vertical .van-swipe__indicator:not(:last-child){margin-bottom:6px}.van-swipe__indicator{width:6px;height:6px;background-color:#ebedf0;border-radius:100%;opacity:.3;-webkit-transition:opacity .2s;transition:opacity .2s}.van-swipe__indicator:not(:last-child){margin-right:6px}.van-swipe__indicator--active{background-color:#1989fa;opacity:1}.van-swipe-item{position:relative;-webkit-flex-shrink:0;flex-shrink:0;width:100%;height:100%}.van-image-preview{position:fixed;top:0;left:0;width:100%;height:100%}.van-image-preview__swipe{height:100%}.van-image-preview__cover{position:absolute;top:0;left:0}.van-image-preview__image{position:absolute;top:0;right:0;bottom:0;left:0;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.van-image-preview__image img{-webkit-user-drag:none}.van-image-preview__image .van-image__error{top:30%;height:40%}.van-image-preview__image .van-image__error-icon{font-size:36px}.van-image-preview__image .van-image__loading{background-color:transparent}.van-image-preview__index{position:absolute;top:10px;left:50%;color:#fff;font-size:14px;text-shadow:0 1px 1px #323233;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.van-image-preview__overlay{background-color:rgba(0,0,0,.9)}.van-image-preview__close-icon{position:absolute;z-index:1;color:#c8c9cc;font-size:22px;cursor:pointer}.van-image-preview__close-icon:active{color:#969799}.van-image-preview__close-icon--top-left{top:16px;left:16px}.van-image-preview__close-icon--top-right{top:16px;right:16px}.van-image-preview__close-icon--bottom-left{bottom:16px;left:16px}.van-image-preview__close-icon--bottom-right{right:16px;bottom:16px}.van-uploader{position:relative;display:inline-block}.van-uploader__wrapper{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.van-uploader__wrapper--disabled{opacity:.5}.van-uploader__input{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;cursor:pointer;opacity:0}.van-uploader__input-wrapper{position:relative}.van-uploader__input:disabled{cursor:not-allowed}.van-uploader__upload{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:80px;height:80px;margin:0 8px 8px 0;background-color:#f7f8fa;border-radius:8px}.van-uploader__upload:active{background-color:#f2f3f5}.van-uploader__upload-icon{color:#dcdee0;font-size:24px}.van-uploader__upload-text{margin-top:8px;color:#969799;font-size:12px}.van-uploader__preview{position:relative;margin:0 8px 8px 0;cursor:pointer}.van-uploader__preview-image{display:block;width:80px;height:80px;overflow:hidden;border-radius:8px}.van-uploader__preview-delete{position:absolute;top:-8px;right:-8px;color:#969799;font-size:18px;background-color:#fff;border-radius:100%}.van-uploader__mask{position:absolute;top:0;right:0;bottom:0;left:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;color:#fff;background-color:rgba(50,50,51,.88);border-radius:8px}.van-uploader__mask-icon{font-size:22px}.van-uploader__mask-message{margin-top:6px;padding:0 4px;font-size:12px;line-height:14px}.van-uploader__loading{width:22px;height:22px;color:#fff}.van-uploader__file{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;width:80px;height:80px;background-color:#f7f8fa;border-radius:8px}.van-uploader__file-icon{color:#646566;font-size:20px}.van-uploader__file-name{box-sizing:border-box;width:100%;margin-top:8px;padding:0 4px;color:#646566;font-size:12px;text-align:center}.van-sku-container{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-webkit-align-items:stretch;align-items:stretch;min-height:50%;max-height:80%;overflow-y:visible;font-size:14px;background:#fff}.van-sku-body{-webkit-box-flex:1;-webkit-flex:1 1 auto;flex:1 1 auto;min-height:44px;overflow-y:scroll;-webkit-overflow-scrolling:touch}.van-sku-body::-webkit-scrollbar{display:none}.van-sku-header{margin-left:16px}.van-sku-header__img-wrap{position:relative;float:left;width:96px;height:96px;margin:12px 0;overflow:hidden;background:#f7f8fa;border-radius:4px}.van-sku-header__img-wrap img{position:absolute;top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%;margin:auto}.van-sku-header__goods-info{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;min-height:96px;padding:12px 36px 12px 8px;overflow:hidden}.van-sku-header-item{margin-top:8px;color:#969799;font-size:12px;line-height:16px}.van-sku__price-symbol{font-size:16px;vertical-align:middle}.van-sku__price-num{font-weight:500;font-size:22px;vertical-align:middle;word-wrap:break-word}.van-sku__goods-price{color:#ee0a24}.van-sku__price-tag{position:relative;display:inline-block;margin-left:8px;padding:0 5px;overflow:hidden;color:#ee0a24;font-size:12px;line-height:16px;vertical-align:middle;border-radius:8px}.van-sku__price-tag::before{position:absolute;top:0;left:0;width:100%;height:100%;background:currentColor;opacity:.1;content:''}.van-sku-group-container{margin-left:16px;padding:12px 0 2px}.van-sku-group-container--hide-soldout .van-sku-row__item--disabled{display:none}.van-sku-row{margin:0 3px 12px 0}.van-sku-row:last-child{margin-bottom:0}.van-sku-row__title{padding-bottom:12px}.van-sku-row__title-multiple{color:#969799}.van-sku-row__item{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;min-width:40px;margin:0 12px 12px 0;overflow:hidden;color:#323233;font-size:13px;line-height:16px;vertical-align:middle;border-radius:4px;cursor:pointer}.van-sku-row__item::before{position:absolute;top:0;left:0;width:100%;height:100%;background:#f7f8fa;content:''}.van-sku-row__item-img{z-index:1;width:24px;height:24px;margin:4px 0 4px 4px;object-fit:cover;border-radius:2px}.van-sku-row__item-name{z-index:1;padding:8px}.van-sku-row__item--active{color:#ee0a24}.van-sku-row__item--active::before{background:currentColor;opacity:.1}.van-sku-row__item--disabled{color:#c8c9cc;background:#f2f3f5;cursor:not-allowed}.van-sku-row__item--disabled .van-sku-row__item-img{opacity:.3}.van-sku-stepper-stock{margin-left:16px;padding:12px 0}.van-sku-stepper-container{min-height:30px;margin-right:20px;overflow:hidden}.van-sku__stepper{float:right;padding-left:4px}.van-sku__stepper-title{float:left;line-height:30px}.van-sku__stepper-quota{display:inline-block;float:right;color:#ee0a24;font-size:12px;line-height:30px}.van-sku__stock{display:inline-block;margin-right:8px;color:#969799;font-size:12px}.van-sku__stock-num--highlight{color:#ee0a24}.van-sku-messages{padding-bottom:32px}.van-sku-messages__image-cell .van-cell__title{max-width:90px}.van-sku-messages__image-cell .van-cell__value{overflow:visible;text-align:left}.van-sku-img-uploader{display:inline-block}.van-sku-img-uploader__uploader{vertical-align:middle}.van-sku-img-uploader__img{position:relative;float:left;width:64px;height:64px;margin-right:8px;background:#f7f8fa;border-radius:2px}.van-sku-img-uploader__img img{width:100%;height:100%;object-fit:contain}.van-sku-img-uploader__delete{position:absolute;top:-12px;right:-14px;z-index:1;padding:6px;color:rgba(50,50,51,.8);opacity:.8}.van-sku-img-uploader__delete::before{background-color:#fff;border-radius:14px}.van-sku-img-uploader__mask{position:absolute;top:0;left:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;width:100%;height:100%;color:#fff;background:rgba(50,50,51,.8)}.van-sku-img-uploader__warn-text{margin-top:6px;font-size:12px;line-height:14px}.van-sku-img-uploader__trigger{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;width:100%;height:100%;color:#dcdee0}.van-sku-actions{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-shrink:0;flex-shrink:0;padding:8px 16px}.van-sku-actions .van-button{height:40px;font-weight:500;font-size:14px;line-height:34px;border:none;border-radius:0}.van-sku-actions .van-button:first-of-type{border-top-left-radius:20px;border-bottom-left-radius:20px}.van-sku-actions .van-button:last-of-type{border-top-right-radius:20px;border-bottom-right-radius:20px}.van-sku-actions .van-button--warning{background:-webkit-linear-gradient(left,#ffd01e,#ff8917);background:linear-gradient(to right,#ffd01e,#ff8917)}.van-sku-actions .van-button--danger{background:-webkit-linear-gradient(left,#ff6034,#ee0a24);background:linear-gradient(to right,#ff6034,#ee0a24)}.van-index-anchor{z-index:1;box-sizing:border-box;padding:0 16px;color:#323233;font-weight:500;font-size:14px;line-height:32px;background-color:transparent}.van-index-anchor--sticky{position:fixed;top:0;right:0;left:0;color:#07c160;background-color:#fff}.van-index-bar__sidebar{position:fixed;top:50%;right:0;z-index:2;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;-webkit-user-select:none;user-select:none}.van-index-bar__index{padding:0 4px 0 16px;font-weight:500;font-size:10px;line-height:14px}.van-index-bar__index--active{color:#07c160}.van-pagination{display:-webkit-box;display:-webkit-flex;display:flex;font-size:14px;line-height:40px;text-align:center}.van-pagination__item{-webkit-box-flex:1;-webkit-flex:1;flex:1;box-sizing:border-box;min-width:36px;height:40px;color:#1989fa;background-color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none}.van-pagination__item:active{color:#fff;background-color:#1989fa}.van-pagination__item::after{border-width:1px 0 1px 1px}.van-pagination__item:last-child::after{border-right-width:1px}.van-pagination__item--active{color:#fff;background-color:#1989fa}.van-pagination__next,.van-pagination__prev{padding:0 4px;cursor:pointer}.van-pagination__item--disabled,.van-pagination__item--disabled:active{color:#646566;background-color:#f7f8fa;cursor:not-allowed;opacity:.5}.van-pagination__page{-webkit-box-flex:0;-webkit-flex-grow:0;flex-grow:0}.van-pagination__page-desc{-webkit-box-flex:1;-webkit-flex:1;flex:1;height:40px;color:#646566}.van-pagination--simple .van-pagination__next::after,.van-pagination--simple .van-pagination__prev::after{border-width:1px}.van-password-input{position:relative;margin:0 16px;-webkit-user-select:none;user-select:none}.van-password-input__error-info,.van-password-input__info{margin-top:16px;font-size:14px;text-align:center}.van-password-input__info{color:#969799}.van-password-input__error-info{color:#ee0a24}.van-password-input__security{display:-webkit-box;display:-webkit-flex;display:flex;width:100%;height:50px;cursor:pointer}.van-password-input__security::after{border-radius:6px}.van-password-input__security li{position:relative;-webkit-box-flex:1;-webkit-flex:1;flex:1;height:100%;font-size:20px;line-height:50px;text-align:center;background-color:#fff}.van-password-input__security i{position:absolute;top:50%;left:50%;width:10px;height:10px;background-color:#000;border-radius:100%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);visibility:hidden}.van-password-input__cursor{position:absolute;top:50%;left:50%;width:1px;height:40%;background-color:#323233;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-animation:1s van-cursor-flicker infinite;animation:1s van-cursor-flicker infinite}@-webkit-keyframes van-cursor-flicker{from{opacity:0}50%{opacity:1}100%{opacity:0}}@keyframes van-cursor-flicker{from{opacity:0}50%{opacity:1}100%{opacity:0}}.van-progress{position:relative;height:4px;background:#ebedf0;border-radius:4px}.van-progress__portion{position:absolute;left:0;height:100%;background:#1989fa;border-radius:inherit}.van-progress__pivot{position:absolute;top:50%;box-sizing:border-box;min-width:3.6em;padding:0 5px;color:#fff;font-size:10px;line-height:1.6;text-align:center;word-break:keep-all;background-color:#1989fa;border-radius:1em;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.van-row::after{display:table;clear:both;content:''}.van-row--flex{display:-webkit-box;display:-webkit-flex;display:flex}.van-row--flex::after{display:none}.van-row--justify-center{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.van-row--justify-end{-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.van-row--justify-space-between{-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}.van-row--justify-space-around{-webkit-justify-content:space-around;justify-content:space-around}.van-row--align-center{-webkit-box-align:center;-webkit-align-items:center;align-items:center}.van-row--align-bottom{-webkit-box-align:end;-webkit-align-items:flex-end;align-items:flex-end}.van-sidebar{width:85px;overflow-y:auto;-webkit-overflow-scrolling:touch}.van-tree-select{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;font-size:14px;-webkit-user-select:none;user-select:none}.van-tree-select__nav{-webkit-box-flex:1;-webkit-flex:1;flex:1;overflow-y:auto;background-color:#f7f8fa;-webkit-overflow-scrolling:touch}.van-tree-select__nav-item{padding:14px 12px}.van-tree-select__content{-webkit-box-flex:2;-webkit-flex:2;flex:2;overflow-y:auto;background-color:#fff;-webkit-overflow-scrolling:touch}.van-tree-select__item{position:relative;padding:0 32px 0 16px;font-weight:700;line-height:48px;cursor:pointer}.van-tree-select__item--active{color:#ee0a24}.van-tree-select__item--disabled{color:#c8c9cc;cursor:not-allowed}.van-tree-select__selected{position:absolute;top:50%;right:16px;margin-top:-8px;font-size:16px}.van-skeleton{display:-webkit-box;display:-webkit-flex;display:flex;padding:0 16px}.van-skeleton__avatar{-webkit-flex-shrink:0;flex-shrink:0;margin-right:16px;background-color:#f2f3f5}.van-skeleton__avatar--round{border-radius:100%}.van-skeleton__content{width:100%}.van-skeleton__avatar+.van-skeleton__content{padding-top:8px}.van-skeleton__row,.van-skeleton__title{height:16px;background-color:#f2f3f5}.van-skeleton__title{margin:0}.van-skeleton__row:not(:first-child){margin-top:12px}.van-skeleton__title+.van-skeleton__row{margin-top:20px}.van-skeleton--animate{-webkit-animation:van-skeleton-blink 1.2s ease-in-out infinite;animation:van-skeleton-blink 1.2s ease-in-out infinite}@-webkit-keyframes van-skeleton-blink{50%{opacity:.6}}@keyframes van-skeleton-blink{50%{opacity:.6}}.van-slider{position:relative;width:100%;height:2px;background-color:#ebedf0;border-radius:999px;cursor:pointer}.van-slider::before{position:absolute;top:-8px;right:0;bottom:-8px;left:0;content:''}.van-slider__bar{position:relative;width:100%;height:100%;background-color:#1989fa;border-radius:inherit;-webkit-transition:width .2s;transition:width .2s}.van-slider__button{width:24px;height:24px;background-color:#fff;border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,.5)}.van-slider__button-wrapper{position:absolute;top:50%;right:0;-webkit-transform:translate3d(50%,-50%,0);transform:translate3d(50%,-50%,0);cursor:grab}.van-slider--disabled{cursor:not-allowed;opacity:.5}.van-slider--disabled .van-slider__button-wrapper{cursor:not-allowed}.van-slider--vertical{display:inline-block;width:2px;height:100%}.van-slider--vertical .van-slider__button-wrapper{top:auto;right:50%;bottom:0;-webkit-transform:translate3d(50%,50%,0);transform:translate3d(50%,50%,0)}.van-slider--vertical::before{top:0;right:-8px;bottom:0;left:-8px}.van-steps{overflow:hidden;background-color:#fff}.van-steps--horizontal{padding:10px 10px 0}.van-steps--horizontal .van-steps__items{position:relative;display:-webkit-box;display:-webkit-flex;display:flex;margin:0 0 10px;padding-bottom:22px}.van-steps--vertical{padding:0 0 0 32px}.van-swipe-cell{position:relative;overflow:hidden;cursor:grab}.van-swipe-cell__wrapper{-webkit-transition-timing-function:cubic-bezier(.18,.89,.32,1);transition-timing-function:cubic-bezier(.18,.89,.32,1);-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.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)}.van-tabbar{z-index:1;display:-webkit-box;display:-webkit-flex;display:flex;box-sizing:content-box;width:100%;height:50px;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom);background-color:#fff}.van-tabbar--fixed{position:fixed;bottom:0;left:0}.van-tabbar--unfit{padding-bottom:0} \ No newline at end of file diff --git a/src/assets/fonts/icomoon.eot b/src/assets/fonts/icomoon.eot new file mode 100644 index 00000000..857e7f77 Binary files /dev/null and b/src/assets/fonts/icomoon.eot differ diff --git a/src/assets/fonts/icomoon.svg b/src/assets/fonts/icomoon.svg new file mode 100644 index 00000000..052b75e9 --- /dev/null +++ b/src/assets/fonts/icomoon.svg @@ -0,0 +1,55 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/fonts/icomoon.ttf b/src/assets/fonts/icomoon.ttf new file mode 100644 index 00000000..8fb03834 Binary files /dev/null and b/src/assets/fonts/icomoon.ttf differ diff --git a/src/assets/fonts/icomoon.woff b/src/assets/fonts/icomoon.woff new file mode 100644 index 00000000..6660ce3d Binary files /dev/null and b/src/assets/fonts/icomoon.woff differ diff --git a/src/assets/images/angry.png b/src/assets/images/angry.png new file mode 100644 index 00000000..7ab4c1c5 Binary files /dev/null and b/src/assets/images/angry.png differ diff --git a/src/assets/images/apple.png b/src/assets/images/apple.png new file mode 100644 index 00000000..6a004ab6 Binary files /dev/null and b/src/assets/images/apple.png differ diff --git a/src/assets/images/avatar.png b/src/assets/images/avatar.png new file mode 100644 index 00000000..80c8d53f Binary files /dev/null and b/src/assets/images/avatar.png differ diff --git a/src/assets/images/coupon0.png b/src/assets/images/coupon0.png new file mode 100644 index 00000000..2f7a5fe3 Binary files /dev/null and b/src/assets/images/coupon0.png differ diff --git a/src/assets/images/coupon1.png b/src/assets/images/coupon1.png new file mode 100644 index 00000000..ab406793 Binary files /dev/null and b/src/assets/images/coupon1.png differ diff --git a/src/assets/images/coupon2.png b/src/assets/images/coupon2.png new file mode 100644 index 00000000..3aaa0fc7 Binary files /dev/null and b/src/assets/images/coupon2.png differ diff --git a/src/assets/images/fuji.jpg b/src/assets/images/fuji.jpg new file mode 100644 index 00000000..3501cc6c Binary files /dev/null and b/src/assets/images/fuji.jpg differ diff --git a/src/assets/images/homebg.png b/src/assets/images/homebg.png new file mode 100644 index 00000000..ff7a773c Binary files /dev/null and b/src/assets/images/homebg.png differ diff --git a/src/assets/images/loading.gif b/src/assets/images/loading.gif new file mode 100644 index 00000000..31f85047 Binary files /dev/null and b/src/assets/images/loading.gif differ diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png new file mode 100644 index 00000000..f3d2503f Binary files /dev/null and b/src/assets/images/logo.png differ diff --git a/src/assets/images/pay.png b/src/assets/images/pay.png new file mode 100644 index 00000000..f03c8d1a Binary files /dev/null and b/src/assets/images/pay.png differ diff --git a/src/assets/images/profile.jpg b/src/assets/images/profile.jpg new file mode 100644 index 00000000..723972a3 Binary files /dev/null and b/src/assets/images/profile.jpg differ diff --git a/src/assets/images/shopcart.gif b/src/assets/images/shopcart.gif new file mode 100644 index 00000000..4310de1d Binary files /dev/null and b/src/assets/images/shopcart.gif differ diff --git a/src/assets/images/shopcart.png b/src/assets/images/shopcart.png new file mode 100644 index 00000000..744f171d Binary files /dev/null and b/src/assets/images/shopcart.png differ diff --git a/src/assets/images/silk.png b/src/assets/images/silk.png new file mode 100644 index 00000000..a04d38d4 Binary files /dev/null and b/src/assets/images/silk.png differ diff --git a/src/assets/images/tree.png b/src/assets/images/tree.png new file mode 100644 index 00000000..7dcaed2c Binary files /dev/null and b/src/assets/images/tree.png differ diff --git a/src/assets/images/wx.png b/src/assets/images/wx.png new file mode 100644 index 00000000..e2769f06 Binary files /dev/null and b/src/assets/images/wx.png differ diff --git a/src/assets/images/wxf.png b/src/assets/images/wxf.png new file mode 100644 index 00000000..215d599b Binary files /dev/null and b/src/assets/images/wxf.png differ diff --git a/src/assets/images/zfb.png b/src/assets/images/zfb.png new file mode 100644 index 00000000..7925e2da Binary files /dev/null and b/src/assets/images/zfb.png differ diff --git a/src/main.js b/src/main.js new file mode 100644 index 00000000..63e4df97 --- /dev/null +++ b/src/main.js @@ -0,0 +1,66 @@ +import Vue from 'vue' +import App from './App.vue' +import router from './router' +import store from '@/store' + +Vue.config.productionTip = false + +// 使用toast +import toast from 'components/common/toast' +Vue.use(toast) + +import notify from 'components/common/notify' +Vue.use(notify) + +// // 使用overlay +// import overlay from 'components/common/overlay' +// Vue.use(overlay) + +//取消移动端300ms延时 +import FastClick from 'fastclick' +FastClick.attach(document.body) + +//懒加载 +import VueLazyload from 'vue-lazyload' +Vue.use(VueLazyload, { + preLoad: 1, + error: '/images/static/angry.png', + loading: '/images/static/kani.png', + attempt: 3 +}) + + +import 'vant/lib/index.css' +import Dialog from 'vant'; +Vue.use(Dialog); + +import { Button } from 'vant'; +Vue.use(Button); + +import { Popup } from 'vant'; +Vue.use(Popup); + +import { Field } from 'vant'; +Vue.use(Field); + +import { Form } from 'vant'; +Vue.use(Form); + +// 文件上传 +import { Uploader } from 'vant'; +Vue.use(Uploader); + +import { DropdownMenu, DropdownItem } from 'vant'; +Vue.use(DropdownMenu); +Vue.use(DropdownItem); + +//创建事件总线 +Vue.prototype.$bus = new Vue() + +var vue = new Vue({ + render: h => h(App), + router, + store +}).$mount('#app') + +window.vue = vue \ No newline at end of file diff --git a/src/network/Area.js b/src/network/Area.js new file mode 100644 index 00000000..1dc79599 --- /dev/null +++ b/src/network/Area.js @@ -0,0 +1,63 @@ +// 学院信息业务处理 +import request from './request' +import qs from 'qs' + +/* 根据查询条件分页查询学院信息 */ +export function queryArea(page) { + return request({ + url: '/area/list', + method: "POST", + params: { + "page": page, + "rows": 10 + } + }) +} + +/* 查询所有的学院信息*/ +export function queryAllArea() { + return request({ + url: '/area/listAll', + method: "POST", + }) +} + +/* 添加学院信息 */ +export function addArea(area) { + return request({ + url: '/area/add', + method: "POST", + data: qs.stringify(area), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 更新学院信息 */ +export function updateArea(area) { + return request({ + url: '/area/update', + method: "POST", + data: qs.stringify(area), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 根据主键学院id查询学院信息 */ +export function getArea(areaId) { + return request({ + url: '/area/get/' + areaId, + method: "POST" + }) +} + +/* 根据主键areaId删除学院 */ +export function deleteArea(areaId) { + return request({ + url: '/area/delete/' + areaId, + method: "POST", + }) +} diff --git a/src/network/Claim.js b/src/network/Claim.js new file mode 100644 index 00000000..288cddf1 --- /dev/null +++ b/src/network/Claim.js @@ -0,0 +1,66 @@ +// 认领信息业务处理 +import request from './request' +import qs from 'qs' + +/* 根据查询条件分页查询认领信息 */ +export function queryClaim(lostFoundObj_lostFoundId, personName, claimTime, page) { + return request({ + url: '/claim/list', + method: "POST", + params: { + "lostFoundObj.lostFoundId": lostFoundObj_lostFoundId, + "personName": personName, + "claimTime": claimTime, + "page": page, + "rows": 10 + } + }) +} + +/* 查询所有的认领信息*/ +export function queryAllClaim() { + return request({ + url: '/claim/listAll', + method: "POST", + }) +} + +/* 添加认领信息 */ +export function addClaim(claim) { + return request({ + url: '/claim/add', + method: "POST", + data: qs.stringify(claim), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 更新认领信息 */ +export function updateClaim(claim) { + return request({ + url: '/claim/update', + method: "POST", + data: qs.stringify(claim), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 根据主键认领id查询认领信息 */ +export function getClaim(claimId) { + return request({ + url: '/claim/get/' + claimId, + method: "POST" + }) +} + +/* 根据主键claimId删除认领 */ +export function deleteClaim(claimId) { + return request({ + url: '/claim/delete/' + claimId, + method: "POST", + }) +} diff --git a/src/network/LookingFor.js b/src/network/LookingFor.js new file mode 100644 index 00000000..07445f46 --- /dev/null +++ b/src/network/LookingFor.js @@ -0,0 +1,89 @@ +// 寻物启事信息业务处理 +import request from './request' +import qs from 'qs' + +/* 根据查询条件分页查询寻物启事信息 */ +export function queryLookingFor(title, goodsName, lostTime, lostPlace, telephone, userObj_user_name, page) { + return request({ + url: '/lookingFor/list', + method: "POST", + params: { + "title": title, + "goodsName": goodsName, + "lostTime": lostTime, + "lostPlace": lostPlace, + "telephone": telephone, + "userObj.user_name": userObj_user_name, + "page": page, + "rows": 10 + } + }) +} + + + +/* 根据查询条件分页查询寻物启事信息 */ +export function userQueryLookingFor(title, goodsName, lostTime, lostPlace, telephone, page) { + return request({ + url: '/lookingFor/userList', + method: "POST", + params: { + "title": title, + "goodsName": goodsName, + "lostTime": lostTime, + "lostPlace": lostPlace, + "telephone": telephone, + "page": page, + "rows": 10 + } + }) +} + + +/* 查询所有的寻物启事信息*/ +export function queryAllLookingFor() { + return request({ + url: '/lookingFor/listAll', + method: "POST", + }) +} + +/* 添加寻物启事信息 */ +export function addLookingFor(lookingFor) { + return request({ + url: '/lookingFor/add', + method: "POST", + data: qs.stringify(lookingFor), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 更新寻物启事信息 */ +export function updateLookingFor(lookingFor) { + return request({ + url: '/lookingFor/update', + method: "POST", + data: qs.stringify(lookingFor), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 根据主键寻物id查询寻物启事信息 */ +export function getLookingFor(lookingForId) { + return request({ + url: '/lookingFor/get/' + lookingForId, + method: "POST" + }) +} + +/* 根据主键lookingForId删除寻物启事 */ +export function deleteLookingFor(lookingForId) { + return request({ + url: '/lookingFor/delete/' + lookingForId, + method: "POST", + }) +} diff --git a/src/network/LostFound.js b/src/network/LostFound.js new file mode 100644 index 00000000..3e748400 --- /dev/null +++ b/src/network/LostFound.js @@ -0,0 +1,91 @@ +// 失物招领信息业务处理 +import request from './request' +import qs from 'qs' + +/* 根据查询条件分页查询失物招领信息 */ +export function queryLostFound(title, goodsName, pickUpTime, pickUpPlace, connectPerson, phone, userObj_user_name, page) { + return request({ + url: '/lostFound/list', + method: "POST", + params: { + "title": title, + "goodsName": goodsName, + "pickUpTime": pickUpTime, + "pickUpPlace": pickUpPlace, + "connectPerson": connectPerson, + "phone": phone, + "userObj.user_name": userObj_user_name, + "page": page, + "rows": 10 + } + }) +} + + +/* 根据查询条件分页查询失物招领信息 */ +export function userQueryLostFound(title, goodsName, pickUpTime, pickUpPlace, connectPerson, phone, page) { + return request({ + url: '/lostFound/userList', + method: "POST", + params: { + "title": title, + "goodsName": goodsName, + "pickUpTime": pickUpTime, + "pickUpPlace": pickUpPlace, + "connectPerson": connectPerson, + "phone": phone, + "page": page, + "rows": 10 + } + }) +} + + + +/* 查询所有的失物招领信息*/ +export function queryAllLostFound() { + return request({ + url: '/lostFound/listAll', + method: "POST", + }) +} + +/* 添加失物招领信息 */ +export function addLostFound(lostFound) { + return request({ + url: '/lostFound/add', + method: "POST", + data: qs.stringify(lostFound), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 更新失物招领信息 */ +export function updateLostFound(lostFound) { + return request({ + url: '/lostFound/update', + method: "POST", + data: qs.stringify(lostFound), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 根据主键招领id查询失物招领信息 */ +export function getLostFound(lostFoundId) { + return request({ + url: '/lostFound/get/' + lostFoundId, + method: "POST" + }) +} + +/* 根据主键lostFoundId删除失物招领 */ +export function deleteLostFound(lostFoundId) { + return request({ + url: '/lostFound/delete/' + lostFoundId, + method: "POST", + }) +} diff --git a/src/network/Notice.js b/src/network/Notice.js new file mode 100644 index 00000000..56cf9d11 --- /dev/null +++ b/src/network/Notice.js @@ -0,0 +1,65 @@ +// 站内通知信息业务处理 +import request from './request' +import qs from 'qs' + +/* 根据查询条件分页查询站内通知信息 */ +export function queryNotice(title, addTime, page) { + return request({ + url: '/notice/list', + method: "POST", + params: { + "title": title, + "addTime": addTime, + "page": page, + "rows": 10 + } + }) +} + +/* 查询所有的站内通知信息*/ +export function queryAllNotice() { + return request({ + url: '/notice/listAll', + method: "POST", + }) +} + +/* 添加站内通知信息 */ +export function addNotice(notice) { + return request({ + url: '/notice/add', + method: "POST", + data: qs.stringify(notice), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 更新站内通知信息 */ +export function updateNotice(notice) { + return request({ + url: '/notice/update', + method: "POST", + data: qs.stringify(notice), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 根据主键通知id查询站内通知信息 */ +export function getNotice(noticeId) { + return request({ + url: '/notice/get/' + noticeId, + method: "POST" + }) +} + +/* 根据主键noticeId删除站内通知 */ +export function deleteNotice(noticeId) { + return request({ + url: '/notice/delete/' + noticeId, + method: "POST", + }) +} diff --git a/src/network/Praise.js b/src/network/Praise.js new file mode 100644 index 00000000..0564c4b9 --- /dev/null +++ b/src/network/Praise.js @@ -0,0 +1,66 @@ +// 表扬信息业务处理 +import request from './request' +import qs from 'qs' + +/* 根据查询条件分页查询表扬信息 */ +export function queryPraise(lostFoundObj_lostFoundId, title, addTime, page) { + return request({ + url: '/praise/list', + method: "POST", + params: { + "lostFoundObj.lostFoundId": lostFoundObj_lostFoundId, + "title": title, + "addTime": addTime, + "page": page, + "rows": 10 + } + }) +} + +/* 查询所有的表扬信息*/ +export function queryAllPraise() { + return request({ + url: '/praise/listAll', + method: "POST", + }) +} + +/* 添加表扬信息 */ +export function addPraise(praise) { + return request({ + url: '/praise/add', + method: "POST", + data: qs.stringify(praise), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 更新表扬信息 */ +export function updatePraise(praise) { + return request({ + url: '/praise/update', + method: "POST", + data: qs.stringify(praise), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 根据主键表扬id查询表扬信息 */ +export function getPraise(praiseId) { + return request({ + url: '/praise/get/' + praiseId, + method: "POST" + }) +} + +/* 根据主键praiseId删除表扬 */ +export function deletePraise(praiseId) { + return request({ + url: '/praise/delete/' + praiseId, + method: "POST", + }) +} diff --git a/src/network/UserInfo.js b/src/network/UserInfo.js new file mode 100644 index 00000000..d3dd40b5 --- /dev/null +++ b/src/network/UserInfo.js @@ -0,0 +1,79 @@ +// 用户信息业务处理 +import request from './request' +import qs from 'qs' + +/* 根据查询条件分页查询用户信息 */ +export function queryUserInfo(user_name, areaObj_areaId, name, birthday, telephone, regTime, page) { + return request({ + url: '/userInfo/list', + method: "POST", + params: { + "user_name": user_name, + "areaObj.areaId": areaObj_areaId, + "name": name, + "birthday": birthday, + "telephone": telephone, + "regTime": regTime, + "page": page, + "rows": 10 + } + }) +} + +/* 查询所有的用户信息*/ +export function queryAllUserInfo() { + return request({ + url: '/userInfo/listAll', + method: "POST", + }) +} + +/* 添加用户信息 */ +export function addUserInfo(userInfo) { + return request({ + url: '/userInfo/add', + method: "POST", + data: qs.stringify(userInfo), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 更新用户信息 */ +export function updateUserInfo(userInfo) { + return request({ + url: '/userInfo/update', + method: "POST", + data: qs.stringify(userInfo), + headers: { //添加请求头 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + } + }) +} + +/* 根据主键手机账号查询用户信息 */ +export function getUserInfo(user_name) { + return request({ + url: '/userInfo/get/' + user_name, + method: "POST" + }) +} + +/* 查询用户个人信息 */ +export function getSelfUserInfo() { + return request({ + url: '/userInfo/selfGet', + method: "POST" + }) +} + + + +/* 根据主键user_name删除用户 */ +export function deleteUserInfo(user_name) { + return request({ + url: '/userInfo/delete/' + user_name, + method: "POST", + }) +} diff --git a/src/network/home.js b/src/network/home.js new file mode 100644 index 00000000..8482d907 --- /dev/null +++ b/src/network/home.js @@ -0,0 +1,7 @@ +import request from './request' + +export function getShop() { + return request({ + url: '/shop' + }) +} \ No newline at end of file diff --git a/src/network/login.js b/src/network/login.js new file mode 100644 index 00000000..78cbfd7b --- /dev/null +++ b/src/network/login.js @@ -0,0 +1,61 @@ +//登录注册相关业务处理 + +import request from './request' + +/* 根据手机号发送验证码 */ +export function requestCode(tell) { + return request({ + url: '/auth/sendSMS', + params: { + tel: tell + } + }) +} + +/* 客户端输入手机号和验证码注册或者登陆系统 */ +export function login(tell, code) { + return request({ + url: '/auth/login', + params: { + tell: tell, + code: code + } + }) +} + +/* 新用户注册的时候更新用户昵称和头像 */ +export function register(nickName, avatar) { + return request({ + url: '/auth/register', + params: { + nickName: nickName, + avatar: avatar + } + }) +} + + +/* 用户重新登录系统,用于以后token过期的预留接口 */ +export function appLogin(username) { + return request({ + url: '/auth/appLogin', + method: "POST", + params: { + username: username + } + }) +} + +/*获取用户个人信息*/ +export function getUserInfo() { + return request({ + url: '/auth/userInfo' + }) +} + +/* 退出系统 */ +export function logout() { + return request({ + url: '/auth/logout' + }) +} \ No newline at end of file diff --git a/src/network/request.js b/src/network/request.js new file mode 100644 index 00000000..0017f451 --- /dev/null +++ b/src/network/request.js @@ -0,0 +1,61 @@ +import axios from 'axios' + +//携带cookie +axios.defaults.withCredentials = true + + +export default function request(config, success, failure) { + + const instance = axios.create({ + baseURL: "/api", + timeout: 5000, + }) + + + // 拦截 + instance.interceptors.request.use(config => { + //config 一些信息不符合服务器要求 + //每次发送网络请求过程 有等待图标转动 + //某些网络请求 需要携带 token(登录)信息 + if (localStorage.getItem("x-auth-token")) { + config.headers['x-auth-token'] = localStorage.getItem("x-auth-token") // 让每个请求携带自定义token 请根据实际情况自行修改 + } + window.vue.$toast.loading(); + return config; + }, err => { + console.log(err) + }) + + // 响应拦截器 + instance.interceptors.response.use(res => { + setTimeout(()=>{window.vue.$toast.hide();},200); + var result = res.data; + if (result && result.code == '0000') { + return result; + } else if (result && result.code == '90001') { + // TODO 提示用户登录 + window.vue.$router.replace('/login') + return Promise.reject('请先登录系统'); + } else if (result && result.code == "90005") { + console.info("Token值失效:" + result.msg); + window.vue.$router.replace('/login') + return Promise.reject('Token回话过期,需重新登录'); + /* + if (!noRefetch) { + self._refetch(url, data, successCallback, failCallback) + }*/ + } else { + return Promise.reject('系统错误: '+result.msg); + } + + }, + error => { + console.log('err' + error) + window.vue.$toast.show(error.message); + return Promise.reject(error) + } + ) + + return instance(config) + +} diff --git a/src/network/upload.js b/src/network/upload.js new file mode 100644 index 00000000..07fa452f --- /dev/null +++ b/src/network/upload.js @@ -0,0 +1,28 @@ +//文件上传业务处理 +import request from './request' + +/* 图片文件上传 */ +export function uploadImage(formData) { + return request({ + url: '/upload/image', + method: "POST", + data: formData, + headers: { //添加请求头 + 'Content-Type': 'multipart/form-data' + } + }) +} + +/* 普通文件上传处理 */ +export function uploadFile(formData) { + return request({ + url: '/upload/file', + method: "POST", + data: formData, + headers: { //添加请求头 + 'Content-Type': 'multipart/form-data' + } + }) +} + + diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 00000000..bbee0027 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,221 @@ +//前端路由代码 +import Vue from 'vue' +import Router from 'vue-router' +Vue.use(Router) + +/** + * 重写路由的push方法 + */ +// const routerPush = Router.prototype.push +// Router.prototype.push = function push(location) { +// return routerPush.call(this, location).catch(error => error) +// } + +const Home = () => import ('../views/home/Home') //引入首页组件页 +const UserInfoList = () => import('../views/userInfo/UserInfoList.vue') //引入用户列表组件页 +const UserInfoAdd = () => import('../views/userInfo/UserInfoAdd') //引入用户添加组件页 +const UserInfoModify = () => import('../views/userInfo/UserInfoModify') //引入用户修改组件页 +const UserInfoSelfModify = () => import('../views/userInfo/UserInfoSelfModify') //引入用户修改组件页 +const UserInfoDetail = () => import('../views/userInfo/UserInfoDetail') //引入用户详情组件页 + +const AreaList = () => import('../views/area/AreaList.vue') //引入学院列表组件页 +const AreaAdd = () => import('../views/area/AreaAdd') //引入学院添加组件页 +const AreaModify = () => import('../views/area/AreaModify') //引入学院修改组件页 +const AreaDetail = () => import('../views/area/AreaDetail') //引入学院详情组件页 + +const LookingForList = () => import('../views/lookingFor/LookingForList.vue') //引入寻物启事列表组件页 +const LookingForUserList = () => import('../views/lookingFor/LookingForUserList.vue') //引入寻物启事列表组件页 +const LookingForAdd = () => import('../views/lookingFor/LookingForAdd') //引入寻物启事添加组件页 +const LookingForModify = () => import('../views/lookingFor/LookingForModify') //引入寻物启事修改组件页 +const LookingForDetail = () => import('../views/lookingFor/LookingForDetail') //引入寻物启事详情组件页 + +const LostFoundList = () => import('../views/lostFound/LostFoundList.vue') //引入失物招领列表组件页 +const LostFoundUserList = () => import('../views/lostFound/LostFoundUserList.vue') //引入失物招领列表组件页 +const LostFoundAdd = () => import('../views/lostFound/LostFoundAdd') //引入失物招领添加组件页 +const LostFoundModify = () => import('../views/lostFound/LostFoundModify') //引入失物招领修改组件页 +const LostFoundDetail = () => import('../views/lostFound/LostFoundDetail') //引入失物招领详情组件页 + +const ClaimList = () => import('../views/claim/ClaimList.vue') //引入认领列表组件页 +const ClaimAdd = () => import('../views/claim/ClaimAdd') //引入认领添加组件页 +const ClaimModify = () => import('../views/claim/ClaimModify') //引入认领修改组件页 +const ClaimDetail = () => import('../views/claim/ClaimDetail') //引入认领详情组件页 + +const PraiseList = () => import('../views/praise/PraiseList.vue') //引入表扬列表组件页 +const PraiseAdd = () => import('../views/praise/PraiseAdd') //引入表扬添加组件页 +const PraiseModify = () => import('../views/praise/PraiseModify') //引入表扬修改组件页 +const PraiseDetail = () => import('../views/praise/PraiseDetail') //引入表扬详情组件页 + +const NoticeList = () => import('../views/notice/NoticeList.vue') //引入站内通知列表组件页 +const NoticeAdd = () => import('../views/notice/NoticeAdd') //引入站内通知添加组件页 +const NoticeModify = () => import('../views/notice/NoticeModify') //引入站内通知修改组件页 +const NoticeDetail = () => import('../views/notice/NoticeDetail') //引入站内通知详情组件页 + +const Profile = () => import ('../views/profile/Profile') //引入个人中心组件页 +const Login = () => import ('../views/login/Login') //引入登录组件页 +const CreateAccount = () => import ('../views/login/CreateAccount') //引入创建账号组件页 +const Coupon = () => import ('../views/profile/CouponExchange') //引入优惠卷组件页 +const About = () => import ('../views/profile/About') //引入关于我们组件页 + +const routes = [{ + path: '', // 根路径跳到登录页路由 + redirect: '/login' + }, + { + path: '/login', // 系统登录页路由 + component: Login + }, + { + path: '/register', // 创建新账号页路由 + component: CreateAccount + }, + { + path: '/home', // 首页路由 + component: Home + }, + + { + path: '/userInfo/add', // 添加用户页路由 + component: UserInfoAdd + }, + { + path: '/userInfo/modify/:user_name', // 修改用户页路由 + component: UserInfoModify + }, + { + path: '/userInfo/selfModify', // 修改用户页路由 + component: UserInfoSelfModify + }, + { + path: '/userInfo/list', // 用户查询页路由 + component: UserInfoList + }, + { + path: '/userInfo/detail/:user_name', // 用户详情页路由 + component: UserInfoDetail + }, + { + path: '/area/add', // 添加学院页路由 + component: AreaAdd + }, + { + path: '/area/modify/:areaId', // 修改学院页路由 + component: AreaModify + }, + { + path: '/area/list', // 学院查询页路由 + component: AreaList + }, + { + path: '/area/detail/:areaId', // 学院详情页路由 + component: AreaDetail + }, + { + path: '/lookingFor/add', // 添加寻物启事页路由 + component: LookingForAdd + }, + { + path: '/lookingFor/modify/:lookingForId', // 修改寻物启事页路由 + component: LookingForModify + }, + { + path: '/lookingFor/list', // 寻物启事查询页路由 + component: LookingForList + }, + { + path: '/lookingFor/userList', // 寻物启事查询页路由 + component: LookingForUserList + }, + { + path: '/lookingFor/detail/:lookingForId', // 寻物启事详情页路由 + component: LookingForDetail + }, + { + path: '/lostFound/add', // 添加失物招领页路由 + component: LostFoundAdd + }, + { + path: '/lostFound/modify/:lostFoundId', // 修改失物招领页路由 + component: LostFoundModify + }, + { + path: '/lostFound/list', // 失物招领查询页路由 + component: LostFoundList + }, + { + path: '/lostFound/userList', // 失物招领查询页路由 + component: LostFoundUserList + }, + { + path: '/lostFound/detail/:lostFoundId', // 失物招领详情页路由 + component: LostFoundDetail + }, + { + path: '/claim/add', // 添加认领页路由 + component: ClaimAdd + }, + { + path: '/claim/modify/:claimId', // 修改认领页路由 + component: ClaimModify + }, + { + path: '/claim/list', // 认领查询页路由 + component: ClaimList + }, + { + path: '/claim/detail/:claimId', // 认领详情页路由 + component: ClaimDetail + }, + { + path: '/praise/add', // 添加表扬页路由 + component: PraiseAdd + }, + { + path: '/praise/modify/:praiseId', // 修改表扬页路由 + component: PraiseModify + }, + { + path: '/praise/list', // 表扬查询页路由 + component: PraiseList + }, + { + path: '/praise/detail/:praiseId', // 表扬详情页路由 + component: PraiseDetail + }, + { + path: '/notice/add', // 添加站内通知页路由 + component: NoticeAdd + }, + { + path: '/notice/modify/:noticeId', // 修改站内通知页路由 + component: NoticeModify + }, + { + path: '/notice/list', // 站内通知查询页路由 + component: NoticeList + }, + { + path: '/notice/detail/:noticeId', // 站内通知详情页路由 + component: NoticeDetail + }, + + { + path: '/Profile', // 个人中心页路由 + component: Profile, + }, + { + path: '/about', //关于我们页路由 + component: About + }, + { + path: '/coupon', // 优惠卷页路由 + component: Coupon + } +] + +const router = new Router({ + routes, + mode: 'history' +}) + +export default router + diff --git a/src/store/actions.js b/src/store/actions.js new file mode 100644 index 00000000..f553bd88 --- /dev/null +++ b/src/store/actions.js @@ -0,0 +1,48 @@ +import { + ADD_TO_CART, + ADD_COUNTER +} from './mutaion-types' + +export default { + + addCart(context, payload) { + return new Promise((resolve) => { + let flag = true + let cartList = context.state.cartList + let shopId = payload.shopId + if (!cartList[shopId]) { + context.commit('newCart', shopId) + } + cartList[shopId].list.forEach((el, index) => { + if (el.iid == payload.iid) { + context.commit('addCounter', { shopId: shopId, index: index }) + flag = false + resolve('数量+1') + } + }) + if (flag) { + payload.count = 1 + context.commit('addToCart', { shopId: shopId, food: payload }) + resolve('添加成功') + } + + }) + }, + reduceCart(context, payload) { + return new Promise((resolve) => { + let cartList = context.state.cartList + let shopId = payload.shopId + cartList[shopId].list.forEach((el, index) => { + if (el.iid == payload.iid) { + if (el.count > 1) { + context.commit('reduceFromCart', { shopId: shopId, index: index }) + resolve('数量-1') + } else { + context.commit('removeFromCart', { shopId: shopId, index: index }) + resolve('删除成功') + } + } + }) + }) + } +} \ No newline at end of file diff --git a/src/store/getters.js b/src/store/getters.js new file mode 100644 index 00000000..5c933b16 --- /dev/null +++ b/src/store/getters.js @@ -0,0 +1,3 @@ +export default { + +} \ No newline at end of file diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 00000000..b3050923 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,23 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +import mutations from './mutations' +import actions from './actions' +import getters from './getters' +import modules from './modules' + +Vue.use(Vuex) + +const state = { + cartList: {} +} + +const store = new Vuex.Store({ + state, + mutations, + actions, + getters, + modules +}) + +export default store \ No newline at end of file diff --git a/src/store/modules.js b/src/store/modules.js new file mode 100644 index 00000000..5c933b16 --- /dev/null +++ b/src/store/modules.js @@ -0,0 +1,3 @@ +export default { + +} \ No newline at end of file diff --git a/src/store/mutaion-types.js b/src/store/mutaion-types.js new file mode 100644 index 00000000..2e5374e0 --- /dev/null +++ b/src/store/mutaion-types.js @@ -0,0 +1,2 @@ +export const ADD_COUNTER = 'add_counter' +export const ADD_TO_CART = 'add_to_cart' \ No newline at end of file diff --git a/src/store/mutations.js b/src/store/mutations.js new file mode 100644 index 00000000..bf562672 --- /dev/null +++ b/src/store/mutations.js @@ -0,0 +1,24 @@ +export default { + + newCart(state, shopId) { //初始化购物车 + state.cartList[shopId] = { + shopId: shopId, + list: [] + } + }, + addCounter(state, payload) { + state.cartList[payload.shopId].list[payload.index].count++ + }, + addToCart(state, payload) { + state.cartList[payload.shopId].list.push(payload.food) + }, + reduceFromCart(state, payload) { + state.cartList[payload.shopId].list[payload.index].count-- + }, + removeFromCart(state, payload) { + state.cartList[payload.shopId].list.splice(payload.index, 1) + }, + setInfo(state, payload) { + state.userInfo = payload + } +} \ No newline at end of file diff --git a/src/views/area/AreaAdd.vue b/src/views/area/AreaAdd.vue new file mode 100644 index 00000000..1f6cee2a --- /dev/null +++ b/src/views/area/AreaAdd.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/views/area/AreaDetail.vue b/src/views/area/AreaDetail.vue new file mode 100644 index 00000000..aeec9f18 --- /dev/null +++ b/src/views/area/AreaDetail.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/src/views/area/AreaList.css b/src/views/area/AreaList.css new file mode 100644 index 00000000..2044e68c --- /dev/null +++ b/src/views/area/AreaList.css @@ -0,0 +1,73 @@ +.areaList { + width: 100%; + height: auto; + flex-direction: column; + display: flex; + margin-top: 0px; +} + +.areaItem { + margin: 5px; + width: 98%; + height: auto; + border-top: 1px solid #ededed; + text-align: left; + display: flex; + flex-direction: column; + background-color: #fff; + border-radius: 5px; + position: relative; +} + +.areaItem .content_view { + display: flex; + flex-direction: row; +} + +.areaItem .areaImg { + width: 30%; + text-align: right; + padding: 2px; + border-right: 1px solid #eee; +} + +.areaItem .areaImg img { + width: 100%; + height: auto; +} + +.areaItem .areaText { + width:70%; + display: flex; + flex-direction: column; + padding-left: 5px; +} + +.areaItem .areaText div { + line-height: 25px; + height: auto; +} + +.areaItem .opt_view { + display:block; + width: 100%; + margin-top: 2px; + margin-bottom: 5px; + text-align: right; +} + +.areaQueryForm { + width: 100%; + height: auto; +} + +.areaQueryForm h3 { + text-align: center; + margin-top: 20px; + margin-bottom: 10px; +} + +.areaQueryForm .queryBtn { + text-align: right; + margin: 10px; +} diff --git a/src/views/area/AreaList.vue b/src/views/area/AreaList.vue new file mode 100644 index 00000000..8dc8aec7 --- /dev/null +++ b/src/views/area/AreaList.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/src/views/area/AreaModify.vue b/src/views/area/AreaModify.vue new file mode 100644 index 00000000..91ae4f3f --- /dev/null +++ b/src/views/area/AreaModify.vue @@ -0,0 +1,107 @@ + + + + + + diff --git a/src/views/claim/ClaimAdd.vue b/src/views/claim/ClaimAdd.vue new file mode 100644 index 00000000..f9f46ade --- /dev/null +++ b/src/views/claim/ClaimAdd.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/src/views/claim/ClaimDetail.vue b/src/views/claim/ClaimDetail.vue new file mode 100644 index 00000000..99bd14c2 --- /dev/null +++ b/src/views/claim/ClaimDetail.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/views/claim/ClaimList.css b/src/views/claim/ClaimList.css new file mode 100644 index 00000000..2f9c6fb7 --- /dev/null +++ b/src/views/claim/ClaimList.css @@ -0,0 +1,73 @@ +.claimList { + width: 100%; + height: auto; + flex-direction: column; + display: flex; + margin-top: 0px; +} + +.claimItem { + margin: 5px; + width: 98%; + height: auto; + border-top: 1px solid #ededed; + text-align: left; + display: flex; + flex-direction: column; + background-color: #fff; + border-radius: 5px; + position: relative; +} + +.claimItem .content_view { + display: flex; + flex-direction: row; +} + +.claimItem .claimImg { + width: 30%; + text-align: right; + padding: 2px; + border-right: 1px solid #eee; +} + +.claimItem .claimImg img { + width: 100%; + height: auto; +} + +.claimItem .claimText { + width:70%; + display: flex; + flex-direction: column; + padding-left: 5px; +} + +.claimItem .claimText div { + line-height: 25px; + height: auto; +} + +.claimItem .opt_view { + display:block; + width: 100%; + margin-top: 2px; + margin-bottom: 5px; + text-align: right; +} + +.claimQueryForm { + width: 100%; + height: auto; +} + +.claimQueryForm h3 { + text-align: center; + margin-top: 20px; + margin-bottom: 10px; +} + +.claimQueryForm .queryBtn { + text-align: right; + margin: 10px; +} diff --git a/src/views/claim/ClaimList.vue b/src/views/claim/ClaimList.vue new file mode 100644 index 00000000..87eddb4b --- /dev/null +++ b/src/views/claim/ClaimList.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/src/views/claim/ClaimModify.vue b/src/views/claim/ClaimModify.vue new file mode 100644 index 00000000..642d80de --- /dev/null +++ b/src/views/claim/ClaimModify.vue @@ -0,0 +1,179 @@ + + + + + + diff --git a/src/views/home/Home.vue b/src/views/home/Home.vue new file mode 100644 index 00000000..3372852c --- /dev/null +++ b/src/views/home/Home.vue @@ -0,0 +1,195 @@ + + + + + \ No newline at end of file diff --git a/src/views/home/childComps/BranchStore.vue b/src/views/home/childComps/BranchStore.vue new file mode 100644 index 00000000..c2b55fb7 --- /dev/null +++ b/src/views/home/childComps/BranchStore.vue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/src/views/home/childComps/BranchStoreItem.vue b/src/views/home/childComps/BranchStoreItem.vue new file mode 100644 index 00000000..b6e7873f --- /dev/null +++ b/src/views/home/childComps/BranchStoreItem.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/src/views/home/childComps/HomeSwiper.vue b/src/views/home/childComps/HomeSwiper.vue new file mode 100644 index 00000000..182bad98 --- /dev/null +++ b/src/views/home/childComps/HomeSwiper.vue @@ -0,0 +1,78 @@ + + + + + \ No newline at end of file diff --git a/src/views/home/childComps/Location.vue b/src/views/home/childComps/Location.vue new file mode 100644 index 00000000..41fd4257 --- /dev/null +++ b/src/views/home/childComps/Location.vue @@ -0,0 +1,46 @@ + + + + + \ No newline at end of file diff --git a/src/views/login/CreateAccount.vue b/src/views/login/CreateAccount.vue new file mode 100644 index 00000000..69b8dea8 --- /dev/null +++ b/src/views/login/CreateAccount.vue @@ -0,0 +1,151 @@ + + + + + \ No newline at end of file diff --git a/src/views/login/Login.vue b/src/views/login/Login.vue new file mode 100644 index 00000000..5aee36ff --- /dev/null +++ b/src/views/login/Login.vue @@ -0,0 +1,244 @@ + + + + + \ No newline at end of file diff --git a/src/views/notice/NoticeAdd.vue b/src/views/notice/NoticeAdd.vue new file mode 100644 index 00000000..43df4d53 --- /dev/null +++ b/src/views/notice/NoticeAdd.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/src/views/notice/NoticeDetail.vue b/src/views/notice/NoticeDetail.vue new file mode 100644 index 00000000..e5423f46 --- /dev/null +++ b/src/views/notice/NoticeDetail.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/src/views/notice/NoticeList.css b/src/views/notice/NoticeList.css new file mode 100644 index 00000000..bbe4707d --- /dev/null +++ b/src/views/notice/NoticeList.css @@ -0,0 +1,73 @@ +.noticeList { + width: 100%; + height: auto; + flex-direction: column; + display: flex; + margin-top: 0px; +} + +.noticeItem { + margin: 5px; + width: 98%; + height: auto; + border-top: 1px solid #ededed; + text-align: left; + display: flex; + flex-direction: column; + background-color: #fff; + border-radius: 5px; + position: relative; +} + +.noticeItem .content_view { + display: flex; + flex-direction: row; +} + +.noticeItem .noticeImg { + width: 30%; + text-align: right; + padding: 2px; + border-right: 1px solid #eee; +} + +.noticeItem .noticeImg img { + width: 100%; + height: auto; +} + +.noticeItem .noticeText { + width:70%; + display: flex; + flex-direction: column; + padding-left: 5px; +} + +.noticeItem .noticeText div { + line-height: 25px; + height: auto; +} + +.noticeItem .opt_view { + display:block; + width: 100%; + margin-top: 2px; + margin-bottom: 5px; + text-align: right; +} + +.noticeQueryForm { + width: 100%; + height: auto; +} + +.noticeQueryForm h3 { + text-align: center; + margin-top: 20px; + margin-bottom: 10px; +} + +.noticeQueryForm .queryBtn { + text-align: right; + margin: 10px; +} diff --git a/src/views/notice/NoticeList.vue b/src/views/notice/NoticeList.vue new file mode 100644 index 00000000..2a5207d8 --- /dev/null +++ b/src/views/notice/NoticeList.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/src/views/notice/NoticeModify.vue b/src/views/notice/NoticeModify.vue new file mode 100644 index 00000000..e567ac33 --- /dev/null +++ b/src/views/notice/NoticeModify.vue @@ -0,0 +1,152 @@ + + + + + + diff --git a/src/views/praise/PraiseAdd.vue b/src/views/praise/PraiseAdd.vue new file mode 100644 index 00000000..9f3d35ad --- /dev/null +++ b/src/views/praise/PraiseAdd.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/views/praise/PraiseDetail.vue b/src/views/praise/PraiseDetail.vue new file mode 100644 index 00000000..884e2bbc --- /dev/null +++ b/src/views/praise/PraiseDetail.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/src/views/praise/PraiseList.css b/src/views/praise/PraiseList.css new file mode 100644 index 00000000..3fadb38e --- /dev/null +++ b/src/views/praise/PraiseList.css @@ -0,0 +1,73 @@ +.praiseList { + width: 100%; + height: auto; + flex-direction: column; + display: flex; + margin-top: 0px; +} + +.praiseItem { + margin: 5px; + width: 98%; + height: auto; + border-top: 1px solid #ededed; + text-align: left; + display: flex; + flex-direction: column; + background-color: #fff; + border-radius: 5px; + position: relative; +} + +.praiseItem .content_view { + display: flex; + flex-direction: row; +} + +.praiseItem .praiseImg { + width: 30%; + text-align: right; + padding: 2px; + border-right: 1px solid #eee; +} + +.praiseItem .praiseImg img { + width: 100%; + height: auto; +} + +.praiseItem .praiseText { + width:70%; + display: flex; + flex-direction: column; + padding-left: 5px; +} + +.praiseItem .praiseText div { + line-height: 25px; + height: auto; +} + +.praiseItem .opt_view { + display:block; + width: 100%; + margin-top: 2px; + margin-bottom: 5px; + text-align: right; +} + +.praiseQueryForm { + width: 100%; + height: auto; +} + +.praiseQueryForm h3 { + text-align: center; + margin-top: 20px; + margin-bottom: 10px; +} + +.praiseQueryForm .queryBtn { + text-align: right; + margin: 10px; +} diff --git a/src/views/praise/PraiseList.vue b/src/views/praise/PraiseList.vue new file mode 100644 index 00000000..59680fce --- /dev/null +++ b/src/views/praise/PraiseList.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/views/praise/PraiseModify.vue b/src/views/praise/PraiseModify.vue new file mode 100644 index 00000000..7b4e1cb5 --- /dev/null +++ b/src/views/praise/PraiseModify.vue @@ -0,0 +1,156 @@ + + + + + + diff --git a/src/views/profile/About.vue b/src/views/profile/About.vue new file mode 100644 index 00000000..6d81d2f7 --- /dev/null +++ b/src/views/profile/About.vue @@ -0,0 +1,105 @@ + + + + + \ No newline at end of file diff --git a/src/views/profile/CouponExchange.vue b/src/views/profile/CouponExchange.vue new file mode 100644 index 00000000..9dd259f0 --- /dev/null +++ b/src/views/profile/CouponExchange.vue @@ -0,0 +1,186 @@ + + + + + \ No newline at end of file diff --git a/src/views/profile/InfoList.vue b/src/views/profile/InfoList.vue new file mode 100644 index 00000000..ae0a1383 --- /dev/null +++ b/src/views/profile/InfoList.vue @@ -0,0 +1,188 @@ + + + + + \ No newline at end of file diff --git a/src/views/profile/Profile.vue b/src/views/profile/Profile.vue new file mode 100644 index 00000000..06baad40 --- /dev/null +++ b/src/views/profile/Profile.vue @@ -0,0 +1,106 @@ + + + + + \ No newline at end of file diff --git a/src/views/userInfo/UserInfoAdd.vue b/src/views/userInfo/UserInfoAdd.vue new file mode 100644 index 00000000..b1d82360 --- /dev/null +++ b/src/views/userInfo/UserInfoAdd.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/views/userInfo/UserInfoDetail.vue b/src/views/userInfo/UserInfoDetail.vue new file mode 100644 index 00000000..6c400f2c --- /dev/null +++ b/src/views/userInfo/UserInfoDetail.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/src/views/userInfo/UserInfoList.css b/src/views/userInfo/UserInfoList.css new file mode 100644 index 00000000..16d2acc9 --- /dev/null +++ b/src/views/userInfo/UserInfoList.css @@ -0,0 +1,73 @@ +.userInfoList { + width: 100%; + height: auto; + flex-direction: column; + display: flex; + margin-top: 0px; +} + +.userInfoItem { + margin: 5px; + width: 98%; + height: auto; + border-top: 1px solid #ededed; + text-align: left; + display: flex; + flex-direction: column; + background-color: #fff; + border-radius: 5px; + position: relative; +} + +.userInfoItem .content_view { + display: flex; + flex-direction: row; +} + +.userInfoItem .userInfoImg { + width: 30%; + text-align: right; + padding: 2px; + border-right: 1px solid #eee; +} + +.userInfoItem .userInfoImg img { + width: 100%; + height: auto; +} + +.userInfoItem .userInfoText { + width:70%; + display: flex; + flex-direction: column; + padding-left: 5px; +} + +.userInfoItem .userInfoText div { + line-height: 25px; + height: auto; +} + +.userInfoItem .opt_view { + display:block; + width: 100%; + margin-top: 2px; + margin-bottom: 5px; + text-align: right; +} + +.userInfoQueryForm { + width: 100%; + height: auto; +} + +.userInfoQueryForm h3 { + text-align: center; + margin-top: 20px; + margin-bottom: 10px; +} + +.userInfoQueryForm .queryBtn { + text-align: right; + margin: 10px; +} diff --git a/src/views/userInfo/UserInfoList.vue b/src/views/userInfo/UserInfoList.vue new file mode 100644 index 00000000..1b30e8f1 --- /dev/null +++ b/src/views/userInfo/UserInfoList.vue @@ -0,0 +1,247 @@ + + + + + diff --git a/src/views/userInfo/UserInfoModify.vue b/src/views/userInfo/UserInfoModify.vue new file mode 100644 index 00000000..fc70ae64 --- /dev/null +++ b/src/views/userInfo/UserInfoModify.vue @@ -0,0 +1,209 @@ + + + + + + diff --git a/src/views/userInfo/UserInfoSelfModify.vue b/src/views/userInfo/UserInfoSelfModify.vue new file mode 100644 index 00000000..e6060f53 --- /dev/null +++ b/src/views/userInfo/UserInfoSelfModify.vue @@ -0,0 +1,210 @@ + + + + + + diff --git a/src/wh.vue b/src/wh.vue new file mode 100644 index 00000000..50400c52 --- /dev/null +++ b/src/wh.vue @@ -0,0 +1,44 @@ + + + + + \ No newline at end of file