Authored by 陈峰

Merge branch 'feature/vue' of http://git.yoho.cn/fe/yohoblk-wap into feature/vue

No preview for this file type
@@ -95,4 +95,8 @@ @@ -95,4 +95,8 @@
95 <glyph unicode="&#xe947;" glyph-name="add" d="M1024 550.4h-409.6v409.6h-204.8v-409.6h-409.6v-204.8h409.6v-409.6h204.8v409.6h409.6z" /> 95 <glyph unicode="&#xe947;" glyph-name="add" d="M1024 550.4h-409.6v409.6h-204.8v-409.6h-409.6v-204.8h409.6v-409.6h204.8v409.6h409.6z" />
96 <glyph unicode="&#xe948;" glyph-name="order" horiz-adv-x="862" d="M797.653 896v-896h-733.653v896h733.653zM818.987 960h-776.32c-23.467 0-42.667-19.2-42.667-42.667v-938.667c0-23.467 19.2-42.667 42.667-42.667h776.32c23.467 0 42.667 19.2 42.667 42.667v938.667c0 23.467-19.2 42.667-42.667 42.667v0zM153.493 704h554.667v-64h-554.667v64zM153.493 490.667h554.667v-64h-554.667v64zM153.493 256h379.563v-64h-379.563v64z" /> 96 <glyph unicode="&#xe948;" glyph-name="order" horiz-adv-x="862" d="M797.653 896v-896h-733.653v896h733.653zM818.987 960h-776.32c-23.467 0-42.667-19.2-42.667-42.667v-938.667c0-23.467 19.2-42.667 42.667-42.667h776.32c23.467 0 42.667 19.2 42.667 42.667v938.667c0 23.467-19.2 42.667-42.667 42.667v0zM153.493 704h554.667v-64h-554.667v64zM153.493 490.667h554.667v-64h-554.667v64zM153.493 256h379.563v-64h-379.563v64z" />
97 <glyph unicode="&#xe949;" glyph-name="store" horiz-adv-x="1147" d="M204.857 365.468c-40.784 0-74.193 7.583-99.262 22.568-64.342 34.425-105.595 104.448-105.595 181.586 0 15.454 2.606 34.243 7.714 55.951 0.313 6.124 1.72 12.144 4.144 17.799l110.755 258.437c0.391 0.964 0.834 1.902 1.303 2.841 19.623 45.761 58.974 55.351 88.578 55.351h725.483c45.866 0 81.073-22.516 94.598-60.355l102.624-253.459c2.189-5.368 3.44-11.049 3.753-16.809 5.082-21.708 7.688-40.497 7.688-55.951 0-1.147-0.052-2.319-0.13-3.492-5.082-76.095-47.325-144.476-110.364-178.745-24.939-14.541-57.957-21.916-98.168-21.916-70.961 0-136.684 36.067-172.621 94.389-4.196 5.655-6.645 10.997-8.235 14.724-0.625 0.599-1.199 1.095-1.538 1.303-1.147-0.078-2.033-0.182-2.684-0.261-0.573-0.704-1.173-1.381-1.772-2.033-1.147-2.658-2.137-4.847-3.388-7.271-0.495-0.99-1.016-1.928-1.564-2.867-35.415-60.433-102.416-97.985-174.784-97.985-70.961 0-136.737 36.093-172.647 94.467-2.007 2.71-3.596 5.316-4.847 7.61-0.573 0.547-1.147 1.147-1.694 1.72-1.981 0.651-5.16 0.912-7.531 0.651-0.208-0.235-0.417-0.469-0.625-0.678-1.121-3.31-2.606-6.541-4.378-9.59-35.442-60.433-102.416-97.985-174.81-97.985zM111.172 610.484c-0.235-1.381-0.521-2.762-0.86-4.144-5.499-21.812-6.072-32.94-6.072-36.718 0-38.048 20.666-73.75 52.693-90.897 5.186-3.023 17.564-9.017 47.924-9.017 33.8 0 63.769 15.219 81.437 41.018 4.743 13.421 13.134 24.418 19.91 31.715 16.287 20.926 42.895 33.748 73.88 35.389 32.575 1.928 63.143-8.913 83.705-28.77 12.092-9.095 18.033-20.092 20.952-26.19 0.651-0.964 1.251-1.928 1.85-2.919 17.043-29.083 48.758-46.439 84.851-46.439 35.311 0 66.479 16.626 83.757 44.615l0.599 1.381c3.231 7.557 7.427 16.34 16.835 26.581 18.138 23.662 48.393 37.631 82.063 37.631 44.458 0 68.512-23.975 78.779-34.217 10.58-10.502 15.714-21.239 18.372-27.493 0.443-0.678 0.86-1.355 1.277-2.059 17.043-29.083 48.758-46.439 84.851-46.439 30.36 0 42.738 5.968 45.813 7.818 0.678 0.417 1.381 0.808 2.085 1.199 31.689 16.991 53.214 52.276 56.498 92.435-0.182 4.847-1.173 15.792-6.020 35.181-0.417 1.616-0.73 3.231-0.99 4.873l-97.49 240.742h-721.6l-105.1-245.276zM759.908 475.65c0.026-0.026 0.052-0.052 0.078-0.052-0.026 0.026-0.052 0.052-0.078 0.052zM386.808 489.8c0-0.026 0-0.052 0-0.078 0 0.026 0 0.052 0 0.078zM478.383 530.506c0.026 0 0.052-0.026 0.052-0.052 0 0.026-0.026 0.052-0.052 0.052zM844.968 530.506c0.026 0 0.026-0.026 0.052-0.052-0.026 0.026-0.026 0.052-0.052 0.052zM989.001-64h-814.374c-28.77 0-52.12 23.35-52.12 52.12v429.468c0 28.77 23.35 52.12 52.12 52.12s52.12-23.35 52.12-52.12v-377.348h710.134v381.153c0 28.77 23.35 52.12 52.12 52.12s52.12-23.35 52.12-52.12v-433.273c0-28.796-23.324-52.12-52.12-52.12z" /> 97 <glyph unicode="&#xe949;" glyph-name="store" horiz-adv-x="1147" d="M204.857 365.468c-40.784 0-74.193 7.583-99.262 22.568-64.342 34.425-105.595 104.448-105.595 181.586 0 15.454 2.606 34.243 7.714 55.951 0.313 6.124 1.72 12.144 4.144 17.799l110.755 258.437c0.391 0.964 0.834 1.902 1.303 2.841 19.623 45.761 58.974 55.351 88.578 55.351h725.483c45.866 0 81.073-22.516 94.598-60.355l102.624-253.459c2.189-5.368 3.44-11.049 3.753-16.809 5.082-21.708 7.688-40.497 7.688-55.951 0-1.147-0.052-2.319-0.13-3.492-5.082-76.095-47.325-144.476-110.364-178.745-24.939-14.541-57.957-21.916-98.168-21.916-70.961 0-136.684 36.067-172.621 94.389-4.196 5.655-6.645 10.997-8.235 14.724-0.625 0.599-1.199 1.095-1.538 1.303-1.147-0.078-2.033-0.182-2.684-0.261-0.573-0.704-1.173-1.381-1.772-2.033-1.147-2.658-2.137-4.847-3.388-7.271-0.495-0.99-1.016-1.928-1.564-2.867-35.415-60.433-102.416-97.985-174.784-97.985-70.961 0-136.737 36.093-172.647 94.467-2.007 2.71-3.596 5.316-4.847 7.61-0.573 0.547-1.147 1.147-1.694 1.72-1.981 0.651-5.16 0.912-7.531 0.651-0.208-0.235-0.417-0.469-0.625-0.678-1.121-3.31-2.606-6.541-4.378-9.59-35.442-60.433-102.416-97.985-174.81-97.985zM111.172 610.484c-0.235-1.381-0.521-2.762-0.86-4.144-5.499-21.812-6.072-32.94-6.072-36.718 0-38.048 20.666-73.75 52.693-90.897 5.186-3.023 17.564-9.017 47.924-9.017 33.8 0 63.769 15.219 81.437 41.018 4.743 13.421 13.134 24.418 19.91 31.715 16.287 20.926 42.895 33.748 73.88 35.389 32.575 1.928 63.143-8.913 83.705-28.77 12.092-9.095 18.033-20.092 20.952-26.19 0.651-0.964 1.251-1.928 1.85-2.919 17.043-29.083 48.758-46.439 84.851-46.439 35.311 0 66.479 16.626 83.757 44.615l0.599 1.381c3.231 7.557 7.427 16.34 16.835 26.581 18.138 23.662 48.393 37.631 82.063 37.631 44.458 0 68.512-23.975 78.779-34.217 10.58-10.502 15.714-21.239 18.372-27.493 0.443-0.678 0.86-1.355 1.277-2.059 17.043-29.083 48.758-46.439 84.851-46.439 30.36 0 42.738 5.968 45.813 7.818 0.678 0.417 1.381 0.808 2.085 1.199 31.689 16.991 53.214 52.276 56.498 92.435-0.182 4.847-1.173 15.792-6.020 35.181-0.417 1.616-0.73 3.231-0.99 4.873l-97.49 240.742h-721.6l-105.1-245.276zM759.908 475.65c0.026-0.026 0.052-0.052 0.078-0.052-0.026 0.026-0.052 0.052-0.078 0.052zM386.808 489.8c0-0.026 0-0.052 0-0.078 0 0.026 0 0.052 0 0.078zM478.383 530.506c0.026 0 0.052-0.026 0.052-0.052 0 0.026-0.026 0.052-0.052 0.052zM844.968 530.506c0.026 0 0.026-0.026 0.052-0.052-0.026 0.026-0.026 0.052-0.052 0.052zM989.001-64h-814.374c-28.77 0-52.12 23.35-52.12 52.12v429.468c0 28.77 23.35 52.12 52.12 52.12s52.12-23.35 52.12-52.12v-377.348h710.134v381.153c0 28.77 23.35 52.12 52.12 52.12s52.12-23.35 52.12-52.12v-433.273c0-28.796-23.324-52.12-52.12-52.12z" />
  98 +<glyph unicode="&#xf35b;" glyph-name="default-tip" horiz-adv-x="832" d="M416 864c228 0 416-188 416-416s-188-416-416-416-416 188-416 416 188 416 416 416zM464 240v80h-96v-80h96zM464 416v256h-96v-256h96z" />
  99 +<glyph unicode="&#xf36e;" glyph-name="error-tip" horiz-adv-x="832" d="M416 864c230 0 416-186 416-416s-186-416-416-416-416 186-416 416 186 416 416 416zM624 298l-150 150 150 150-58 58-150-150-150 150-58-58 150-150-150-150 58-58 150 150 150-150z" />
  100 +<glyph unicode="&#xf3ff;" glyph-name="success-tip" horiz-adv-x="832" d="M416 864c230 0 416-186 416-416s-186-416-416-416-416 186-416 416 186 416 416 416zM352 300l268 270-36 36-250-252-94 94-36-36 112-112c4-4 12-8 18-8s14 4 18 8z" />
  101 +<glyph unicode="&#xf404;" glyph-name="close-tip" horiz-adv-x="384" d="M360 640l24-24-168-168 168-168-24-24-168 168-168-168-24 24 168 168-168 168 24 24 168-168z" />
98 </font></defs></svg> 102 </font></defs></svg>
No preview for this file type
No preview for this file type
@@ -209,6 +209,9 @@ @@ -209,6 +209,9 @@
209 .icon-noselect:before { 209 .icon-noselect:before {
210 content: "\e928"; 210 content: "\e928";
211 } 211 }
  212 +.icon-del:before {
  213 + content: "\e929";
  214 +}
212 .icon-message:before { 215 .icon-message:before {
213 content: "\e92a"; 216 content: "\e92a";
214 } 217 }
@@ -299,12 +302,21 @@ @@ -299,12 +302,21 @@
299 .icon-add:before { 302 .icon-add:before {
300 content: "\e947"; 303 content: "\e947";
301 } 304 }
302 -.icon-del:before {  
303 - content: "\e929";  
304 -}  
305 .icon-order:before { 305 .icon-order:before {
306 content: "\e948"; 306 content: "\e948";
307 } 307 }
308 .icon-store:before { 308 .icon-store:before {
309 content: "\e949"; 309 content: "\e949";
310 } 310 }
  311 +.icon-default-tip:before {
  312 + content: "\f35b";
  313 +}
  314 +.icon-error-tip:before {
  315 + content: "\f36e";
  316 +}
  317 +.icon-success-tip:before {
  318 + content: "\f3ff";
  319 +}
  320 +.icon-close-tip:before {
  321 + content: "\f404";
  322 +}
  1 +import Notification from './notification.vue';
  2 +import Vue from 'vue';
  3 +
  4 +Notification.newInstance = properties => {
  5 + const _props = properties || {};
  6 +
  7 + const Instance = new Vue({
  8 + data: _props,
  9 + render (h) {
  10 + return h(Notification, {
  11 + props: _props
  12 + });
  13 + }
  14 + });
  15 +
  16 + const component = Instance.$mount();
  17 + document.body.appendChild(component.$el);
  18 + const notification = Instance.$children[0];
  19 +
  20 + return {
  21 + notice (noticeProps) {
  22 + notification.add(noticeProps);
  23 + },
  24 + remove (name) {
  25 + notification.close(name);
  26 + },
  27 + component: notification,
  28 + destroy (element) {
  29 + notification.closeAll();
  30 + setTimeout(function() {
  31 + document.body.removeChild(document.getElementsByClassName(element)[0]);
  32 + }, 500);
  33 + }
  34 + };
  35 +};
  36 +
  37 +export default Notification;
  1 +import Notification from './base';
  2 +
  3 +const prefixCls = 'blk-message';
  4 +const iconPrefixCls = 'icon';
  5 +const prefixKey = 'blk_message_key_';
  6 +
  7 +let defaultDuration = 1.5;
  8 +let top;
  9 +let messageInstance;
  10 +let name = 1;
  11 +
  12 +const iconTypes = {
  13 + 'info': 'default-tip',
  14 + 'success': 'success-tip',
  15 + 'warning': 'default-tip',
  16 + 'error': 'error-tip',
  17 + 'loading': 'load-c'
  18 +};
  19 +
  20 +function getMessageInstance () {
  21 + messageInstance = messageInstance || Notification.newInstance({
  22 + prefixCls: prefixCls,
  23 + styles: {
  24 + top: `${top}px`
  25 + }
  26 + });
  27 +
  28 + return messageInstance;
  29 +}
  30 +
  31 +function notice (content = '', duration = defaultDuration, type, onClose = function () {}, closable = false) {
  32 + const iconType = iconTypes[type];
  33 +
  34 + // if loading
  35 + const loadCls = type === 'loading' ? ' blk-load-loop' : '';
  36 +
  37 + let instance = getMessageInstance();
  38 +
  39 + instance.notice({
  40 + name: `${prefixKey}${name}`,
  41 + duration: duration,
  42 + styles: {},
  43 + transitionName: 'move-up',
  44 + content: `
  45 + <div class="${prefixCls}-custom-content ${prefixCls}-${type}">
  46 + <i class="${iconPrefixCls} ${iconPrefixCls}-${iconType}${loadCls}"></i>
  47 + <span>${content}</span>
  48 + </div>
  49 + `,
  50 + onClose: onClose,
  51 + closable: closable,
  52 + type: 'message'
  53 + });
  54 +
  55 + // 用于手动消除
  56 + return (function () {
  57 + let target = name++;
  58 +
  59 + return function () {
  60 + instance.remove(`${prefixKey}${target}`);
  61 + };
  62 + })();
  63 +}
  64 +
  65 +export default {
  66 + name: 'Message',
  67 + info (options) {
  68 + const type = typeof options;
  69 + if (type === 'string') {
  70 + options = {
  71 + content: options
  72 + };
  73 + }
  74 + return notice(options.content, options.duration, 'info', options.onClose, options.closable);
  75 + },
  76 + success (options) {
  77 + const type = typeof options;
  78 + if (type === 'string') {
  79 + options = {
  80 + content: options
  81 + };
  82 + }
  83 + return notice(options.content, options.duration, 'success', options.onClose, options.closable);
  84 + },
  85 + warning (options) {
  86 + const type = typeof options;
  87 + if (type === 'string') {
  88 + options = {
  89 + content: options
  90 + };
  91 + }
  92 + return notice(options.content, options.duration, 'warning', options.onClose, options.closable);
  93 + },
  94 + error (options) {
  95 + const type = typeof options;
  96 + if (type === 'string') {
  97 + options = {
  98 + content: options
  99 + };
  100 + }
  101 + return notice(options.content, options.duration, 'error', options.onClose, options.closable);
  102 + },
  103 + loading (options) {
  104 + const type = typeof options;
  105 + if (type === 'string') {
  106 + options = {
  107 + content: options
  108 + };
  109 + }
  110 + return notice(options.content, options.duration, 'loading', options.onClose, options.closable);
  111 + },
  112 + config (options) {
  113 + if (options.top) {
  114 + top = options.top;
  115 + }
  116 + if (options.duration) {
  117 + defaultDuration = options.duration;
  118 + }
  119 + },
  120 + destroy () {
  121 + let instance = getMessageInstance();
  122 + messageInstance = null;
  123 + instance.destroy('blk-message');
  124 + }
  125 +};
  1 +<template>
  2 + <transition :name="transitionName" @enter="handleEnter" @leave="handleLeave">
  3 + <div :class="classes" :style="styles">
  4 + <template>
  5 + <div :class="[baseClass + '-content']" ref="content">
  6 + <div :class="[baseClass + '-content-text']" v-html="content"></div>
  7 + <a :class="[baseClass + '-close']" @click="close" v-if="closable">
  8 + <i class="icon icon-close-tip"></i>
  9 + </a>
  10 + </div>
  11 + </template>
  12 + </div>
  13 + </transition>
  14 +</template>
  15 +<script>
  16 + export default {
  17 + props: {
  18 + prefixCls: {
  19 + type: String,
  20 + default: ''
  21 + },
  22 + duration: {
  23 + type: Number,
  24 + default: 1.5
  25 + },
  26 + type: {
  27 + type: String
  28 + },
  29 + content: {
  30 + type: String,
  31 + default: ''
  32 + },
  33 + styles: {
  34 + type: Object,
  35 + default: function() {
  36 + return {
  37 + right: '50%'
  38 + };
  39 + }
  40 + },
  41 + closable: {
  42 + type: Boolean,
  43 + default: false
  44 + },
  45 + className: {
  46 + type: String
  47 + },
  48 + name: {
  49 + type: String,
  50 + required: true
  51 + },
  52 + onClose: {
  53 + type: Function
  54 + },
  55 + transitionName: {
  56 + type: String
  57 + }
  58 + },
  59 + data () {
  60 + return {
  61 + withDesc: false
  62 + };
  63 + },
  64 + computed: {
  65 + baseClass () {
  66 + return `${this.prefixCls}-notice`;
  67 + },
  68 + classes () {
  69 + return [
  70 + this.baseClass,
  71 + {
  72 + [`${this.className}`]: !!this.className,
  73 + [`${this.baseClass}-closable`]: this.closable,
  74 + [`${this.baseClass}-with-desc`]: this.withDesc
  75 + }
  76 + ];
  77 + },
  78 + contentClasses () {
  79 + return `${this.baseClass}-content`;
  80 + }
  81 + },
  82 + methods: {
  83 + clearCloseTimer () {
  84 + if (this.closeTimer) {
  85 + clearTimeout(this.closeTimer);
  86 + this.closeTimer = null;
  87 + }
  88 + },
  89 + close () {
  90 + this.clearCloseTimer();
  91 + this.onClose();
  92 + this.$parent.close(this.name);
  93 + },
  94 + handleEnter (el) {
  95 + if (this.type === 'message') {
  96 + el.style.height = el.scrollHeight + 'px';
  97 + }
  98 + },
  99 + handleLeave (el) {
  100 + if (this.type === 'message') {
  101 + if (document.getElementsByClassName('blk-message-notice').length !== 1) {
  102 + el.style.height = 0;
  103 + el.style.paddingTop = 0;
  104 + el.style.paddingBottom = 0;
  105 + }
  106 + }
  107 + }
  108 + },
  109 + mounted () {
  110 + this.clearCloseTimer();
  111 +
  112 + if (this.duration !== 0) {
  113 + this.closeTimer = setTimeout(() => {
  114 + this.close();
  115 + }, this.duration * 1000);
  116 + }
  117 +
  118 + if (this.prefixCls === 'blk-notice') {
  119 + this.withDesc = this.$refs.content.querySelectorAll(`.${this.prefixCls}-desc`)[0].innerHTML !== '';
  120 + }
  121 + },
  122 + beforeDestroy () {
  123 + this.clearCloseTimer();
  124 + }
  125 + };
  126 +</script>
  127 +<style lang="scss">
  128 + .blk-message {
  129 + font-size: 24px;
  130 + position: fixed;
  131 + z-index: 1010;
  132 + width: 100%;
  133 + top: 50px;
  134 + left: 0;
  135 + pointer-events: none;
  136 +
  137 + &-notice {
  138 + padding: 8px;
  139 + text-align: center;
  140 + transition: height .3s ease-in-out, padding .3s ease-in-out;
  141 +
  142 + &:first-child {
  143 + margin-top: -8px;
  144 + }
  145 +
  146 + .icon-default-tip {
  147 + color: #2db7f5;
  148 + }
  149 +
  150 + .icon-error-tip {
  151 + color: #ed3f14;
  152 + }
  153 +
  154 + .icon-success-tip {
  155 + color: #19be6b;
  156 + }
  157 + }
  158 +
  159 + &-notice-content {
  160 + display: inline-block;
  161 + pointer-events: all;
  162 + padding: 8px 16px;
  163 + border-radius: 4px;
  164 + box-shadow: 0 1px 6px rgba(0, 0, 0, .2);
  165 + background: #fff;
  166 + position: relative;
  167 + &-text{
  168 + display: inline-block;
  169 + }
  170 + }
  171 +
  172 + &-notice-closable{
  173 + .blk-message-notice-content-text{
  174 + padding-right: 32px;
  175 + }
  176 + }
  177 +
  178 + .icon {
  179 + margin-right: 8px;
  180 + font-size: 26px;
  181 + top: 1px;
  182 + position: relative;
  183 +
  184 + &.icon-close-tip {
  185 + font-size: 30px;
  186 + }
  187 + }
  188 + }
  189 +</style>
  1 +<template>
  2 + <div :class="classes" :style="styles">
  3 + <Notice
  4 + v-for="notice in notices"
  5 + :key="notice.name"
  6 + :prefix-cls="prefixCls"
  7 + :styles="notice.styles"
  8 + :type="notice.type"
  9 + :content="notice.content"
  10 + :duration="notice.duration"
  11 + :closable="notice.closable"
  12 + :name="notice.name"
  13 + :transition-name="notice.transitionName"
  14 + :on-close="notice.onClose">
  15 + </Notice>
  16 + </div>
  17 +</template>
  18 +<script>
  19 + import Notice from './notice.vue';
  20 +
  21 + const prefixCls = 'blk-notification';
  22 + let seed = 0;
  23 + const now = Date.now();
  24 +
  25 + function getUuid () {
  26 + return 'blkNotification_' + now + '_' + (seed++);
  27 + }
  28 +
  29 + export default {
  30 + components: { Notice },
  31 + props: {
  32 + prefixCls: {
  33 + type: String,
  34 + default: prefixCls
  35 + },
  36 + styles: {
  37 + type: Object,
  38 + default: function () {
  39 + return {
  40 + top: '65px',
  41 + left: '50%'
  42 + };
  43 + }
  44 + },
  45 + content: {
  46 + type: String
  47 + },
  48 + className: {
  49 + type: String
  50 + }
  51 + },
  52 + data () {
  53 + return {
  54 + notices: []
  55 + };
  56 + },
  57 + computed: {
  58 + classes () {
  59 + return [
  60 + `${this.prefixCls}`,
  61 + {
  62 + [`${this.className}`]: !!this.className
  63 + }
  64 + ];
  65 + }
  66 + },
  67 + methods: {
  68 + add (notice) {
  69 + const name = notice.name || getUuid();
  70 +
  71 + let _notice = Object.assign({
  72 + styles: {
  73 + right: '50%'
  74 + },
  75 + content: '',
  76 + duration: 1.5,
  77 + closable: false,
  78 + name: name
  79 + }, notice);
  80 +
  81 + this.notices.push(_notice);
  82 + },
  83 + close (name) {
  84 + const notices = this.notices;
  85 + for (let i = 0; i < notices.length; i++) {
  86 + if (notices[i].name === name) {
  87 + this.notices.splice(i, 1);
  88 + break;
  89 + }
  90 + }
  91 + },
  92 + closeAll () {
  93 + this.notices = [];
  94 + }
  95 + }
  96 + };
  97 +</script>
@@ -2,6 +2,7 @@ import Vue from 'vue'; @@ -2,6 +2,7 @@ import Vue from 'vue';
2 import FastClick from 'fastclick'; 2 import FastClick from 'fastclick';
3 import {createApp} from './app'; 3 import {createApp} from './app';
4 import yoho from '../public/js/yoho'; 4 import yoho from '../public/js/yoho';
  5 +import message from '../src/components/message';
5 6
6 FastClick.attach(document.body); 7 FastClick.attach(document.body);
7 8
@@ -15,6 +16,7 @@ if (window.__INITIAL_STATE__) { @@ -15,6 +16,7 @@ if (window.__INITIAL_STATE__) {
15 store.replaceState(window.__INITIAL_STATE__); 16 store.replaceState(window.__INITIAL_STATE__);
16 } 17 }
17 Vue.prop('yoho', yoho); 18 Vue.prop('yoho', yoho);
  19 +Vue.prop('message', message);
18 20
19 router.onReady(() => { 21 router.onReady(() => {
20 router.beforeResolve((to, from, next) => { 22 router.beforeResolve((to, from, next) => {
@@ -95,4 +95,8 @@ @@ -95,4 +95,8 @@
95 <glyph unicode="&#xe947;" glyph-name="add" d="M1024 550.4h-409.6v409.6h-204.8v-409.6h-409.6v-204.8h409.6v-409.6h204.8v409.6h409.6z" /> 95 <glyph unicode="&#xe947;" glyph-name="add" d="M1024 550.4h-409.6v409.6h-204.8v-409.6h-409.6v-204.8h409.6v-409.6h204.8v409.6h409.6z" />
96 <glyph unicode="&#xe948;" glyph-name="order" horiz-adv-x="862" d="M797.653 896v-896h-733.653v896h733.653zM818.987 960h-776.32c-23.467 0-42.667-19.2-42.667-42.667v-938.667c0-23.467 19.2-42.667 42.667-42.667h776.32c23.467 0 42.667 19.2 42.667 42.667v938.667c0 23.467-19.2 42.667-42.667 42.667v0zM153.493 704h554.667v-64h-554.667v64zM153.493 490.667h554.667v-64h-554.667v64zM153.493 256h379.563v-64h-379.563v64z" /> 96 <glyph unicode="&#xe948;" glyph-name="order" horiz-adv-x="862" d="M797.653 896v-896h-733.653v896h733.653zM818.987 960h-776.32c-23.467 0-42.667-19.2-42.667-42.667v-938.667c0-23.467 19.2-42.667 42.667-42.667h776.32c23.467 0 42.667 19.2 42.667 42.667v938.667c0 23.467-19.2 42.667-42.667 42.667v0zM153.493 704h554.667v-64h-554.667v64zM153.493 490.667h554.667v-64h-554.667v64zM153.493 256h379.563v-64h-379.563v64z" />
97 <glyph unicode="&#xe949;" glyph-name="store" horiz-adv-x="1147" d="M204.857 365.468c-40.784 0-74.193 7.583-99.262 22.568-64.342 34.425-105.595 104.448-105.595 181.586 0 15.454 2.606 34.243 7.714 55.951 0.313 6.124 1.72 12.144 4.144 17.799l110.755 258.437c0.391 0.964 0.834 1.902 1.303 2.841 19.623 45.761 58.974 55.351 88.578 55.351h725.483c45.866 0 81.073-22.516 94.598-60.355l102.624-253.459c2.189-5.368 3.44-11.049 3.753-16.809 5.082-21.708 7.688-40.497 7.688-55.951 0-1.147-0.052-2.319-0.13-3.492-5.082-76.095-47.325-144.476-110.364-178.745-24.939-14.541-57.957-21.916-98.168-21.916-70.961 0-136.684 36.067-172.621 94.389-4.196 5.655-6.645 10.997-8.235 14.724-0.625 0.599-1.199 1.095-1.538 1.303-1.147-0.078-2.033-0.182-2.684-0.261-0.573-0.704-1.173-1.381-1.772-2.033-1.147-2.658-2.137-4.847-3.388-7.271-0.495-0.99-1.016-1.928-1.564-2.867-35.415-60.433-102.416-97.985-174.784-97.985-70.961 0-136.737 36.093-172.647 94.467-2.007 2.71-3.596 5.316-4.847 7.61-0.573 0.547-1.147 1.147-1.694 1.72-1.981 0.651-5.16 0.912-7.531 0.651-0.208-0.235-0.417-0.469-0.625-0.678-1.121-3.31-2.606-6.541-4.378-9.59-35.442-60.433-102.416-97.985-174.81-97.985zM111.172 610.484c-0.235-1.381-0.521-2.762-0.86-4.144-5.499-21.812-6.072-32.94-6.072-36.718 0-38.048 20.666-73.75 52.693-90.897 5.186-3.023 17.564-9.017 47.924-9.017 33.8 0 63.769 15.219 81.437 41.018 4.743 13.421 13.134 24.418 19.91 31.715 16.287 20.926 42.895 33.748 73.88 35.389 32.575 1.928 63.143-8.913 83.705-28.77 12.092-9.095 18.033-20.092 20.952-26.19 0.651-0.964 1.251-1.928 1.85-2.919 17.043-29.083 48.758-46.439 84.851-46.439 35.311 0 66.479 16.626 83.757 44.615l0.599 1.381c3.231 7.557 7.427 16.34 16.835 26.581 18.138 23.662 48.393 37.631 82.063 37.631 44.458 0 68.512-23.975 78.779-34.217 10.58-10.502 15.714-21.239 18.372-27.493 0.443-0.678 0.86-1.355 1.277-2.059 17.043-29.083 48.758-46.439 84.851-46.439 30.36 0 42.738 5.968 45.813 7.818 0.678 0.417 1.381 0.808 2.085 1.199 31.689 16.991 53.214 52.276 56.498 92.435-0.182 4.847-1.173 15.792-6.020 35.181-0.417 1.616-0.73 3.231-0.99 4.873l-97.49 240.742h-721.6l-105.1-245.276zM759.908 475.65c0.026-0.026 0.052-0.052 0.078-0.052-0.026 0.026-0.052 0.052-0.078 0.052zM386.808 489.8c0-0.026 0-0.052 0-0.078 0 0.026 0 0.052 0 0.078zM478.383 530.506c0.026 0 0.052-0.026 0.052-0.052 0 0.026-0.026 0.052-0.052 0.052zM844.968 530.506c0.026 0 0.026-0.026 0.052-0.052-0.026 0.026-0.026 0.052-0.052 0.052zM989.001-64h-814.374c-28.77 0-52.12 23.35-52.12 52.12v429.468c0 28.77 23.35 52.12 52.12 52.12s52.12-23.35 52.12-52.12v-377.348h710.134v381.153c0 28.77 23.35 52.12 52.12 52.12s52.12-23.35 52.12-52.12v-433.273c0-28.796-23.324-52.12-52.12-52.12z" /> 97 <glyph unicode="&#xe949;" glyph-name="store" horiz-adv-x="1147" d="M204.857 365.468c-40.784 0-74.193 7.583-99.262 22.568-64.342 34.425-105.595 104.448-105.595 181.586 0 15.454 2.606 34.243 7.714 55.951 0.313 6.124 1.72 12.144 4.144 17.799l110.755 258.437c0.391 0.964 0.834 1.902 1.303 2.841 19.623 45.761 58.974 55.351 88.578 55.351h725.483c45.866 0 81.073-22.516 94.598-60.355l102.624-253.459c2.189-5.368 3.44-11.049 3.753-16.809 5.082-21.708 7.688-40.497 7.688-55.951 0-1.147-0.052-2.319-0.13-3.492-5.082-76.095-47.325-144.476-110.364-178.745-24.939-14.541-57.957-21.916-98.168-21.916-70.961 0-136.684 36.067-172.621 94.389-4.196 5.655-6.645 10.997-8.235 14.724-0.625 0.599-1.199 1.095-1.538 1.303-1.147-0.078-2.033-0.182-2.684-0.261-0.573-0.704-1.173-1.381-1.772-2.033-1.147-2.658-2.137-4.847-3.388-7.271-0.495-0.99-1.016-1.928-1.564-2.867-35.415-60.433-102.416-97.985-174.784-97.985-70.961 0-136.737 36.093-172.647 94.467-2.007 2.71-3.596 5.316-4.847 7.61-0.573 0.547-1.147 1.147-1.694 1.72-1.981 0.651-5.16 0.912-7.531 0.651-0.208-0.235-0.417-0.469-0.625-0.678-1.121-3.31-2.606-6.541-4.378-9.59-35.442-60.433-102.416-97.985-174.81-97.985zM111.172 610.484c-0.235-1.381-0.521-2.762-0.86-4.144-5.499-21.812-6.072-32.94-6.072-36.718 0-38.048 20.666-73.75 52.693-90.897 5.186-3.023 17.564-9.017 47.924-9.017 33.8 0 63.769 15.219 81.437 41.018 4.743 13.421 13.134 24.418 19.91 31.715 16.287 20.926 42.895 33.748 73.88 35.389 32.575 1.928 63.143-8.913 83.705-28.77 12.092-9.095 18.033-20.092 20.952-26.19 0.651-0.964 1.251-1.928 1.85-2.919 17.043-29.083 48.758-46.439 84.851-46.439 35.311 0 66.479 16.626 83.757 44.615l0.599 1.381c3.231 7.557 7.427 16.34 16.835 26.581 18.138 23.662 48.393 37.631 82.063 37.631 44.458 0 68.512-23.975 78.779-34.217 10.58-10.502 15.714-21.239 18.372-27.493 0.443-0.678 0.86-1.355 1.277-2.059 17.043-29.083 48.758-46.439 84.851-46.439 30.36 0 42.738 5.968 45.813 7.818 0.678 0.417 1.381 0.808 2.085 1.199 31.689 16.991 53.214 52.276 56.498 92.435-0.182 4.847-1.173 15.792-6.020 35.181-0.417 1.616-0.73 3.231-0.99 4.873l-97.49 240.742h-721.6l-105.1-245.276zM759.908 475.65c0.026-0.026 0.052-0.052 0.078-0.052-0.026 0.026-0.052 0.052-0.078 0.052zM386.808 489.8c0-0.026 0-0.052 0-0.078 0 0.026 0 0.052 0 0.078zM478.383 530.506c0.026 0 0.052-0.026 0.052-0.052 0 0.026-0.026 0.052-0.052 0.052zM844.968 530.506c0.026 0 0.026-0.026 0.052-0.052-0.026 0.026-0.026 0.052-0.052 0.052zM989.001-64h-814.374c-28.77 0-52.12 23.35-52.12 52.12v429.468c0 28.77 23.35 52.12 52.12 52.12s52.12-23.35 52.12-52.12v-377.348h710.134v381.153c0 28.77 23.35 52.12 52.12 52.12s52.12-23.35 52.12-52.12v-433.273c0-28.796-23.324-52.12-52.12-52.12z" />
  98 +<glyph unicode="&#xf35b;" glyph-name="default-tip" horiz-adv-x="832" d="M416 864c228 0 416-188 416-416s-188-416-416-416-416 188-416 416 188 416 416 416zM464 240v80h-96v-80h96zM464 416v256h-96v-256h96z" />
  99 +<glyph unicode="&#xf36e;" glyph-name="error-tip" horiz-adv-x="832" d="M416 864c230 0 416-186 416-416s-186-416-416-416-416 186-416 416 186 416 416 416zM624 298l-150 150 150 150-58 58-150-150-150 150-58-58 150-150-150-150 58-58 150 150 150-150z" />
  100 +<glyph unicode="&#xf3ff;" glyph-name="success-tip" horiz-adv-x="832" d="M416 864c230 0 416-186 416-416s-186-416-416-416-416 186-416 416 186 416 416 416zM352 300l268 270-36 36-250-252-94 94-36-36 112-112c4-4 12-8 18-8s14 4 18 8z" />
  101 +<glyph unicode="&#xf404;" glyph-name="close-tip" horiz-adv-x="384" d="M360 640l24-24-168-168 168-168-24-24-168 168-168-168-24 24 168 168-168 168 24 24 168-168z" />
98 </font></defs></svg> 102 </font></defs></svg>
@@ -25,351 +25,276 @@ @@ -25,351 +25,276 @@
25 .icon-down:before { 25 .icon-down:before {
26 content: "\e602"; 26 content: "\e602";
27 } 27 }
28 -  
29 .icon-check:before { 28 .icon-check:before {
30 content: "\e603"; 29 content: "\e603";
31 } 30 }
32 -  
33 .icon-love:before { 31 .icon-love:before {
34 content: "\e604"; 32 content: "\e604";
35 } 33 }
36 -  
37 .icon-close:before { 34 .icon-close:before {
38 content: "\e605"; 35 content: "\e605";
39 } 36 }
40 -  
41 .icon-left:before { 37 .icon-left:before {
42 content: "\e606"; 38 content: "\e606";
43 } 39 }
44 -  
45 .icon-right:before { 40 .icon-right:before {
46 content: "\e607"; 41 content: "\e607";
47 } 42 }
48 -  
49 .icon-search:before { 43 .icon-search:before {
50 content: "\e608"; 44 content: "\e608";
51 } 45 }
52 -  
53 .icon-love-solid:before { 46 .icon-love-solid:before {
54 content: "\e609"; 47 content: "\e609";
55 } 48 }
56 -  
57 .icon-focus:before { 49 .icon-focus:before {
58 content: "\e60c"; 50 content: "\e60c";
59 } 51 }
60 -  
61 .icon-focused:before { 52 .icon-focused:before {
62 content: "\e60d"; 53 content: "\e60d";
63 } 54 }
64 -  
65 .icon-share:before { 55 .icon-share:before {
66 content: "\e60e"; 56 content: "\e60e";
67 } 57 }
68 -  
69 .icon-blk:before { 58 .icon-blk:before {
70 content: "\e60f"; 59 content: "\e60f";
71 } 60 }
72 -  
73 .icon-importedlayers:before { 61 .icon-importedlayers:before {
74 content: "\e610"; 62 content: "\e610";
75 } 63 }
76 -  
77 .icon-up:before { 64 .icon-up:before {
78 content: "\e617"; 65 content: "\e617";
79 } 66 }
80 -  
81 .icon-plus:before { 67 .icon-plus:before {
82 content: "\e900"; 68 content: "\e900";
83 } 69 }
84 -  
85 .icon-back:before { 70 .icon-back:before {
86 content: "\e901"; 71 content: "\e901";
87 } 72 }
88 -  
89 .icon-choose:before { 73 .icon-choose:before {
90 content: "\e902"; 74 content: "\e902";
91 } 75 }
92 -  
93 .icon-minus:before { 76 .icon-minus:before {
94 content: "\e903"; 77 content: "\e903";
95 } 78 }
96 -  
97 .icon-brand:before { 79 .icon-brand:before {
98 content: "\e904"; 80 content: "\e904";
99 } 81 }
100 -  
101 .icon-shopping-bag:before { 82 .icon-shopping-bag:before {
102 content: "\e905"; 83 content: "\e905";
103 } 84 }
104 -  
105 .icon-time-o:before { 85 .icon-time-o:before {
106 content: "\e906"; 86 content: "\e906";
107 } 87 }
108 -  
109 .icon-see2:before { 88 .icon-see2:before {
110 content: "\e907"; 89 content: "\e907";
111 } 90 }
112 -  
113 .icon-8:before { 91 .icon-8:before {
114 content: "\e908"; 92 content: "\e908";
115 } 93 }
116 -  
117 .icon-filter:before { 94 .icon-filter:before {
118 content: "\e909"; 95 content: "\e909";
119 } 96 }
120 -  
121 .icon-share2:before { 97 .icon-share2:before {
122 content: "\e90a"; 98 content: "\e90a";
123 } 99 }
124 -  
125 .icon-liked:before { 100 .icon-liked:before {
126 content: "\e90b"; 101 content: "\e90b";
127 } 102 }
128 -  
129 .icon-like:before { 103 .icon-like:before {
130 content: "\e90c"; 104 content: "\e90c";
131 } 105 }
132 -  
133 .icon-82:before { 106 .icon-82:before {
134 content: "\e90d"; 107 content: "\e90d";
135 } 108 }
136 -  
137 .icon-0:before { 109 .icon-0:before {
138 content: "\e90e"; 110 content: "\e90e";
139 } 111 }
140 -  
141 .icon-5:before { 112 .icon-5:before {
142 content: "\e90f"; 113 content: "\e90f";
143 } 114 }
144 -  
145 .icon-kuaisu:before { 115 .icon-kuaisu:before {
146 content: "\e910"; 116 content: "\e910";
147 } 117 }
148 -  
149 .icon-niandu:before { 118 .icon-niandu:before {
150 content: "\e911"; 119 content: "\e911";
151 } 120 }
152 -  
153 .icon-vip:before { 121 .icon-vip:before {
154 content: "\e912"; 122 content: "\e912";
155 } 123 }
156 -  
157 .icon-youhui:before { 124 .icon-youhui:before {
158 content: "\e913"; 125 content: "\e913";
159 } 126 }
160 -  
161 .icon-zazhi:before { 127 .icon-zazhi:before {
162 content: "\e914"; 128 content: "\e914";
163 } 129 }
164 -  
165 .icon-refund-exchange:before { 130 .icon-refund-exchange:before {
166 content: "\e915"; 131 content: "\e915";
167 } 132 }
168 -  
169 .icon-wait-cargo:before { 133 .icon-wait-cargo:before {
170 content: "\e916"; 134 content: "\e916";
171 } 135 }
172 -  
173 .icon-wait-pay:before { 136 .icon-wait-pay:before {
174 content: "\e917"; 137 content: "\e917";
175 } 138 }
176 -  
177 .icon-send-cargo:before { 139 .icon-send-cargo:before {
178 content: "\e918"; 140 content: "\e918";
179 } 141 }
180 -  
181 .icon-msg:before { 142 .icon-msg:before {
182 content: "\e919"; 143 content: "\e919";
183 } 144 }
184 -  
185 .icon-bold-shopbag:before { 145 .icon-bold-shopbag:before {
186 content: "\e91a"; 146 content: "\e91a";
187 } 147 }
188 -  
189 .icon-notdef:before { 148 .icon-notdef:before {
190 content: "\e91b"; 149 content: "\e91b";
191 } 150 }
192 -  
193 .icon-sort-asc:before { 151 .icon-sort-asc:before {
194 content: "\e91c"; 152 content: "\e91c";
195 } 153 }
196 -  
197 .icon-sort-desc:before { 154 .icon-sort-desc:before {
198 content: "\e91d"; 155 content: "\e91d";
199 } 156 }
200 -  
201 .icon-x:before { 157 .icon-x:before {
202 content: "\e91e"; 158 content: "\e91e";
203 } 159 }
204 -  
205 .icon-edit-del:before { 160 .icon-edit-del:before {
206 content: "\e91f"; 161 content: "\e91f";
207 } 162 }
208 -  
209 .icon-close-round:before { 163 .icon-close-round:before {
210 content: "\e920"; 164 content: "\e920";
211 } 165 }
212 -  
213 .icon-help:before { 166 .icon-help:before {
214 content: "\e921"; 167 content: "\e921";
215 } 168 }
216 -  
217 .icon-read:before { 169 .icon-read:before {
218 content: "\e922"; 170 content: "\e922";
219 } 171 }
220 -  
221 .icon-back2:before { 172 .icon-back2:before {
222 content: "\e923"; 173 content: "\e923";
223 } 174 }
224 -  
225 .icon-sort-up:before { 175 .icon-sort-up:before {
226 content: "\e924"; 176 content: "\e924";
227 } 177 }
228 -  
229 .icon-sort-down:before { 178 .icon-sort-down:before {
230 content: "\e925"; 179 content: "\e925";
231 } 180 }
232 -  
233 .icon-timeshare:before { 181 .icon-timeshare:before {
234 content: "\e926"; 182 content: "\e926";
235 } 183 }
236 -  
237 .icon-more:before { 184 .icon-more:before {
238 content: "\e927"; 185 content: "\e927";
239 } 186 }
240 -  
241 .icon-noselect:before { 187 .icon-noselect:before {
242 content: "\e928"; 188 content: "\e928";
243 } 189 }
244 - 190 +.icon-del:before {
  191 + content: "\e929";
  192 +}
245 .icon-message:before { 193 .icon-message:before {
246 content: "\e92a"; 194 content: "\e92a";
247 } 195 }
248 -  
249 .icon-delete:before { 196 .icon-delete:before {
250 content: "\e92b"; 197 content: "\e92b";
251 } 198 }
252 -  
253 .icon-nav:before { 199 .icon-nav:before {
254 content: "\e92c"; 200 content: "\e92c";
255 } 201 }
256 -  
257 .icon-setting:before { 202 .icon-setting:before {
258 content: "\e92d"; 203 content: "\e92d";
259 } 204 }
260 -  
261 .icon-search2:before { 205 .icon-search2:before {
262 content: "\e92e"; 206 content: "\e92e";
263 } 207 }
264 -  
265 .icon-email:before { 208 .icon-email:before {
266 content: "\e92f"; 209 content: "\e92f";
267 } 210 }
268 -  
269 .icon-battery:before { 211 .icon-battery:before {
270 content: "\e930"; 212 content: "\e930";
271 } 213 }
272 -  
273 .icon-key:before { 214 .icon-key:before {
274 content: "\e931"; 215 content: "\e931";
275 } 216 }
276 -  
277 .icon-note:before { 217 .icon-note:before {
278 content: "\e932"; 218 content: "\e932";
279 } 219 }
280 -  
281 .icon-question:before { 220 .icon-question:before {
282 content: "\e933"; 221 content: "\e933";
283 } 222 }
284 -  
285 .icon-time2:before { 223 .icon-time2:before {
286 content: "\e934"; 224 content: "\e934";
287 } 225 }
288 -  
289 .icon-card:before { 226 .icon-card:before {
290 content: "\e935"; 227 content: "\e935";
291 } 228 }
292 -  
293 .icon-bag2:before { 229 .icon-bag2:before {
294 content: "\e936"; 230 content: "\e936";
295 } 231 }
296 -  
297 .icon-logistics:before { 232 .icon-logistics:before {
298 content: "\e937"; 233 content: "\e937";
299 } 234 }
300 -  
301 .icon-money:before { 235 .icon-money:before {
302 content: "\e938"; 236 content: "\e938";
303 } 237 }
304 -  
305 .icon-document:before { 238 .icon-document:before {
306 content: "\e939"; 239 content: "\e939";
307 } 240 }
308 -  
309 .icon-wifi:before { 241 .icon-wifi:before {
310 content: "\e93a"; 242 content: "\e93a";
311 } 243 }
312 -  
313 .icon-email2:before { 244 .icon-email2:before {
314 content: "\e93b"; 245 content: "\e93b";
315 } 246 }
316 -  
317 .icon-focus2:before { 247 .icon-focus2:before {
318 content: "\e93c"; 248 content: "\e93c";
319 } 249 }
320 -  
321 .icon-shopbag:before { 250 .icon-shopbag:before {
322 content: "\e93d"; 251 content: "\e93d";
323 } 252 }
324 -  
325 .icon-search3:before { 253 .icon-search3:before {
326 content: "\e93e"; 254 content: "\e93e";
327 } 255 }
328 -  
329 .icon-position:before { 256 .icon-position:before {
330 content: "\e93f"; 257 content: "\e93f";
331 } 258 }
332 -  
333 .icon-onlineservice:before { 259 .icon-onlineservice:before {
334 content: "\e940"; 260 content: "\e940";
335 } 261 }
336 -  
337 .icon-seven:before { 262 .icon-seven:before {
338 content: "\e941"; 263 content: "\e941";
339 } 264 }
340 -  
341 .icon-real:before { 265 .icon-real:before {
342 content: "\e942"; 266 content: "\e942";
343 } 267 }
344 -  
345 .icon-unsupport-seven:before { 268 .icon-unsupport-seven:before {
346 content: "\e943"; 269 content: "\e943";
347 } 270 }
348 -  
349 .icon-back-top1:before { 271 .icon-back-top1:before {
350 content: "\e944"; 272 content: "\e944";
351 } 273 }
352 -  
353 .icon-see:before { 274 .icon-see:before {
354 content: "\e945"; 275 content: "\e945";
355 } 276 }
356 -  
357 .icon-reduce:before { 277 .icon-reduce:before {
358 content: "\e946"; 278 content: "\e946";
359 } 279 }
360 -  
361 .icon-add:before { 280 .icon-add:before {
362 content: "\e947"; 281 content: "\e947";
363 } 282 }
364 -  
365 -.icon-del:before {  
366 - content: "\e929";  
367 -}  
368 -  
369 .icon-order:before { 283 .icon-order:before {
370 content: "\e948"; 284 content: "\e948";
371 } 285 }
372 -  
373 .icon-store:before { 286 .icon-store:before {
374 content: "\e949"; 287 content: "\e949";
375 } 288 }
  289 +.icon-default-tip:before {
  290 + content: "\f35b";
  291 +}
  292 +.icon-error-tip:before {
  293 + content: "\f36e";
  294 +}
  295 +.icon-success-tip:before {
  296 + content: "\f3ff";
  297 +}
  298 +.icon-close-tip:before {
  299 + content: "\f404";
  300 +}