<template>
|
<div class="container">
|
<div class="main-content">
|
<div class="filters">
|
<el-form :model="state.querys">
|
<el-form-item label="法律法规名称" style="width: 500px;margin-bottom: 0;margin-right: 20px">
|
<el-input v-model="state.querys.title" />
|
</el-form-item>
|
</el-form>
|
<el-button type="primary" :icon="Search" class="searchBtn" v-model="state.querys.title" @click="search">搜索</el-button>
|
<el-button type="primary" :icon="Refresh" class="resetBtn" @click="reset">重置</el-button>
|
</div>
|
<div class="list">
|
<div v-for="item in state.dataList" @click="openDetails('法律法规',item.id)">
|
<div>
|
<div><img src="src/assets/images/article.png"></div>
|
<div>{{item.title}}</div>
|
</div>
|
<span>
|
{{(item.updateTime?item.updateTime:item.createTime).substring(0,16)}}
|
</span>
|
</div>
|
</div>
|
<div class="pag-container" v-if="state.total&&state.total>0">
|
<el-pagination
|
:page-sizes="[10,15,20]"
|
layout="total, sizes, prev, pager, next, jumper"
|
:total="state.total"
|
:current-page="state.querys.pageNum"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
</div>
|
</div>
|
</div>
|
</template>
|
|
<script setup>
|
import {onMounted, ref, reactive, watch, onUnmounted, defineExpose, defineEmits} from "vue"
|
import { getLaws } from '@/api/home/homePage'
|
import useUserStore from '@/store/modules/user'
|
import { Search, Refresh } from '@element-plus/icons-vue'
|
import {ElMessage} from "element-plus";
|
const emit = defineEmits(['openDetails'])
|
const route = useRoute()
|
const router = useRouter()
|
|
const state = reactive({
|
dataList: [],
|
querys:{
|
title: '',
|
content: '',
|
pageNum: 1,
|
pageSize: 10
|
},
|
total: null
|
})
|
|
const redirect = ref(undefined);
|
|
onMounted(()=>{
|
getData()
|
})
|
|
onUnmounted(()=>{
|
|
})
|
|
watch(route, (newRoute) => {
|
redirect.value = newRoute.query && newRoute.query.redirect;
|
}, { immediate: true });
|
|
const getData = async ()=>{
|
const res = await getLaws(state.querys)
|
if(res.code == 200){
|
state.dataList = res.data.list
|
state.total = res.data.total
|
}else{
|
ElMessage.warning(res.message)
|
}
|
}
|
|
const handleSizeChange = (val) => {
|
state.querys.pageNum = 1;
|
state.querys.pageSize = val
|
getData()
|
}
|
const handleCurrentChange = (val) => {
|
state.querys.pageNum = val
|
getData()
|
}
|
const search = () => {
|
state.querys.pageNum = 1;
|
getData()
|
}
|
const reset = () => {
|
state.querys = {
|
title: '',
|
content: '',
|
pageNum: 1,
|
pageSize: 10
|
}
|
getData()
|
}
|
const openDetails = (type,id)=>{
|
emit('openDetails',type,id)
|
}
|
|
defineExpose({
|
getData
|
})
|
|
</script>
|
|
<style lang='scss' scoped>
|
.container {
|
width: 100%;
|
display: flex;
|
justify-content: center;
|
margin-top: 170px;
|
|
.main-content{
|
width: 1200px;
|
margin: 20px 0;
|
background: #fff;
|
border-radius: 4px;
|
box-shadow: 1px 1px 3px rgba(0,0,0,.04);
|
padding: 0 10px;
|
color: #333;
|
|
.filters{
|
margin-top: 20px;
|
display: flex;
|
align-items: center;
|
padding-left: 10px;
|
|
.searchBtn{
|
border: none;
|
border-radius: 4px !important;
|
background-image: linear-gradient(90deg,#4064df,#548dfb);
|
|
&:active{
|
border-radius: 99px !important;
|
background-image: linear-gradient(-90deg,#4064df,#548dfb);
|
}
|
}
|
.resetBtn{
|
border: none;
|
border-radius: 4px !important;
|
background-image: linear-gradient(90deg,#fc8e2e,#ffaa59);
|
|
&:active{
|
border-radius: 99px !important;
|
background-image: linear-gradient(-90deg,#fc8e2e,#ffaa59);
|
}
|
}
|
}
|
|
.list{
|
padding: 15px 0;
|
max-height: calc(100vh - 402px);
|
overflow-y: auto;
|
|
&>div{
|
display: flex;
|
padding: 10px;
|
align-items: center;
|
justify-content: space-between;
|
border-bottom: 1px dashed #ebeef5;
|
cursor: pointer;
|
border-radius: 4px;
|
font-size: 16px;
|
|
&>div{
|
display: flex;
|
align-items: center;
|
|
div:first-of-type{
|
width: 40px;
|
height: 40px;
|
margin-right: 10px;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
|
img{
|
width: 28px;
|
height: 28px;
|
}
|
}
|
div:last-of-type{
|
width: 900px;
|
white-space: nowrap;
|
overflow: hidden;
|
text-overflow: ellipsis;
|
font-family: "PingFang SC";
|
}
|
}
|
span{
|
color: #999;
|
}
|
&:hover{
|
background: #f5f5f5;
|
}
|
&:active{
|
background: #425f9f;
|
color: #fff;
|
}
|
}
|
}
|
|
.pag-container{
|
width: 100%;
|
height: 80px;
|
display: flex;
|
align-items: center;
|
justify-content: right;
|
}
|
}
|
}
|
</style>
|