| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <script lang="ts" setup>
- import { propTypes } from '@/utils/propTypes'
- import { useDesign } from '@/hooks/web/useDesign'
- defineOptions({ name: 'ContentDetailWrap' })
- const { t } = useI18n()
- const { getPrefixCls } = useDesign()
- const prefixCls = getPrefixCls('content-detail-wrap')
- defineProps({
- title: propTypes.string.def(''),
- message: propTypes.string.def('')
- })
- const emit = defineEmits(['back'])
- const offset = ref(85)
- const contentDetailWrap = ref()
- onMounted(() => {
- offset.value = contentDetailWrap.value.getBoundingClientRect().top
- })
- </script>
- <template>
- <div ref="contentDetailWrap" :class="[`${prefixCls}-container`]">
- <Sticky :offset="offset">
- <div
- :class="[
- `${prefixCls}-header`,
- 'flex b-b-1 h-50px items-center text-center bg-white pr-10px'
- ]"
- >
- <div :class="[`${prefixCls}-header__back`, 'flex pl-10px pr-10px ']">
- <ElButton @click="emit('back')">
- <Icon class="mr-5px" icon="ep:arrow-left" />
- {{ t('common.back') }}
- </ElButton>
- </div>
- <div :class="[`${prefixCls}-header__title`, 'flex flex-1 justify-center']">
- <slot name="title">
- <label class="text-16px font-700">{{ title }}</label>
- </slot>
- </div>
- <div :class="[`${prefixCls}-header__right`, 'flex pl-10px pr-10px']">
- <slot name="right"></slot>
- </div>
- </div>
- </Sticky>
- <div style="padding: var(--app-content-padding)">
- <ElCard :class="[`${prefixCls}-body`, 'mb-20px']" shadow="never">
- <div>
- <slot></slot>
- </div>
- </ElCard>
- </div>
- </div>
- </template>
|