c-button.vue 1.5 KB
<template>
	<view class="u-button">
		<u-button type="primary" :shape="shape" :open-type="openType" @getphonenumber="getPhoneNumber" hover-class="none" :disabled="disabled" :custom-style="getCustomStyle"
			@click="click">
			{{text}}
		</u-button>
	</view>
</template>

<script>
	export default {
		name: 'u-button',
		props: {
			text: {
				type: String,
				default: ''
			},
			type: {
				type: String,
				default: 'confirm'
			},
			openType: {
				type: String,
				default: ''
			},
			shape: {
				type: String,
				default: 'square'
			},
			disabled: {
				type: Boolean,
				default: false
			},
			customStyle: {
				type: Object,
				default () {
					return {}
				}
			},
		},
		data() {
			return {}
		},
		computed: {
			getCustomStyle() {

				const {
					type = ''
				} = this;

				let style = {};

				switch (type) {
					case 'confirm':
						return Object.assign({}, {
							backgroundColor: '#FF001A',
							borderRadius: '8rpx',
						}, this.customStyle);
						break;

					case 'cancel':
						return Object.assign({}, {
							backgroundColor: "rgba(0,0,0,0.15)",
							borderRadius: '8rpx',
						}, this.customStyle);
						break;

					case 'custom':
						return Object.assign({}, this.customStyle);
						break;
				}
			}
		},
		methods: {
			// 按钮点击
			click(e) {
				this.$emit('click', e);
			},
			
			getPhoneNumber(e) {
				this.$emit("getPhoneNumber", e)
			}
		}
	}
</script>

<style lang="scss">
	
</style>