You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

261 lines
4.6 KiB
Vue

8 months ago
<template>
<view class="g-components-button">
<button class="bocai-btn" :class="['bocai_btn_size_' + size, 'bocai_btn_mode_' + mode, 'bocai_btn_type_' + type, 'g_w_' + width, 'g_h_' + height]" :hover-stop-propagation="true" hover-class="thover" @click="handleClick" :form-type="formType" :open-type="openType" @getphonenumber="getphonenumber">
<view class="g_flex_row_center">
<view class="g_flex_column_center g_mr_4" v-if="loading">
<u-loading mode="flower"></u-loading>
</view>
<view class="g_flex_column_center" v-if="icon">
<view class="iconfont icon" :class="icon"></view>
</view>
<view class="g_flex_column_center">
{{ btnText }}
</view>
</view>
</button>
</view>
</template>
<script>
/*
* @params size 尺寸
* medium
* default 默认
* small
* mini 迷你
* @params btnText 按钮文本
* @params mode 形状
* circle 胶囊式圆角square 圆角方形
* @parmas type 类型
* primary 主要按钮底色是主题色
* default 默认按钮底色是白色
* infro 信息按钮底色是灰色
* delete 删除按钮白底红色
* none 没有样式白底黑字
* disabled 禁用白底黑字
* @params openType 开放类型
* @params openType 开放类型
* @params icon 图标 项目id 4374774
*/
export default {
props: {
size: {
type: String,
default: () => {
return "default";
},
},
btnText: {
type: String,
default: () => {
return "按钮";
},
},
mode: {
type: String,
default: () => {
return "circle";
},
},
type: {
type: String,
default: () => {
return "default";
},
},
openType: {
type: String,
default: () => {
return "";
},
},
formType: {
type: String,
default: () => {
return "";
},
},
icon: {
type: String,
default: () => {
return "";
},
},
width: {
default: () => {
return "auto";
},
},
height: {
default: () => {
return "auto";
},
},
loading: {
default: () => {
return false;
},
},
},
methods: {
handleClick() {
this.$emit("clickBtn");
},
getphonenumber(e) {
this.$emit("clickTel", e);
},
},
};
</script>
<style lang="scss" scoped>
@import '../static/css/base.scss';
.g-components-button {
.bocai-btn {
width: 100%;
color: #ffffff;
box-sizing: border-box;
}
.bocai_btn_size {
&_medium {
height: 56px;
font-size: 18px;
line-height: 56px;
}
&_default {
width: 250px !important;
height: 42px;
font-size: 18px;
line-height: 42px;
.icon {
font-size: 27px;
}
&_auto {
width: 100%;
height: 42px;
font-size: 18px;
line-height: 42px;
}
}
&_small {
width: 120px !important;
height: 40px;
font-size: 16px;
line-height: 40px;
.icon {
font-size: 27px;
}
&_auto {
width: 100%;
height: 40px;
font-size: 16px;
line-height: 40px;
}
}
&_160 {
width: 160px !important;
height: 40px;
font-size: 16px;
line-height: 40px;
.icon {
font-size: 27px;
}
&_auto {
width: 100%;
height: 40px;
font-size: 16px;
line-height: 40px;
}
}
&_mini {
height: 28px;
padding: 0 8px;
font-size: 14px;
line-height: 28px;
.icon {
font-size: 12px;
}
}
&_height {
height: 40px;
font-size: 16px;
line-height: 40px;
.icon {
font-size: 27px;
}
&_auto {
width: 100%;
height: 40px;
font-size: 16px;
line-height: 40px;
}
}
}
.bocai_btn_mode {
&_circle {
border-radius: 60px;
}
&_square {
border-radius: 10px;
}
}
.bocai_btn_type {
&_primary {
background-color: $main_color;
color: #fff;
}
&_default {
background-color: #fff;
color: $main_color;
border: 1px solid $main_color;
&.thover {
opacity: 1;
background: #f5f5f5;
}
}
&_infro {
pointer-events: none;
background: #f5f5f5;
color: #666;
border: 0.5px solid #f5f5f5;
&.thover {
background: #cccccc;
}
}
&_delete {
border: 1rpx solid #fff;
background-color: #fff;
color: #fa5151;
&.thover {
background-color: #f5f5f5;
border: 1rpx solid #f5f5f5;
}
}
&_none {
background-color: #fff;
color: #666;
border: 1rpx solid #ccc;
&.thover {
background-color: #f5f5f5;
}
}
&_disabled{
background-color: rgba(0,0,0,0.05);
color: rgba(0,0,0,0.15);
&.thover {
background-color: rgba(0,0,0,0.05);
}
}
}
.g_w_260 {
width: 260px !important;
}
.g_h_48 {
height: 48px !important;
line-height: 48px !important;
}
}
</style>