| <template> | 
|   <div class="sign-card-wrapper"> | 
|     <div class="sign-card-title">{{ '合同编号:0293848340' }}</div> | 
|     <div class="sign-card-content"> | 
|       <div class="sign-card-content-name">{{ 'xxxx劳务公司合同' }}</div> | 
|       <div class="sign-card-content-icon"> | 
|         <IconFont v-if="selected" name="check-checked" color="#3A71FF" size="16"></IconFont> | 
|         <IconFont v-else name="check-normal" size="16"></IconFont> | 
|       </div> | 
|     </div> | 
|   </div> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
| import { IconFont } from '@nutui/icons-vue-taro'; | 
| import { computed } from 'vue'; | 
|   | 
| defineOptions({ | 
|   name: 'SignCard', | 
| }); | 
|   | 
| type Props = { | 
|   checkedId?: string; | 
|   id: string; | 
| }; | 
|   | 
| const props = withDefaults(defineProps<Props>(), {}); | 
|   | 
| const emit = defineEmits<{ | 
|   (e: 'update:checkedId', value: string): void; | 
| }>(); | 
|   | 
| const innerCheckedId = computed({ | 
|   get() { | 
|     return props.checkedId; | 
|   }, | 
|   set(val) { | 
|     emit('update:checkedId', val); | 
|   }, | 
| }); | 
|   | 
| const selected = computed(() => innerCheckedId.value === props.id); | 
| </script> | 
|   | 
| <style lang="scss"> | 
| @import '@/styles/common.scss'; | 
|   | 
| .sign-card-wrapper { | 
|   padding: 24px 24px 20px 10px; | 
|   border-bottom: 2px solid #f6f6f6; | 
|   | 
|   .sign-card-title { | 
|     font-size: 20px; | 
|     color: boleGetCssVar('text-color', 'secondary'); | 
|     margin-bottom: 14px; | 
|   } | 
|   | 
|   .sign-card-content { | 
|     display: flex; | 
|     align-items: center; | 
|     justify-content: space-between; | 
|   | 
|     .sign-card-content-name { | 
|       font-size: 24px; | 
|       line-height: 32px; | 
|       color: boleGetCssVar('text-color', 'primary'); | 
|     } | 
|   | 
|     .sign-card-content-icon { | 
|       width: 32px; | 
|       height: 32px; | 
|     } | 
|   } | 
| } | 
| </style> |