| | |
| | | |
| | | defineProps<{ |
| | | workstation?: MesMdWorkstationApi.Workstation; |
| | | /** 是否已上工 */ |
| | | isClockIn?: boolean; |
| | | }>(); |
| | | |
| | | const emit = defineEmits<{ |
| | | change: []; |
| | | 'clock-in': []; |
| | | 'clock-out': []; |
| | | }>(); |
| | | </script> |
| | | |
| | |
| | | <span class="ws-panel__meta-label">地点</span> |
| | | <span class="ws-panel__meta-value">{{ workstation.address ?? '—' }}</span> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 上工/下工 --> |
| | | <div v-if="workstation" class="ws-panel__clock"> |
| | | <div v-if="isClockIn" class="ws-panel__clock-status"> |
| | | <IconifyIcon icon="lucide:check-circle" class="ws-panel__clock-icon" /> |
| | | <span>已上工</span> |
| | | </div> |
| | | <button |
| | | v-if="!isClockIn" |
| | | type="button" |
| | | class="ws-panel__clock-btn ws-panel__clock-btn--in" |
| | | @click="emit('clock-in')" |
| | | > |
| | | <IconifyIcon class="ws-panel__clock-btn-icon" icon="lucide:play" /> |
| | | 上工 |
| | | </button> |
| | | <button |
| | | v-else |
| | | type="button" |
| | | class="ws-panel__clock-btn ws-panel__clock-btn--out" |
| | | @click="emit('clock-out')" |
| | | > |
| | | <IconifyIcon class="ws-panel__clock-btn-icon" icon="lucide:pause" /> |
| | | 下工 |
| | | </button> |
| | | </div> |
| | | </section> |
| | | </template> |
| | |
| | | text-overflow: ellipsis; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | // --- 上工/下工 --- |
| | | .ws-panel__clock { |
| | | margin-top: 12px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | gap: 10px; |
| | | } |
| | | |
| | | .ws-panel__clock-status { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 6px; |
| | | font-size: 14px; |
| | | font-weight: 600; |
| | | color: #a5d6a7; |
| | | } |
| | | |
| | | .ws-panel__clock-icon { |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .ws-panel__clock-btn { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | gap: 6px; |
| | | padding: 10px 0; |
| | | border: none; |
| | | border-radius: 8px; |
| | | font-size: 15px; |
| | | font-weight: 700; |
| | | cursor: pointer; |
| | | transition: all 0.2s; |
| | | } |
| | | |
| | | .ws-panel__clock-btn-icon { |
| | | font-size: 16px; |
| | | } |
| | | |
| | | .ws-panel__clock-btn--in { |
| | | background: #4caf50; |
| | | color: #fff; |
| | | box-shadow: 0 2px 8px rgb(0 0 0 / 18%); |
| | | |
| | | &:hover { |
| | | background: #43a047; |
| | | } |
| | | } |
| | | |
| | | .ws-panel__clock-btn--out { |
| | | background: rgb(255 255 255 / 18%); |
| | | color: #ffcdd2; |
| | | border: 1px solid rgb(255 255 255 / 28%); |
| | | |
| | | &:hover { |
| | | background: rgb(255 255 255 / 28%); |
| | | } |
| | | } |
| | | </style> |