123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <template>
- <view @click="$emit('click',$event)" class="tm-loadding flex-center vertical-align-middle">
- <!-- 加载中。 -->
- <view style="line-height: 0;" v-if="model=='load'" class="tm-loadding-load d-inline-block vertical-align-middle">
- <tm-icons dense :name="icon?icon:'icon-loading'" :color="color?color:'grey'"></tm-icons>
- </view>
- <view style="line-height: 0;" v-if="model=='fail'" class="tm-loadding-error d-inline-block vertical-align-middle">
- <tm-icons dense :name="icon?icon:'icon-wind-cry'" :color="color?color:'red'"></tm-icons>
- </view>
- <view style="line-height: 0;" v-if="model=='success'" class="tm-loadding-error d-inline-block vertical-align-middle">
- <tm-icons dense :name="icon?icon:'icon-wind-smile'" :color="color?color:'green'"></tm-icons>
- </view>
- <text class="text-size-s pl-12" :class="['text-'+(color?color:text[model].color)]">{{label?label:text[model].text}}</text>
- </view>
-
- </template>
- <script>
- /**
- * 加载状态
- * @description 为了方便管理数据加载提示。在全为true时,fail最先展示 ,其次success,其次load.
- * @property {Boolean} load = [true|false] 默认true,优先级最低。
- * @property {Boolean} success = [true|false] 默认false,优先级高于load。
- * @property {Boolean} fail = [true|false] 默认false,优先级高于success。
- * @property {String} label = [] 默认 '',自定义文本
- * @property {String} icon = [] 默认 '',自定义图标
- * @property {String} color = [] 默认 '',自定义主题
- * @property {Function} click 点击事件
- * @example <tm-loadding ></tm-loadding>
- */
- import tmIcons from "@/tm-vuetify/components/tm-icons/tm-icons.vue"
- export default {
- components:{tmIcons},
- name:"tm-loadding",
- props:{
- // 优先级最低。
- load:{
- type:Boolean,
- default:true
- },
- //优先级最高。
- fail:{
- type:Boolean,
- default:false
- },
- //优先级高于load
- success:{
- type:Boolean,
- default:false
- },
- label:{
- type:String,
- default:''
- },
- icon:{
- type:String,
- default:''
- },
- color:{
- type:String,
- default:''
- }
- },
- computed:{
- model:function(){
-
- if(this.fail) return 'fail';
- if(this.success) return 'success';
- if(this.load) return 'load';
- return 'load';
- }
- },
- data() {
- return {
- text:{
- load:{
- text:"加载中...",
- color:"grey"
- },
- fail:{
- text:"加载失败...",
- color:"red"
- },
- success:{
- text:"加载成功...",
- color:"green"
- },
- loadmore:{
- text:"上拉加载更多",
- color:"grey"
- },
- nomore:{
- text:"没有更多了哦",
- color:"grey"
- }
- }
- };
- }
- }
- </script>
- <style lang="scss" scoped>
- .tm-loadding{
- .tm-loadding-load{
- animation: xhRote 0.8s infinite linear;
- }
- }
-
- @keyframes xhRote{
- 0%{
- transform: rotate(0deg);
- }
-
- 100%{
- transform: rotate(360deg);
- }
- }
- </style>
|