sign.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <ui-group-option class="sign-measure">
  3. <div class="info">
  4. <ui-icon :type="MeasureTypeMeta[measure.type].icon" class="type" />
  5. <div>
  6. <p>{{ measure.desc }} {{ MeasureTypeMeta[measure.type].unit }}</p>
  7. <span>{{ MeasureTypeMeta[measure.type].unitDesc }}</span>
  8. </div>
  9. </div>
  10. <div class="actions" @click.stop>
  11. <ui-icon type="del" ctrl @click.stop="$emit('delete')" v-if="edit" />
  12. <ui-icon type="pin" ctrl @click.stop="fly" />
  13. </div>
  14. </ui-group-option>
  15. </template>
  16. <script setup lang="ts">
  17. import { MeasureTypeMeta } from '@/store'
  18. import { getSceneMeasure } from '@/sdk'
  19. import type { Measure } from '@/store'
  20. const props = withDefaults(
  21. defineProps<{ measure: Measure, edit?: boolean }>(),
  22. { edit: true }
  23. )
  24. defineEmits<{ (e: 'delete'): void }>()
  25. const fly = () => {
  26. getSceneMeasure(props.measure)?.fly()
  27. }
  28. </script>
  29. <style lang="scss" scoped>
  30. .sign-measure {
  31. display: flex;
  32. justify-content: space-between;
  33. align-items: center;
  34. padding: 20px 0;
  35. margin: 0;
  36. border-bottom: 1px solid var(--colors-border-color);
  37. position: relative;
  38. .info {
  39. flex: 1;
  40. display: flex;
  41. align-items: center;
  42. .type {
  43. width: 48px;
  44. height: 48px;
  45. border-radius: 4px;
  46. overflow: hidden;
  47. display: flex;
  48. background: rgba(0,0,0,0.5);
  49. font-size: 18px;
  50. align-items: center;
  51. justify-content: center;
  52. }
  53. div {
  54. margin-left: 10px;
  55. p {
  56. color: #fff;
  57. font-size: 14px;
  58. }
  59. span {
  60. color: rgba(255,255,255,0.6);;
  61. font-size: 12px;
  62. }
  63. }
  64. }
  65. .actions {
  66. flex: none;
  67. > * {
  68. margin-left: 22px;
  69. }
  70. }
  71. }
  72. </style>