| <template> | 
|     <view | 
|         class="u-text" | 
|         :class="[]" | 
|         v-if="show" | 
|         :style="{ | 
|             margin: margin, | 
|             justifyContent: align === 'left' ? 'flex-start' : align === 'center' ? 'center' : 'flex-end' | 
|         }" | 
|         @tap="clickHandler" | 
|     > | 
|         <text | 
|             :class="['u-text__price', type && `u-text__value--${type}`]" | 
|             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 {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 {String}                     decoration    文字装饰,下划线,中划线等,可选值 none|underline|line-through(默认 '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', | 
|                 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.call && this.mode === 'phone') { | 
|                 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: nowrap; | 
|     flex: 1; | 
|     /* #ifndef APP-NVUE */ | 
|     width: 100%; | 
|     /* #endif */ | 
|   | 
|     &__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> |