| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 | <template>	<view	    class="u-text"	    :class="[]"	    v-if="show"		:style="{			margin: margin		}"	    @tap="clickHandler"	>		<text		    class="u-text__price"		    v-if="mode === 'price'"		    :style="[valueStyle]"		>¥</text>		<view		    class="u-text__prefix-icon"		    v-if="prefixIcon"		>			<u-icon			    :name="prefixIcon"			    :customStyle="$u.addStyle(iconStyle)"			></u-icon>		</view>		<u-link		    v-if="mode === 'link'"		    :text="value"		    :href="href"		    underLine		></u-link>		<template v-else-if="openType && isMp">			<button			    class="u-reset-button u-text__value"			    :style="[valueStyle]"			    :data-index="index"			    :openType="openType"			    @getuserinfo="onGetUserInfo"			    @contact="onContact"			    @getphonenumber="onGetPhoneNumber"			    @error="onError"			    @launchapp="onLaunchApp"			    @opensetting="onOpenSetting"			    :lang="lang"			    :session-from="sessionFrom"			    :send-message-title="sendMessageTitle"			    :send-message-path="sendMessagePath"			    :send-message-img="sendMessageImg"			    :show-message-card="showMessageCard"			    :app-parameter="appParameter"			>{{ value }}</button>		</template>		<text		    v-else		    class="u-text__value"		    :style="[valueStyle]"		    :class="[type && `u-text__value--${type}`, lines && `u-line-${lines}`]"		>{{ value }}</text>		<view		    class="u-text__suffix-icon"		    v-if="suffixIcon"		>			<u-icon			    :name="suffixIcon"			    :customStyle="$u.addStyle(iconStyle)"			></u-icon>		</view>	</view></template><script>	import value from './value.js'	import button from '../../libs/mixin/button.js'	import openType from '../../libs/mixin/openType.js'	import props from './props.js';	/**	 * Text 文本	 * @description 此组件集成了文本类在项目中的常用功能,包括状态,拨打电话,格式化日期,*替换,超链接...等功能。 您大可不必在使用特殊文本时自己定义,text组件几乎涵盖您能使用的大部分场景。	 * @tutorial https://www.uviewui.com/components/loading.html	 * @property {String} 					type		主题颜色	 * @property {Boolean} 					show		是否显示(默认 true )		 * @property {String | Number}			text		显示的值	 * @property {String}					prefixIcon	前置图标	 * @property {String} 					suffixIcon	后置图标	 * @property {String} 					mode		文本处理的匹配模式 text-普通文本,price-价格,phone-手机号,name-姓名,date-日期,link-超链接	 * @property {String} 					href		mode=link下,配置的链接	 * @property {String | Function} 		format		格式化规则	 * @property {Boolean} 					call		mode=phone时,点击文本是否拨打电话(默认 false )	 * @property {Boolean} 					encrypt		是否对mode=phone|name类型文本进行脱敏,用*号替换部分文本(默认 false )	 * @property {String} 					openType	小程序的打开方式	 * @property {Boolean} 					bold		是否粗体,默认normal(默认 false )	 * @property {Boolean} 					block		是否块状(默认 false )	 * @property {String | Number} 			lines		文本显示的行数,如果设置,超出此行数,将会显示省略号	 * @property {String} 					color		文本颜色(默认 '#303133' )	 * @property {String | Number} 			size		字体大小(默认 15 )	 * @property {Object | String} 			iconStyle	图标的样式 (默认 {fontSize: '15px'} )	 * @property {Boolean} 					precision	是否显示金额的千分位,mode=price时有效(默认 true )	 * @property {String} 					decoration	是否显示金额的千分位,mode=price时有效(默认 'none' )	 * @property {Object | String | Number}	margin		外边距,对象、字符串,数值形式均可(默认 0 )	 * @property {String | Number} 			lineHeight	文本行高	 * @property {String} 					align		文本对齐方式,可选值left|center|right(默认 'left' )	 * @property {String} 					wordWrap	文字换行,可选值break-word|normal|anywhere(默认 'normal' ) 	 * @event {Function} click  点击触发事件	 * @example <u--text text="我用十年青春,赴你最后之约"></u--text>	 */	export default {		name: 'u--text',		// #ifdef MP		mixins: [uni.$u.mpMixin, uni.$u.mixin, value, button, openType, props],		// #endif		// #ifndef MP		mixins: [uni.$u.mpMixin, uni.$u.mixin, value, props],		// #endif		computed: {			valueStyle() {				const style = {					textDecoration: this.decoration,					fontWeight: this.bold ? 'bold' : 'normal',					textAlign: this.align,					wordWrap: this.wordWrap,					fontSize: uni.$u.addUnit(this.size)				}				!this.type && (style.color = this.color)				this.isNvue && this.lines && (style.lines = this.lines)				this.lineHeight && (style.lineHeight = uni.$u.addUnit(this.lineHeight))				!this.isNvue && this.block && (style.display = 'block')				return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle))			},			isNvue() {				let nvue = false				// #ifdef APP-NVUE				nvue = true				// #endif				return nvue			},			isMp() {				let mp = false				// #ifdef MP				mp = true				// #endif				return mp			}		},		data() {			return {			}		},		methods: {			clickHandler() {				// 如果为手机号模式,拨打电话				if (this.mode === 'phone' && uni.$u.test.mobile(this.text)) {					uni.makePhoneCall({						phoneNumber: this.text					});				}				this.$emit('click')			}		}	}</script><style lang="scss" scoped>	@import "../../libs/css/components.scss";	.u-text {		@include flex(row);		align-items: center;		flex-wrap: wrap;		flex: 1;		&__price {			font-size: 14px;			color: $u-content-color;		}		&__value {			font-size: 14px;			@include flex;			color: $u-content-color;			flex-wrap: wrap;			flex: 1;			text-overflow: ellipsis;			align-items: center;			&--primary {				color: $u-primary;			}			&--warning {				color: $u-warning;			}			&--success {				color: $u-success;			}			&--info {				color: $u-info;			}			&--error {				color: $u-error;			}			&--main {				color: $u-main-color;			}			&--content {				color: $u-content-color;			}			&--tips {				color: $u-tips-color;			}			&--light {				color: $u-light-color;			}		}	}</style>
 |