¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view |
| | | class="u-loadmore" |
| | | :style="[ |
| | | $u.addStyle(customStyle), |
| | | { |
| | | backgroundColor: bgColor, |
| | | marginBottom: $u.addUnit(marginBottom), |
| | | marginTop: $u.addUnit(marginTop), |
| | | height: $u.addUnit(height), |
| | | }, |
| | | ]" |
| | | > |
| | | <u-line |
| | | length="140rpx" |
| | | :color="lineColor" |
| | | :hairline="false" |
| | | :dashed="dashed" |
| | | v-if="line" |
| | | ></u-line> |
| | | <!-- å è½½ä¸åæ²¡ææ´å¤çç¶æææ¾ç¤ºä¸¤è¾¹çæ¨ªçº¿ --> |
| | | <view |
| | | :class="status == 'loadmore' || status == 'nomore' ? 'u-more' : ''" |
| | | class="u-loadmore__content" |
| | | > |
| | | <view |
| | | class="u-loadmore__content__icon-wrap" |
| | | v-if="status === 'loading' && icon" |
| | | > |
| | | <u-loading-icon |
| | | :color="iconColor" |
| | | :size="iconSize" |
| | | :mode="loadingIcon" |
| | | ></u-loading-icon> |
| | | </view> |
| | | <!-- å¦ææ²¡ææ´å¤çç¶æä¸ï¼æ¾ç¤ºå
容为dotï¼ç²ç¹ï¼ï¼å è½½ç¹å®æ ·å¼ --> |
| | | <text |
| | | class="u-line-1" |
| | | :style="[loadTextStyle]" |
| | | :class="[(status == 'nomore' && isDot == true) ? 'u-loadmore__content__dot-text' : 'u-loadmore__content__text']" |
| | | @tap="loadMore" |
| | | >{{ showText }}</text> |
| | | </view> |
| | | <u-line |
| | | length="140rpx" |
| | | :color="lineColor" |
| | | :hairline="false" |
| | | :dashed="dashed" |
| | | v-if="line" |
| | | ></u-line> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import props from './props.js'; |
| | | |
| | | /** |
| | | * loadmore å è½½æ´å¤ |
| | | * @description æ¤ç»ä»¶ä¸è¬ç¨äºæ è¯é¡µé¢åºé¨å è½½æ°æ®æ¶çç¶æã |
| | | * @tutorial https://www.uviewui.com/components/loadMore.html |
| | | * @property {String} status ç»ä»¶ç¶æï¼é»è®¤ 'loadmore' ï¼ |
| | | * @property {String} bgColor ç»ä»¶èæ¯é¢è²ï¼å¨é¡µé¢æ¯éç½è²æ¶ä¼ç¨å°ï¼é»è®¤ 'transparent' ï¼ |
| | | * @property {Boolean} icon å è½½ä¸æ¶æ¯å¦æ¾ç¤ºå¾æ ï¼é»è®¤ true ï¼ |
| | | * @property {String | Number} fontSize åä½å¤§å°ï¼é»è®¤ 14 ï¼ |
| | | * @property {String | Number} iconSize 徿 大å°ï¼é»è®¤ 17 ï¼ |
| | | * @property {String} color åä½é¢è²ï¼é»è®¤ '#606266' ï¼ |
| | | * @property {String} loadingIcon å è½½å¾æ ï¼é»è®¤ 'circle' ï¼ |
| | | * @property {String} loadmoreText å è½½åçæç¤ºè¯ï¼é»è®¤ 'å è½½æ´å¤' ï¼ |
| | | * @property {String} loadingText å è½½ä¸æç¤ºè¯ï¼é»è®¤ 'æ£å¨å è½½...' ï¼ |
| | | * @property {String} nomoreText æ²¡ææ´å¤çæç¤ºè¯ï¼é»è®¤ 'æ²¡ææ´å¤äº' ï¼ |
| | | * @property {Boolean} isDot å°ä¸ä¸ä¸ªç¸é»å
ç´ çè·ç¦» ï¼é»è®¤ false ï¼ |
| | | * @property {String} iconColor å è½½ä¸å¾æ çé¢è² ï¼é»è®¤ '#b7b7b7' ï¼ |
| | | * @property {String} lineColor 线æ¡é¢è²ï¼é»è®¤ #E6E8EB ï¼ |
| | | * @property {String | Number} marginTop ä¸è¾¹è· ï¼é»è®¤ 10 ï¼ |
| | | * @property {String | Number} marginBottom ä¸è¾¹è· ï¼é»è®¤ 10 ï¼ |
| | | * @property {String | Number} height é«åº¦ï¼åä½px ï¼é»è®¤ 'auto' ï¼ |
| | | * @property {Boolean} line æ¯å¦æ¾ç¤ºå·¦è¾¹åå²çº¿ ï¼é»è®¤ false ï¼ |
| | | * @property {Boolean} dashed // æ¯å¦è线ï¼true-è线ï¼false-å®çº¿ ï¼é»è®¤ false ï¼ |
| | | * @event {Function} loadmore status为loadmoreæ¶ï¼ç¹å»ç»ä»¶ä¼ååºæ¤äºä»¶ |
| | | * @example <u-loadmore :status="status" icon-type="iconType" load-text="loadText" /> |
| | | */ |
| | | export default { |
| | | name: "u-loadmore", |
| | | mixins: [uni.$u.mpMixin, uni.$u.mixin,props], |
| | | data() { |
| | | return { |
| | | // ç²ç¹ |
| | | dotText: "â" |
| | | } |
| | | }, |
| | | computed: { |
| | | // å è½½çæåæ¾ç¤ºçæ ·å¼ |
| | | loadTextStyle() { |
| | | return { |
| | | color: this.color, |
| | | fontSize: uni.$u.addUnit(this.fontSize), |
| | | lineHeight: uni.$u.addUnit(this.fontSize), |
| | | backgroundColor: this.bgColor, |
| | | } |
| | | }, |
| | | // æ¾ç¤ºçæç¤ºæå |
| | | showText() { |
| | | let text = ''; |
| | | if (this.status == 'loadmore') text = this.loadmoreText |
| | | else if (this.status == 'loading') text = this.loadingText |
| | | else if (this.status == 'nomore' && this.isDot) text = this.dotText; |
| | | else text = this.nomoreText; |
| | | return text; |
| | | } |
| | | }, |
| | | methods: { |
| | | loadMore() { |
| | | // åªæå¨âå è½½æ´å¤âçç¶æä¸æåéç¹å»äºä»¶ï¼å
容䏿»¡ä¸å±æ¶æ æ³è§¦ååºé¨ä¸æäºä»¶ï¼æä»¥éè¦ç¹å»æ¥è§¦å |
| | | if (this.status == 'loadmore') this.$emit('loadmore'); |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "../../libs/css/components.scss"; |
| | | |
| | | .u-loadmore { |
| | | @include flex(row); |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex: 1; |
| | | |
| | | &__content { |
| | | margin: 0 15px; |
| | | @include flex(row); |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | &__icon-wrap { |
| | | margin-right: 8px; |
| | | } |
| | | |
| | | &__text { |
| | | font-size: 14px; |
| | | color: $u-content-color; |
| | | } |
| | | |
| | | &__dot-text { |
| | | font-size: 15px; |
| | | color: $u-tips-color; |
| | | } |
| | | } |
| | | } |
| | | </style> |