ui库和web端产品库合并版本(还需修复细节)
This commit is contained in:
		
							
								
								
									
										55
									
								
								ui/packages/layout/AiHighlight.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								ui/packages/layout/AiHighlight.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | ||||
| <template> | ||||
|   <section class="AiHighlight" :class="{bold,color}" v-html="html"/> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| export default { | ||||
|   name: "AiHighlight", | ||||
|   props: { | ||||
|     value: {default: ""}, | ||||
|     content: {default: ""}, | ||||
|     keywords: {default: () => []}, | ||||
|     color: {default: ""}, | ||||
|     bold: Boolean | ||||
|   }, | ||||
|   computed: { | ||||
|     words: v => [v.keywords].flat(), | ||||
|     html() { | ||||
|       let {content, words, value} = this | ||||
|       const reg = new RegExp(`(${words.join("|")})`, 'g') | ||||
|       content = content?.replace(/(@v)/g, this.keywordRender(value)) | ||||
|       return !!words.join("|") ? content?.replace(reg, this.keywordRender('$1')) : content | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     keywordRender(word) { | ||||
|       const {color} = this | ||||
|       return `<p class="keyword" style="color:${color}">${word}</p>` | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| ::v-deep.AiHighlight { | ||||
|   display: flex; | ||||
|   align-items: baseline; | ||||
|  | ||||
|   .keyword { | ||||
|     display: block; | ||||
|     width: auto; | ||||
|     color: $primaryColor; | ||||
|   } | ||||
|  | ||||
|   &.color { | ||||
|     .keyword { | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   &.bold { | ||||
|     .keyword { | ||||
|       font-weight: bold; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
		Reference in New Issue
	
	Block a user