Files
Yi.Admin/Yi.BBS.Vue3/src/views/Discuss.vue

172 lines
3.9 KiB
Vue
Raw Normal View History

2023-03-05 20:30:44 +08:00
<template>
<div style="width: 1200px;" class="body-div">
2023-03-05 20:30:44 +08:00
<div class="header">
<el-form :inline="true" >
2023-03-11 17:00:36 +08:00
<el-form-item label="标题:" >
<el-input v-model="query.title" placeholder="请输入标题"
2023-03-11 15:02:50 +08:00
></el-input>
2023-03-05 20:30:44 +08:00
</el-form-item>
2023-03-11 17:00:36 +08:00
<el-form-item label="标签:">
2023-03-05 20:30:44 +08:00
<el-input
2023-03-11 17:00:36 +08:00
placeholder="搜索当下分类下的标签"
2023-03-11 15:02:50 +08:00
2023-03-05 20:30:44 +08:00
/>
</el-form-item>
<div class="form-right">
2023-03-12 01:50:11 +08:00
2023-03-05 20:30:44 +08:00
<el-button>重置</el-button>
2023-03-11 17:00:36 +08:00
<el-button type="primary" @click="async()=>{ await loadDiscussList();}">查询</el-button>
2023-03-19 00:42:18 +08:00
<el-button @click="enterEditArticle" type="primary" v-hasPer="['bbs:discuss:add']">分享</el-button>
2023-03-05 20:30:44 +08:00
<el-dropdown>
<span class="el-dropdown-link">
展开
<el-icon class="el-icon--right">
<arrow-down />
</el-icon>
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item>Action 1</el-dropdown-item>
<el-dropdown-item>Action 2</el-dropdown-item>
<el-dropdown-item>Action 3</el-dropdown-item>
<el-dropdown-item disabled>Action 4</el-dropdown-item>
<el-dropdown-item divided>Action 5</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</el-form>
</div>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="推荐" name="first"> </el-tab-pane>
<el-tab-pane label="最新" name="second"> </el-tab-pane>
<el-tab-pane label="最热" name="third"> </el-tab-pane>
</el-tabs>
2023-03-11 15:02:50 +08:00
<div class="div-item" v-for="i in discussList" >
2023-03-11 17:00:36 +08:00
<DisscussCard :title="i.title" :introduction="i.introduction" :createTime="i.createTime" :id="i.id"/>
2023-03-05 20:30:44 +08:00
</div>
2023-03-11 17:00:36 +08:00
<div>
<el-pagination
v-model:current-page="query.pageNum"
v-model:page-size="query.pageSize"
:page-sizes="[10, 20, 30, 50]"
:background="true"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="async(val)=>{ await loadDiscussList();}"
@current-change="async(val)=>{ await loadDiscussList();}"
/>
</div>
<el-empty v-if="discussList.length==0" description="空空如也" />
2023-03-05 20:30:44 +08:00
</div>
</template>
2023-03-11 17:00:36 +08:00
2023-03-05 20:30:44 +08:00
<script setup>
import DisscussCard from '@/components/DisscussCard.vue'
2023-03-11 17:00:36 +08:00
import {getList} from '@/apis/discussApi.js'
import { onMounted, ref,reactive } from 'vue'
2023-03-12 01:50:11 +08:00
import { useRoute,useRouter } from 'vue-router'
2023-03-11 17:00:36 +08:00
//数据定义
2023-03-11 15:02:50 +08:00
const route=useRoute()
2023-03-12 01:50:11 +08:00
const router=useRouter()
2023-03-05 20:30:44 +08:00
const activeName = ref('first')
2023-03-11 15:02:50 +08:00
const discussList=ref([]);
2023-03-11 17:00:36 +08:00
const total=ref(100)
const query=reactive({
pageNum:1,
pageSize:10,
title:'',
2023-03-12 01:50:11 +08:00
plateId:route.params.plateId
2023-03-11 17:00:36 +08:00
})
2023-03-11 15:02:50 +08:00
2023-03-05 20:30:44 +08:00
const handleClick = (tab, event) => {
console.log(tab, event)
}
2023-03-11 15:02:50 +08:00
onMounted(async()=>{
2023-03-11 17:00:36 +08:00
await loadDiscussList();
2023-03-11 15:02:50 +08:00
})
2023-03-11 17:00:36 +08:00
//加载discuss
const loadDiscussList=async()=>{
const response= await getList(query);
discussList.value=response.items;
total.value=Number( response.total);
}
2023-03-12 01:50:11 +08:00
//进入添加主题页面
const enterEditArticle=()=>{
2023-03-12 19:49:08 +08:00
//跳转路由
var routerPer= { path: '/editArt', query: {
operType: 'create',
artType:'discuss',
plateId:route.params.plateId,
}}
router.push(routerPer);
2023-03-12 01:50:11 +08:00
}
2023-03-05 20:30:44 +08:00
</script>
<style scoped>
2023-03-11 17:00:36 +08:00
.el-pagination
{margin: 2rem 0rem 2rem 0rem;justify-content: right;}
2023-03-05 20:30:44 +08:00
.body-div{
min-height: 1000px;
}
.el-dropdown-link {
cursor: pointer;
color: var(--el-color-primary);
display: flex;
align-items: center;
}
.header{
background-color: #FFFFFF;
padding: 1rem;
margin: 1rem 0rem ;
2023-03-05 20:30:44 +08:00
}
.header .el-input
{
}
.el-tabs
{
background-color: #FFFFFF;
padding-left: 2rem;
}
.el-tabs >>> .el-tabs__header
{
margin-bottom: 0;
}
.div-item
{
margin-bottom: 1rem;
}
.el-form {
--el-form-label-font-size: var(--el-font-size-base);
display: flex;
align-items: center;
}
.el-form-item
{padding-top: 0.8rem;}
.form-right
{
align-items: center;
display: flex;
margin-left: auto;
}
.form-right .el-button
{
margin-right: 0.6rem;
}
.header .el-input
{
width:20rem;
}
</style>