fix: 抽离弹出框 hoo,解决bug
This commit is contained in:
parent
11763d14c7
commit
3ee85b7c7b
@ -4,7 +4,7 @@
|
|||||||
<div
|
<div
|
||||||
class="btn"
|
class="btn"
|
||||||
:class="[item.key, disabled && 'disabled']"
|
:class="[item.key, disabled && 'disabled']"
|
||||||
@click="handleClick(item.key)"
|
@click.stop="handleClick(item.key)"
|
||||||
>
|
>
|
||||||
<n-icon size="10" class="icon-base" :class="{ hover: !disabled }">
|
<n-icon size="10" class="icon-base" :class="{ hover: !disabled }">
|
||||||
<component :is="item.icon" />
|
<component :is="item.icon" />
|
||||||
|
@ -18,5 +18,7 @@ $dark: (
|
|||||||
filter-color: $--filter-color-login-dark,
|
filter-color: $--filter-color-login-dark,
|
||||||
// 物料市场背景
|
// 物料市场背景
|
||||||
items-top-bg:
|
items-top-bg:
|
||||||
linear-gradient(180deg, $--color-dark-bg-1, rgba(23, 23, 26, 0))
|
linear-gradient(180deg, $--color-dark-bg-1, rgba(23, 23, 26, 0)),
|
||||||
|
// hover 边框颜色
|
||||||
|
hover-border-color: #55606e,
|
||||||
);
|
);
|
||||||
|
@ -17,5 +17,7 @@ $light: (
|
|||||||
linear-gradient(90deg, transparent 14px, $--color-dark-bg-5 0)
|
linear-gradient(90deg, transparent 14px, $--color-dark-bg-5 0)
|
||||||
),
|
),
|
||||||
//毛玻璃
|
//毛玻璃
|
||||||
filter-color: $--filter-color-login-light
|
filter-color: $--filter-color-login-light,
|
||||||
|
// hover 边框颜色
|
||||||
|
hover-border-color: $--color-light-fill-1
|
||||||
);
|
);
|
||||||
|
@ -65,3 +65,10 @@
|
|||||||
border-color: themed($target);
|
border-color: themed($target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//获取边框颜色
|
||||||
|
@mixin hover-border-color($target) {
|
||||||
|
@include themeify {
|
||||||
|
border: 1px solid themed($target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -44,27 +44,51 @@
|
|||||||
// todo 使用 scss 循环写一套完整的
|
// todo 使用 scss 循环写一套完整的
|
||||||
// margin
|
// margin
|
||||||
.go-mt-0 {
|
.go-mt-0 {
|
||||||
margin-top: 0;
|
margin-top: 0!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.go-mb-0 {
|
.go-mb-0 {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0!important;
|
||||||
|
}
|
||||||
|
.go-ml-0 {
|
||||||
|
margin-left: 0!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.go-mx-0 {
|
.go-mr-0 {
|
||||||
|
margin-right: 0!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.go-my-0 {
|
||||||
@extend .go-mt-0;
|
@extend .go-mt-0;
|
||||||
@extend .go-mb-0;
|
@extend .go-mb-0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.go-mx-0 {
|
||||||
|
@extend .go-ml-0;
|
||||||
|
@extend .go-mr-0;
|
||||||
|
}
|
||||||
|
|
||||||
.go-pt-0 {
|
.go-pt-0 {
|
||||||
padding-top: 0;
|
padding-top: 0!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.go-pb-0 {
|
.go-pb-0 {
|
||||||
padding-bottom: 0;
|
padding-bottom: 0!important;
|
||||||
|
}
|
||||||
|
.go-pl-0 {
|
||||||
|
padding-left: 0!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.go-px-0 {
|
.go-pr-0 {
|
||||||
|
padding-right: 0!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.go-py-0 {
|
||||||
@extend .go-pt-0;
|
@extend .go-pt-0;
|
||||||
@extend .go-pb-0;
|
@extend .go-pb-0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.go-px-0 {
|
||||||
|
@extend .go-pl-0;
|
||||||
|
@extend .go-pr-0;
|
||||||
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { h } from 'vue'
|
import { h } from 'vue'
|
||||||
import { NIcon } from 'naive-ui'
|
import { NIcon } from 'naive-ui'
|
||||||
import screenfull from 'screenfull'
|
import screenfull from 'screenfull'
|
||||||
|
import debounce from 'lodash/debounce'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 生成一个用不重复的ID
|
* * 生成一个用不重复的ID
|
||||||
@ -28,6 +29,7 @@ export const renderIcon = (icon: any, set = {}) => {
|
|||||||
export const requireUrl = (path: string, name: string) => {
|
export const requireUrl = (path: string, name: string) => {
|
||||||
return new URL(`${path}/${name}`, import.meta.url).href
|
return new URL(`${path}/${name}`, import.meta.url).href
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 获取错误处理图片,默认 404 图
|
* * 获取错误处理图片,默认 404 图
|
||||||
* @param path
|
* @param path
|
||||||
@ -36,7 +38,10 @@ export const requireUrl = (path: string, name: string) => {
|
|||||||
*/
|
*/
|
||||||
export const requireFallbackImg = (path?: string, name?: string) => {
|
export const requireFallbackImg = (path?: string, name?: string) => {
|
||||||
const url = path && name
|
const url = path && name
|
||||||
return new URL(url?`${path}/${name}`: '../assets/images/exception/image-404.png', import.meta.url).href
|
return new URL(
|
||||||
|
url ? `${path}/${name}` : '../assets/images/exception/image-404.png',
|
||||||
|
import.meta.url
|
||||||
|
).href
|
||||||
}
|
}
|
||||||
|
|
||||||
export const screenfullFn = (isFullscreen?: boolean, isEnabled?: boolean) => {
|
export const screenfullFn = (isFullscreen?: boolean, isEnabled?: boolean) => {
|
||||||
@ -53,3 +58,36 @@ export const screenfullFn = (isFullscreen?: boolean, isEnabled?: boolean) => {
|
|||||||
// TODO lang
|
// TODO lang
|
||||||
window['$message'].warning('您的浏览器不支持全屏功能!')
|
window['$message'].warning('您的浏览器不支持全屏功能!')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* * 挂载监听
|
||||||
|
* @returns url
|
||||||
|
*/
|
||||||
|
export const goAddEventListener = <K extends keyof WindowEventMap>(
|
||||||
|
target: EventTarget,
|
||||||
|
type: K,
|
||||||
|
listener: EventListenerOrEventListenerObject,
|
||||||
|
options?: boolean | AddEventListenerOptions | undefined
|
||||||
|
) => {
|
||||||
|
if(!target) return
|
||||||
|
target.addEventListener(
|
||||||
|
type,
|
||||||
|
debounce(listener, 300, {
|
||||||
|
leading: true,
|
||||||
|
trailing: false
|
||||||
|
}),
|
||||||
|
options
|
||||||
|
)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* * 卸载监听
|
||||||
|
* @returns url
|
||||||
|
*/
|
||||||
|
export const goRemoveEventListener = <K extends keyof WindowEventMap>(
|
||||||
|
target: EventTarget,
|
||||||
|
type: K,
|
||||||
|
listener: EventListenerOrEventListenerObject
|
||||||
|
) => {
|
||||||
|
if(!target) return
|
||||||
|
target.removeEventListener(type, listener)
|
||||||
|
}
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<!-- 中间 -->
|
<!-- 中间 -->
|
||||||
<div class="list-content-img">
|
<div class="list-content-img" @click="resizeHandle">
|
||||||
<n-image
|
<n-image
|
||||||
object-fit="contain"
|
object-fit="contain"
|
||||||
height="200"
|
height="200"
|
||||||
@ -184,9 +184,16 @@ const resizeHandle = () => {
|
|||||||
$contentHeight: 200px;
|
$contentHeight: 200px;
|
||||||
@include go('items-list-card') {
|
@include go('items-list-card') {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
border-radius: $--border-radius-base;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0);
|
||||||
|
@extend .go-transition;
|
||||||
|
&:hover {
|
||||||
|
@include hover-border-color('hover-border-color');
|
||||||
|
}
|
||||||
.list-content {
|
.list-content {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
|
cursor: pointer;
|
||||||
border-radius: $--border-radius-base;
|
border-radius: $--border-radius-base;
|
||||||
@include background-point('background-point');
|
@include background-point('background-point');
|
||||||
@extend .go-point-bg;
|
@extend .go-point-bg;
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
import { ref, Ref } from 'vue'
|
||||||
|
import { goDialog } from '@/utils'
|
||||||
|
import { DialogEnum } from '@/enums/pluginEnum'
|
||||||
|
|
||||||
|
// 数据初始化
|
||||||
|
export const useDataListInit = () => {
|
||||||
|
const list = ref<object[]>([
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
title: '物料1',
|
||||||
|
release: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
title: '物料2',
|
||||||
|
release: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
title: '物料3',
|
||||||
|
release: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
title: '物料4',
|
||||||
|
release: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
title: '物料5',
|
||||||
|
release: false
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
const deleteHandle = (cardData: object, index: number) => {
|
||||||
|
goDialog({
|
||||||
|
type: DialogEnum.delete,
|
||||||
|
promise: true,
|
||||||
|
onPositiveCallback: () =>
|
||||||
|
new Promise(res => setTimeout(() => res(1), 1000)),
|
||||||
|
promiseResCallback: (e: any) => {
|
||||||
|
window.$message.success('删除成功')
|
||||||
|
list.value.splice(index, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
list,
|
||||||
|
deleteHandle
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
import { ref, Ref } from 'vue'
|
||||||
|
|
||||||
|
export const useModalDataInit = () => {
|
||||||
|
const modalShow = ref<boolean>(false)
|
||||||
|
const modalData = ref<object | unknown>(null)
|
||||||
|
|
||||||
|
// 关闭 modal
|
||||||
|
const closeModal = () => {
|
||||||
|
modalShow.value = false
|
||||||
|
modalData.value = null
|
||||||
|
console.log('close')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打开 modal
|
||||||
|
const resizeHandle = (cardData: Ref<object | unknown>) => {
|
||||||
|
console.log(cardData)
|
||||||
|
modalShow.value = true
|
||||||
|
modalData.value = cardData
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
modalData,
|
||||||
|
modalShow,
|
||||||
|
closeModal,
|
||||||
|
resizeHandle
|
||||||
|
}
|
||||||
|
}
|
@ -15,74 +15,22 @@
|
|||||||
</n-grid-item>
|
</n-grid-item>
|
||||||
</n-grid>
|
</n-grid>
|
||||||
</div>
|
</div>
|
||||||
<ModalCard :show="modalShow" :cardData="modalData" @close="closeModal" />
|
<ModalCard v-model:show="modalShow" :cardData="modalData" @close="closeModal" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import { Card } from '../Card/index'
|
import { Card } from '../Card/index'
|
||||||
import { ModalCard } from '../ModalCard/index'
|
import { ModalCard } from '../ModalCard/index'
|
||||||
import { goDialog } from '@/utils'
|
|
||||||
import { DialogEnum } from '@/enums/pluginEnum'
|
|
||||||
import { icon } from '@/plugins'
|
import { icon } from '@/plugins'
|
||||||
|
import { useModalDataInit } from './hooks/useModal.hook'
|
||||||
|
import { useDataListInit } from './hooks/useData.hook'
|
||||||
|
|
||||||
const { CopyIcon, EllipsisHorizontalCircleSharpIcon } = icon.ionicons5
|
const { CopyIcon, EllipsisHorizontalCircleSharpIcon } = icon.ionicons5
|
||||||
|
|
||||||
const list = ref([
|
const { modalData, modalShow, closeModal, resizeHandle } = useModalDataInit()
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
title: '物料1',
|
|
||||||
release: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
title: '物料2',
|
|
||||||
release: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
title: '物料3',
|
|
||||||
release: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
title: '物料4',
|
|
||||||
release: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 5,
|
|
||||||
title: '物料5',
|
|
||||||
release: false
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
const modalData = ref({})
|
const { list, deleteHandle } = useDataListInit()
|
||||||
const modalShow = ref(false)
|
|
||||||
|
|
||||||
// 删除
|
|
||||||
const deleteHandle = (cardData: object, index: number) => {
|
|
||||||
goDialog({
|
|
||||||
type: DialogEnum.delete,
|
|
||||||
promise: true,
|
|
||||||
onPositiveCallback: () =>
|
|
||||||
new Promise(res => setTimeout(() => res(1), 1000)),
|
|
||||||
promiseResCallback: (e: any) => {
|
|
||||||
window.$message.success('删除成功')
|
|
||||||
list.value.splice(index, 1)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 关闭 modal
|
|
||||||
const closeModal = () => {
|
|
||||||
modalShow.value = false
|
|
||||||
}
|
|
||||||
|
|
||||||
// 打开 modal
|
|
||||||
const resizeHandle = (cardData: object) => {
|
|
||||||
modalShow.value = true
|
|
||||||
modalData.value = cardData
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
@ -1,76 +1,77 @@
|
|||||||
<template>
|
<template>
|
||||||
<n-modal class="go-modal-card" v-model:show="showModal">
|
<!-- mask-closable 暂时是失效的,不知道为啥 -->
|
||||||
<slot name="default">
|
<n-modal
|
||||||
<n-card hoverable size="small">
|
class="go-modal-box"
|
||||||
<div class="list-content">
|
v-model:show="show"
|
||||||
<!-- 顶部按钮 -->
|
@on-after-leave="closeHandle"
|
||||||
<n-space class="list-content-top">
|
>
|
||||||
<AppleControlBtn
|
<n-card hoverable size="small">
|
||||||
:narrow="true"
|
<div class="list-content">
|
||||||
:hidden="['close']"
|
<!-- 标题 -->
|
||||||
@remove="closeHandle"
|
<n-space class="list-content-top go-px-0" justify="center">
|
||||||
/>
|
<n-space>
|
||||||
|
<n-text>
|
||||||
|
{{ cardData?.title || '' }}
|
||||||
|
</n-text>
|
||||||
</n-space>
|
</n-space>
|
||||||
<!-- 中间 -->
|
</n-space>
|
||||||
<div class="list-content-img">
|
<!-- 顶部按钮 -->
|
||||||
<img
|
<n-space class="list-content-top">
|
||||||
:src="
|
<AppleControlBtn
|
||||||
requireUrl(
|
:narrow="true"
|
||||||
'../assets/images/project',
|
:hidden="['close']"
|
||||||
'moke-20211219181327.png'
|
@remove="closeHandle"
|
||||||
)
|
/>
|
||||||
"
|
</n-space>
|
||||||
:alt="cardData?.title"
|
<!-- 中间 -->
|
||||||
/>
|
<div class="list-content-img">
|
||||||
</div>
|
<img
|
||||||
|
:src="
|
||||||
|
requireUrl('../assets/images/project', 'moke-20211219181327.png')
|
||||||
|
"
|
||||||
|
:alt="cardData?.title"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<template #action>
|
</div>
|
||||||
<n-space class="list-footer" justify="space-between">
|
<template #action>
|
||||||
<n-space>
|
<n-space class="list-footer" justify="space-between">
|
||||||
<n-text>
|
<n-text depth="3">
|
||||||
{{ cardData?.title || '' }}
|
最后编辑于:
|
||||||
</n-text>
|
<n-time :time="new Date()" format="yyyy-MM-dd hh:mm" />
|
||||||
<n-text depth="3">
|
</n-text>
|
||||||
最后编辑于:
|
<!-- 工具 -->
|
||||||
<n-time
|
<n-space>
|
||||||
:time="new Date()"
|
<n-text>
|
||||||
format="yyyy-MM-dd hh:mm"
|
<n-badge
|
||||||
/>
|
class="animation-twinkle"
|
||||||
</n-text>
|
dot
|
||||||
</n-space>
|
:color="cardData?.release ? '#34c749' : '#fcbc40'"
|
||||||
<!-- 工具 -->
|
/>
|
||||||
<n-space>
|
{{ cardData?.release ? '已发布' : '未发布' }}
|
||||||
<n-text>
|
</n-text>
|
||||||
<n-badge
|
|
||||||
class="animation-twinkle"
|
|
||||||
dot
|
|
||||||
:color="cardData?.release ? '#34c749' : '#fcbc40'"
|
|
||||||
/>
|
|
||||||
{{ cardData?.release ? '已发布' : '未发布' }}
|
|
||||||
</n-text>
|
|
||||||
|
|
||||||
<template v-for="item in fnBtnList" :key="item.key">
|
<template v-for="item in fnBtnList" :key="item.key">
|
||||||
<n-tooltip placement="bottom" trigger="hover">
|
<n-tooltip placement="bottom" trigger="hover">
|
||||||
<template #trigger>
|
<template #trigger>
|
||||||
<n-button size="small">
|
<n-button size="small">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<component :is="item.icon" />
|
<component :is="item.icon" />
|
||||||
</template>
|
</template>
|
||||||
</n-button>
|
</n-button>
|
||||||
</template>
|
</template>
|
||||||
<span> {{ item.label }}</span>
|
<span> {{ item.label }}</span>
|
||||||
</n-tooltip>
|
</n-tooltip>
|
||||||
</template>
|
</template>
|
||||||
</n-space>
|
|
||||||
<!-- end -->
|
|
||||||
</n-space>
|
</n-space>
|
||||||
</template>
|
<!-- end -->
|
||||||
</n-card>
|
</n-space>
|
||||||
</slot>
|
</template>
|
||||||
|
</n-card>
|
||||||
</n-modal>
|
</n-modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { watchEffect } from 'vue'
|
||||||
import { renderIcon, requireUrl, requireFallbackImg } from '@/utils'
|
import { renderIcon, requireUrl, requireFallbackImg } from '@/utils'
|
||||||
import { icon } from '@/plugins'
|
import { icon } from '@/plugins'
|
||||||
import { AppleControlBtn } from '@/components/AppleControlBtn'
|
import { AppleControlBtn } from '@/components/AppleControlBtn'
|
||||||
@ -79,13 +80,17 @@ const { HammerIcon } = icon.ionicons5
|
|||||||
const emit = defineEmits(['close'])
|
const emit = defineEmits(['close'])
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
modalShow: Boolean,
|
show: Boolean,
|
||||||
cardData: Object
|
cardData: Object
|
||||||
})
|
})
|
||||||
|
|
||||||
const handleSelect = (key: string) => {
|
// 解决点击模态层不会触发 @on-after-leave 的问题
|
||||||
console.log(key)
|
watchEffect(() => {
|
||||||
}
|
if (!props.show && props.cardData) {
|
||||||
|
closeHandle()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
const fnBtnList = [
|
const fnBtnList = [
|
||||||
{
|
{
|
||||||
label: '编辑',
|
label: '编辑',
|
||||||
@ -93,8 +98,6 @@ const fnBtnList = [
|
|||||||
icon: renderIcon(HammerIcon)
|
icon: renderIcon(HammerIcon)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
// 放大处理
|
|
||||||
const resizeHandle = () => {}
|
|
||||||
|
|
||||||
// 关闭对话框
|
// 关闭对话框
|
||||||
const closeHandle = () => {
|
const closeHandle = () => {
|
||||||
@ -105,9 +108,10 @@ const closeHandle = () => {
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
$padding: 30px;
|
$padding: 30px;
|
||||||
$contentHeight: calc(80vh);
|
$contentHeight: calc(80vh);
|
||||||
@include go('modal-card') {
|
$contentWidth: calc(82vw);
|
||||||
position: relative;
|
|
||||||
width: 82vw;
|
@include go('modal-box') {
|
||||||
|
width: $contentWidth;
|
||||||
.list-content {
|
.list-content {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
border-radius: $--border-radius-base;
|
border-radius: $--border-radius-base;
|
||||||
@ -116,14 +120,18 @@ $contentHeight: calc(80vh);
|
|||||||
@extend .go-point-bg;
|
@extend .go-point-bg;
|
||||||
&-top {
|
&-top {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 10px;
|
top: 7px;
|
||||||
left: 10px;
|
left: 0px;
|
||||||
|
padding-left: 10px;
|
||||||
height: 22px;
|
height: 22px;
|
||||||
|
width: $contentWidth;
|
||||||
}
|
}
|
||||||
&-img {
|
&-img {
|
||||||
@extend .go-flex-center;
|
@extend .go-flex-center;
|
||||||
img {
|
img {
|
||||||
height: $contentHeight;
|
max-height: $contentHeight;
|
||||||
|
min-height: 200px;
|
||||||
|
max-width: 100%;
|
||||||
@extend .go-border-radius;
|
@extend .go-border-radius;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,21 +3,22 @@
|
|||||||
<n-space vertical>
|
<n-space vertical>
|
||||||
<n-image
|
<n-image
|
||||||
object-fit="contain"
|
object-fit="contain"
|
||||||
height="400"
|
height="300"
|
||||||
preview-disabled
|
preview-disabled
|
||||||
:src="requireFallbackImg()"
|
:src="requireFallbackImg()"
|
||||||
/>
|
/>
|
||||||
<n-h1>没有东西呢</n-h1>
|
<n-h3>暂时还没有东西呢</n-h3>
|
||||||
</n-space>
|
</n-space>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { requireUrl, requireFallbackImg } from '@/utils'
|
import { requireFallbackImg } from '@/utils'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@include go('project-my-template') {
|
@include go('project-my-template') {
|
||||||
|
margin-top: 100px;
|
||||||
@extend .go-flex-center;
|
@extend .go-flex-center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user