ProjectCard.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <template>
  2. <ElCard class="project-card" shadow="hover">
  3. <template #header>
  4. <span>{{name}}</span>
  5. </template>
  6. <div>描述:{{description}}</div>
  7. <el-tooltip class="item" effect="dark" :content="gitRemoteUrl + ' 点击复制'" placement="top">
  8. <div class="link" @click.stop="AddToClipboard(gitRemoteUrl)">链接:{{gitRemoteUrl}}</div>
  9. </el-tooltip>
  10. </ElCard>
  11. </template>
  12. <script lang="ts">
  13. import { defineComponent } from 'vue';
  14. export default defineComponent({
  15. props: {
  16. id: Number,
  17. name: String,
  18. description: String,
  19. gitRemoteUrl: String,
  20. groupId: Number,
  21. },
  22. methods: {
  23. AddToClipboard(text: string) {
  24. const textarea = document.createElement('textarea');
  25. textarea.innerHTML = text;
  26. textarea.value = text;
  27. document.body.appendChild(textarea);
  28. textarea.select();
  29. try {
  30. if (document.execCommand('Copy')) {
  31. alert('复制成功!');
  32. } else {
  33. alert('复制失败!');
  34. }
  35. } catch (err) {
  36. alert('复制失败!');
  37. }
  38. document.body.removeChild(textarea);
  39. },
  40. },
  41. });
  42. </script>
  43. <style lang="scss" scoped>
  44. .project-card {
  45. width: calc(25% - 24px);
  46. margin: 12px;
  47. }
  48. .link {
  49. white-space:nowrap;
  50. overflow:hidden;
  51. text-overflow:ellipsis;
  52. width: 80%;
  53. cursor: pointer;
  54. }
  55. </style>