mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-05-05 05:30:44 +08:00
46 lines
1.6 KiB
Vue
46 lines
1.6 KiB
Vue
|
|
<template>
|
||
|
|
<div class="flex items-center gap-1">
|
||
|
|
<button
|
||
|
|
@click="$emit('run', row)"
|
||
|
|
:disabled="running"
|
||
|
|
class="flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-gray-100 hover:text-primary-600 dark:hover:bg-dark-700 dark:hover:text-primary-400"
|
||
|
|
>
|
||
|
|
<Icon name="refresh" size="sm" :class="running ? 'animate-spin' : ''" />
|
||
|
|
<span class="text-xs">{{ t('admin.channelMonitor.runNow') }}</span>
|
||
|
|
</button>
|
||
|
|
<button
|
||
|
|
@click="$emit('edit', row)"
|
||
|
|
class="flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-gray-100 hover:text-primary-600 dark:hover:bg-dark-700 dark:hover:text-primary-400"
|
||
|
|
>
|
||
|
|
<Icon name="edit" size="sm" />
|
||
|
|
<span class="text-xs">{{ t('common.edit') }}</span>
|
||
|
|
</button>
|
||
|
|
<button
|
||
|
|
@click="$emit('delete', row)"
|
||
|
|
class="flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-900/20 dark:hover:text-red-400"
|
||
|
|
>
|
||
|
|
<Icon name="trash" size="sm" />
|
||
|
|
<span class="text-xs">{{ t('common.delete') }}</span>
|
||
|
|
</button>
|
||
|
|
</div>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script setup lang="ts">
|
||
|
|
import { useI18n } from 'vue-i18n'
|
||
|
|
import type { ChannelMonitor } from '@/api/admin/channelMonitor'
|
||
|
|
import Icon from '@/components/icons/Icon.vue'
|
||
|
|
|
||
|
|
defineProps<{
|
||
|
|
row: ChannelMonitor
|
||
|
|
running: boolean
|
||
|
|
}>()
|
||
|
|
|
||
|
|
defineEmits<{
|
||
|
|
(e: 'run', row: ChannelMonitor): void
|
||
|
|
(e: 'edit', row: ChannelMonitor): void
|
||
|
|
(e: 'delete', row: ChannelMonitor): void
|
||
|
|
}>()
|
||
|
|
|
||
|
|
const { t } = useI18n()
|
||
|
|
</script>
|