Files
admin-web/src/modules/self-operated/components/ChartDetailsDialog.vue
T

24 lines
1.2 KiB
Vue

<script setup lang="ts">
import { watch } from 'vue'
import { ElButton } from 'element-plus'
import AppDialog from '@/shared/components/AppDialog.vue'
import '@/styles/adminWorkbench.css'
const props = withDefaults(defineProps<{ title: string; width?: string; resetOn?: unknown; inline?: boolean; buttonLabel?: string }>(), { width: '1040px' })
const open = defineModel<boolean>({ default: false })
watch(() => props.resetOn, () => { open.value = false })
</script>
<template>
<div class="chart-disclosure" :class="{ 'chart-disclosure-inline': inline }">
<ElButton :link="inline" :type="inline ? 'primary' : undefined" :title="title" @click="open = true">{{ buttonLabel || title }}</ElButton>
<AppDialog v-model="open" class="admin-density-dialog admin-workbench is-dialog" :title="title" :width="width" :show-confirm="false" cancel-text="关闭" fullscreenable append-to-body destroy-on-close>
<div class="admin-density chart-evidence workbench-evidence"><slot /></div>
</AppDialog>
</div>
</template>
<style scoped>
.chart-disclosure { margin-top: var(--admin-space-3); }
.chart-disclosure-inline { margin-top: 0; display: inline-flex; }
.chart-evidence :deep(table) { width: 100%; }
.chart-evidence :deep(td) { overflow-wrap: anywhere; }
</style>