签到完成

This commit is contained in:
aixianling
2023-02-03 15:19:34 +08:00
parent 5b41cd85e0
commit 0bed825f70
7 changed files with 370 additions and 267 deletions

View File

@@ -1,6 +1,6 @@
<template>
<section class="ai-card">
<ai-bar v-if="!hideTitle" :title="title" v-bind="$attrs">
<section class="ai-card" :class="{panel}">
<ai-bar v-if="!hideHeader" :title="title" v-bind="$attrs">
<template #title>
<slot name="title"></slot>
</template>
@@ -9,7 +9,8 @@
</template>
</ai-bar>
<div class="ai-card__body">
<slot name="content"></slot>
<slot v-if="$scopedSlots.content" name="content"/>
<slot v-else/>
</div>
</section>
</template>
@@ -21,7 +22,11 @@ export default {
title: {
type: String
},
hideTitle: Boolean
hideTitle: Boolean,
panel: Boolean
},
computed: {
hideHeader: v => v.hideTitle || v.panel
}
}
</script>
@@ -37,5 +42,15 @@ export default {
.ai-card__body {
padding: 12px 40px 22px;
}
&.panel {
margin-bottom: 0;
.ai-card__body {
padding: 12px 16px;
}
}
}
</style>

View File

@@ -4,8 +4,8 @@
<slot v-if="$scopedSlots.btn" name="btn"/>
<el-button v-else type="text">{{ text }}</el-button>
</div>
<ai-dialog :visible.sync="dialog" :title="dialogTitle" :width="width" :customFooter="customFooter" v-on="$listeners"
@onConfirm="dialog=false,$emit('onConfirm')" v-bind="$attrs">
<ai-dialog :visible.sync="dialog" :title="dialogTitle" :width="width" :customFooter="needFooter" v-on="$listeners"
@onConfirm="handleConfirm" v-bind="$attrs">
<slot/>
<template #footer>
<el-button @click="dialog=false">关闭</el-button>
@@ -21,12 +21,26 @@ export default {
text: {default: "点击弹窗"},
dialogTitle: {default: "展示信息"},
customFooter: {default: true},
width: {default: "1200px"}
width: {default: "1200px"},
submit: {default: null}
},
computed: {
needFooter: v => v.customFooter && !v.submit
},
data() {
return {
dialog: false
}
},
methods: {
handleConfirm() {
if (!this.submit) {
this.dialog = false
this.$emit('onConfirm')
} else {
this.submit?.()?.then(() => this.dialog = false)
}
}
}
}
</script>

View File

@@ -6,9 +6,14 @@
<div class="ai-list__tabs" v-if="$slots.tabs">
<slot name="tabs"></slot>
</div>
<div class="ai-list__blank" v-else-if="$slots.blank">
<slot name="blank"/>
</div>
<el-row type="flex" class="ai-list__blank" v-else-if="$scopedSlots.blank" :class="{hasLeft:$scopedSlots.left}">
<div class="ai-list__content--left" v-if="$scopedSlots.left">
<slot name="left"/>
</div>
<div class="fill">
<slot name="blank"/>
</div>
</el-row>
<div class="ai-list__content" v-else :class="contentClass">
<div class="ai-list__content--wrapper">
<slot name="custom" v-if="!!$slots.custom"/>
@@ -68,7 +73,7 @@ export default {
<style lang="scss" scoped>
//全局tab css
:deep( .ai-list__tabs ){
:deep( .ai-list__tabs ) {
margin-top: 0 !important;
.el-tabs__item {
@@ -148,7 +153,7 @@ export default {
flex: 1;
overflow: hidden;
:deep( .el-tabs__item ){
:deep( .el-tabs__item ) {
min-width: 80px;
height: 32px;
line-height: 32px;
@@ -158,15 +163,15 @@ export default {
border-bottom: 1px solid transparent !important;
}
:deep(.el-tabs__header ){
:deep(.el-tabs__header ) {
margin: 0;
}
:deep(.el-tabs ){
:deep(.el-tabs ) {
height: 100%;
}
:deep(.el-tabs__content ){
:deep(.el-tabs__content ) {
height: calc(100% - 32px);
background: #f3f6f9;
@@ -222,7 +227,17 @@ export default {
flex: 1;
padding: 16px;
box-sizing: border-box;
overflow: auto;
height: calc(100% - 50px);
&.hasLeft {
padding: 16px 0;
}
& > .fill {
height: 100%;
overflow: auto;
}
}
}