82 lines
2.3 KiB
Vue
82 lines
2.3 KiB
Vue
<template>
|
|
<section style="height: 100%;">
|
|
<ai-list v-if="!showDetail">
|
|
<template slot="title">
|
|
<ai-title title="通知公告"></ai-title>
|
|
</template>
|
|
<template slot="tabs">
|
|
<el-tabs v-model="currIndex">
|
|
<el-tab-pane v-for="(tab,i) in tabs" :key="i" :label="tab.label" :name="String(i)">
|
|
<component :is="tab.comp" v-if="currIndex==i" :ref="currIndex" :instance="instance" :dict="dict"
|
|
@goPage="goPage"/>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</template>
|
|
</ai-list>
|
|
<component v-else :is="currentComp" :instance="instance" :dict="dict" :detail="detailRow" @gotoEdit="gotoAdd" ></component>
|
|
</section>
|
|
</template>
|
|
<script>
|
|
import add from './components/add';
|
|
import detail from './components/detail'
|
|
import manageDetail from './components/manageDetail'
|
|
import recentNotice from './components/recentNotice'
|
|
import noticeManage from './components/noticeManage'
|
|
|
|
export default {
|
|
name: 'AppNotification',
|
|
label: "通知公告",
|
|
components: {add, detail, recentNotice,noticeManage,manageDetail},
|
|
provide() {
|
|
return {
|
|
top: this
|
|
}
|
|
},
|
|
props: {
|
|
instance: Function,
|
|
dict: Object,
|
|
},
|
|
data() {
|
|
return {
|
|
currIndex: "0",
|
|
currentComp: "",
|
|
showDetail: false,
|
|
detailRow: {},
|
|
}
|
|
},
|
|
computed: {
|
|
tabs() {
|
|
return [
|
|
{label: "最新公告", name: "recentNotice", comp: recentNotice, detail: detail},
|
|
{label: "公告管理", name: "noticeManage", comp: noticeManage, detail: manageDetail},
|
|
]
|
|
},
|
|
},
|
|
|
|
methods: {
|
|
goPage(params) {
|
|
params.row && (this.detailRow = params.row)
|
|
this.currentComp = params.comp
|
|
|
|
if (params.comp == 'detail' || params.comp == 'add' || params.comp == "manageDetail") {
|
|
this.showDetail = true
|
|
}
|
|
},
|
|
goBack() {
|
|
this.showDetail = false;
|
|
},
|
|
gotoAdd(obj) {
|
|
this.showDetail = true
|
|
this.detailRow = obj
|
|
this.currentComp = 'add'
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
::v-deep .ai-list__content--right-wrapper {
|
|
background-color: transparent !important;
|
|
box-shadow: none !important;
|
|
}
|
|
</style>
|