81 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <section class="AiPhone">
 | |
|     <el-input v-if="mode=='input'" v-model="phone" clearable :disabled="disabled" :placeholder="placeholder"
 | |
|               :maxLength="11" @change="autoComplete"></el-input>
 | |
|     <el-row type="flex" v-if="mode=='show'" style="align-items: center">
 | |
|       <el-button type="text" v-if="!rightBtn&&showEyes" :icon="showIcon" @click="isShow=!isShow"></el-button>
 | |
|       <span v-if="isShow">{{value||"-"}}</span>
 | |
|       <span v-else>{{hideId}}</span>
 | |
|       <el-button type="text" v-if="rightBtn&&showEyes" :icon="showIcon" @click="isShow=!isShow"></el-button>
 | |
|     </el-row>
 | |
|   </section>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
|   export default {
 | |
|     name: "AiPhone",
 | |
|     model: {
 | |
|       prop: "value",
 | |
|       event: "change"
 | |
|     },
 | |
|     props: {
 | |
|       value: String,
 | |
|       mode: {type: String, default: 'input'},
 | |
|       rightBtn: Boolean,
 | |
|       show: {type: Boolean, default: false},
 | |
|       disabled: Boolean,
 | |
|       placeholder: String,
 | |
|       showEyes: {type: Boolean, default: true}
 | |
|     },
 | |
|     computed: {
 | |
|       showIcon() {
 | |
|         return this.isShow ? 'iconfont iconHide_Content' : 'iconfont iconShow_Content'
 | |
|       },
 | |
|       hideId() {
 | |
|         if (this.value) {
 | |
|           let idArr = Array.from(this.value)
 | |
|           idArr.splice(3, 4, "****")
 | |
|           return idArr.join("") || "-"
 | |
|         } else return "-"
 | |
|       }
 | |
|     },
 | |
|     data() {
 | |
|       return {
 | |
|         isShow: false,
 | |
|         phone: ""
 | |
|       }
 | |
|     },
 | |
|     methods: {
 | |
|       autoComplete() {
 | |
|         this.$emit("valid", this.validate(this.phone))
 | |
|       },
 | |
|       validate(phone) {
 | |
|         let result = false, msg = ''
 | |
|         if(phone){
 | |
|           if(phone.length==11){
 | |
|             if((/^1(3|4|5|6|7|8|9)\d{9}$/.test(phone))){
 | |
|               result = true
 | |
|             }else{
 | |
|               msg = "手机号不合法!"
 | |
|             }
 | |
|           }else{
 | |
|             msg = "手机号长度不合法!"
 | |
|           }
 | |
|         }else{
 | |
|           msg = "手机号不能为空!"
 | |
|         }
 | |
|         return [result, msg]
 | |
|       }
 | |
|     },
 | |
|     mounted() {
 | |
|       this.phone = this.value
 | |
|       this.isShow = this.show
 | |
|     }
 | |
|   }
 | |
| </script>
 | |
| 
 | |
| <style lang="scss" scoped>
 | |
|   .AiPhone {
 | |
|   }
 | |
| </style>
 |