1
0
spogulis no https://github.com/ialley-workshop-open/uni-halo.git synced 2026-06-12 13:19:31 +08:00
Files
uni-halo/tm-vuetify/components/tm-stepsItem/tm-stepsItem.vue
T
2022-12-06 15:08:29 +08:00

183 rindas
4.0 KiB
Vue
Neapstrādāts Vainot Vēsture

Šis fails satur neviennozīmīgus unikoda simbolus
Šis fails satur unikoda simbolus, kas var tikt sajauktas ar citām rakstzīmēm. Ja šķiet, ka tas ir ar nolūku, šo brīdinājumu var droši neņemt vērā. Jāizmanto atsoļa taustiņš (Esc), lai atklātu tās.
<template>
<view class="tm-stepsItem ">
<view @click="onclick" class="px-10 flex-center flex-col tm-stepsItem-wk" >
<view class="tm-stepsItem-dian rounded flex-center"
:class="[
isSu&&!isFa&&model=='icon'?' su '+ color +' shadow-'+color+'-5':'',
isSu&&!isFa&&model=='number'?' su '+color +' shadow-'+color+'-5' :'',
isFa?'fa red' +' shadow-red-5':'',
isWa&&!isFa&&!isSu?(black_tmeme?'wa bk grey-lighten-4 text-grey':`wa grey-lighten-4 text text-grey`):'',
]"
>
<text v-if="model=='number'">{{setNum}}</text>
<view v-if="model=='icon'">
<tm-icons size="20" v-if="isSu&&!isFa" name="icon-check"></tm-icons>
<tm-icons size="20" v-if="isFa" name="icon-times"></tm-icons>
<view v-if="isWa&&!isFa&&!isSu" class="tm-stepsItem-dian-quan rounded " :class="[color]"></view>
</view>
</view>
<view class="tm-stepsItem-text text-size-xs py-10 "><slot></slot></view>
</view>
</view>
</template>
<script>
/**
* 步骤条子组件
* @description 只能在tm-steps中使用。默认插槽显示底部内容。
* @property {String} model = [number|icon] 默认:number,两种模式,number:数字,icon:图标模式。
* @property {String} color = [] 默认:primary,主题色。
* @property {Boolean} wait = [true|false] 默认:true,待流转。显示错误状态。优先级最低
* @property {Boolean} fail = [true|false] 默认:false,显示错误状态。优先级最高
* @property {Boolean} success = [true|false] 默认:false,显示错误状态。优先级高于wait.
* @property {Number|String} step = [] 默认:0model=number时,显示的数字文本。
* @property {Boolean} black = [true|false] 默认:false,暗黑模式。
* @property {Function} click 点击事件。
* @example <tm-stepsItem :fail="true" model="icon" ></tm-stepsItem>
*/
export default {
name:"tm-stepsItem",
props:{
black:{
type:Boolean|String,
default:null
},
step:{
type:Number|String,
default:0
},
success:{
type:Boolean,
default:false
},
fail:{
type:Boolean,
default:false
},
wait:{
type:Boolean,
default:true
},
color:{
type:String,
default:'primary'
},
// number|icon
model:{
type:String,
default:'number'
}
},
data() {
return {
width:0,
su_selft:false,
fa_selft:false,
wa_selft:false,
};
},
watch:{
success:function(newval){
this.isSu = newval;
},
fail:function(newval){
this.isFa = newval;
},
wait:function(newval){
this.isWa = newval;
},
},
computed:{
black_tmeme: function() {
if (this.black !== null) return this.black;
return this.$tm.vx.state().tmVuetify.black;
},
setNum:function(){
return this.step;
},
isSu:{
get:function(){
return this.su_selft;
},
set:function(val){
this.su_selft = val;
}
},
isFa:{
get:function(){
return this.fa_selft;
},
set:function(val){
this.fa_selft = val;
}
},
isWa:{
get:function(){
return this.wa_selft;
},
set:function(val){
this.wa_selft = val;
}
},
},
async mounted() {
this.isSu = this.success;
this.isFa = this.fail;
this.isWa = this.wait;
this.$nextTick(async function (){
let tbs = await this.$Querey(".tm-stepsItem");
this.width = tbs[0].width;
})
},
methods: {
setActive({success,fail,wait}) {
this.isSu = success;
if(typeof fail !=='undefined'){
this.isFa = fail;
}
this.isWa = wait;
},
onclick(e){
this.$emit('click',e)
},
},
}
</script>
<style lang="scss" scoped>
.tm-stepsItem{
flex-shrink: 0;
.tm-stepsItem-wk{
position: relative;
top: -18upx;
}
.tm-stepsItem-dian{
width: 36upx;
height: 36upx;
font-size: 22upx;
line-height: 12upx;
.tm-stepsItem-dian-quan{
width: 12upx;
height: 12upx;
}
}
.tm-stepsItem-text{
flex-shrink: 0;
width: 100upx;
text-align: center;
}
}
</style>