105 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <div
 | |
|     class="message-product-card"
 | |
|     @click="jumpProductCard"
 | |
|   >
 | |
|     <image
 | |
|       v-if="isApp"
 | |
|       class="product-img"
 | |
|       :src="props.payload.content.pic"
 | |
|     />
 | |
|     <img
 | |
|       v-else
 | |
|       class="product-img"
 | |
|       :src="props.payload.content.pic"
 | |
|     >
 | |
|     <div class="product-card-information">
 | |
|       <div class="product-card-title">
 | |
|         {{ props.payload.content.header }}
 | |
|       </div>
 | |
|       <div class="product-card-description">
 | |
|         {{ props.payload.content.desc }}
 | |
|       </div>
 | |
|     </div>
 | |
|   </div>
 | |
| </template>
 | |
| 
 | |
| <script lang="ts">
 | |
| import { customerServicePayloadType } from '../interface';
 | |
| import { isApp } from '../utils/env';
 | |
| 
 | |
| // eslint-disable-next-line
 | |
| declare var uni: any;
 | |
| 
 | |
| interface Props {
 | |
|   payload: customerServicePayloadType;
 | |
| }
 | |
| 
 | |
| export default {
 | |
|   props: {
 | |
|     payload: {
 | |
|       type: Object as () => customerServicePayloadType,
 | |
|       default: () => ({}),
 | |
|     },
 | |
|   },
 | |
|   emits: ['sendMessage'],
 | |
|   setup(props: Props) {
 | |
|     const jumpProductCard = () => {
 | |
|       if (window) {
 | |
|         window.open(props.payload.content.url, '_blank');
 | |
|       } else {
 | |
|         uni && uni.navigateTo({ url: `/TUIKit/components/TUIChat/web-view?url=${props.payload.content.url}` });
 | |
|       }
 | |
|     };
 | |
|     return {
 | |
|       props,
 | |
|       isApp,
 | |
|       jumpProductCard,
 | |
|     };
 | |
|   },
 | |
| };
 | |
| </script>
 | |
| <style lang="scss" scoped>
 | |
| .message-product-card {
 | |
|   min-width: 224px;
 | |
|   max-width: 288px;
 | |
|   background: #fff;
 | |
|   border: 1px solid #ddd;
 | |
|   display: flex;
 | |
|   padding: 12px;
 | |
|   border-radius: 5px;
 | |
| 
 | |
|   .product-img {
 | |
|     width: 86px;
 | |
|     height: 86px;
 | |
|   }
 | |
| 
 | |
|   .product-card-information {
 | |
|     margin-left: 12px;
 | |
|     display: flex;
 | |
|     flex-direction: column;
 | |
|     justify-content: space-between;
 | |
| 
 | |
|     .product-card-title {
 | |
|       font-size: 12px;
 | |
|       max-width: 165px;
 | |
|       display: -webkit-box;
 | |
|       overflow: hidden;
 | |
|       text-overflow: ellipsis;
 | |
|       -webkit-line-clamp: 3;
 | |
|       -webkit-box-orient: vertical;
 | |
|       word-break: break-all;
 | |
|     }
 | |
| 
 | |
|     .product-card-description {
 | |
|       font-size: 16px;
 | |
|       max-width: 165px;
 | |
|       color: #ff6c2e;
 | |
|       overflow: hidden;
 | |
|       text-overflow: ellipsis;
 | |
|       white-space: nowrap;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </style>
 |