济菏高速业务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

245 lines
6.3 KiB

<template>
<div class='sensitiveWord' v-loading="isLoading" element-loading-text="数据加载中" element-loading-background="rgba(0, 0, 0, 0.3)">
<div class="filter">
<div>
<ButtonGradient @click.native="handleAddEdit(true)">
<template #prefix>
<img src="@screen/images/insert.svg" />
</template>
新增
</ButtonGradient>
<ButtonGradient @click.native="handleExport">
<template #prefix>
<img src="@screen/images/export.svg" />
</template>
导出
</ButtonGradient>
<ButtonGradient @click.native="getData">
<template #prefix>
<img src="@screen/images/refresh.svg" />
</template>
刷新
</ButtonGradient>
</div>
<InputSearch style="width: 402px;" :formList="searchFormList" :formConfigOptions="{ labelWidth: '90px' }" :placeholder="searchText" @handleSearch="handleSearch" />
</div>
<div class="body">
<Empty v-if="!data.length && !isFirst" class="no-data" style="position: absolute">暂无数据</Empty>
<template v-else>
<div class="cardBox" v-for="(item, index) in data" :key="index" style="overflow: hidden; height: 145px;">
<Card :buttonIcon="null" :keyMap="keyMap" :cardData="item" class="card"
buttonText="详情">
<template #form-word="{ data }">
<div class="keyword">
{{ data.word }}
</div>
</template>
<template #button>
<Button @click.native="() => handleAddEdit(true, item)">
修改
</Button>
<Button style="background-color: #FF5F5F;" @click.native="handleDelete(item)">
删除
</Button>
</template>
</Card>
</div>
</template>
</div>
<!-- 分页 -->
<div class="footer" v-if="numTotal>0">
<Pagination :total="numTotal" :current-page.sync="currentPage" :page-size="pageSize" layout="prev, pager, next"
@size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
<AddNEditDialog v-model="isShowDialog" :data="dialogData" @onSuccess = "getData" :dataAll="data"/>
</div>
</template>
<script>
import Card from "@screen/components/Card1/index.vue"
import AddNEditDialog from "./components/AddNEditDialog.vue"
import InputSearch from '@screen/components/InputSearch/index.vue';
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import Button from '@screen/components/Buttons/Button.vue';
import Pagination from '@screen/components/Pagination.vue';
import { searchFormList } from "./data";
import request from "@/utils/request";
// import { setLoading } from "@screen/utils/index.js"
import { delay, exportFile, confirm } from "@screen/utils/common";
import { Message } from "element-ui";
// 辖段管理
export default {
name: 'sensitiveWord',
components: {
Pagination,
Card,
ButtonGradient,
InputSearch,
AddNEditDialog,
Button
},
data() {
return {
isLoading:false,
searchText:"关键词搜索",
searchFormList,
numTotal:0,
pageSize:42,
currentPage:1,
keyMap: [
{
key: "word",
label: "关键词"
},
{
key: "id",
label: "id"
},
{
key: "createTime",
label: "创建时间"
}
],
data: [],
dialogData: null,
isShowDialog: false,
isFirst: true
}
},
created() {
this.getData();
// this.getSearchOptions();
},
methods: {
getSearchData() {
let params = {
word: this.searchData?.word,
pageSize: this.pageSize,
pageNum: this.currentPage
};
// params = {
// pageSize: 1000000,
// pageNum: 1
// };
return params
},
async handleDelete(data) {
await confirm({ message: "是否要删除该敏感词?" });
request({
url: `/business/dcInfoBoardVocabulary/${data.id}`,
method: "DELETE",
data: {}
})
.then(result => {
if (result.code != 200) return Message.error("删除失败");
Message.success("删除成功")
this.getData();
})
.catch(() => {
Message.error("删除失败")
})
},
handleAddEdit(bool, data) {
this.isShowDialog = bool;
this.dialogData = data;
},
handleExport() {
exportFile({
url: "/business/dcInfoBoardVocabulary/export",
filename: "情报板敏感词",
data: this.getSearchData()
});
},
handleSearch(data) {
this.searchData = data;
this.getData();
},
async getData() {
// const closeLoading = setLoading();
this.isLoading = true;
await delay(100);
request({
url: `/business/dcInfoBoardVocabulary/list`,
method: "get",
params: this.getSearchData()
}).then(result => {
this.searchText = this.searchData?.word || "关键词搜索";
if (result.code != 200) return;
this.data = result.rows;
this.numTotal = result.total;
// this.pageTotal = Math.ceil(result.total/this.pageSize);
}).finally(() => {
this.isFirst = false;
// closeLoading();
this.isLoading = false;
})
},
handleSizeChange(size) {
this.pageSize = size;
this.getData();
},
handleCurrentChange(currentPage) {
this.currentPage = currentPage;
this.getData();
}
}
}
</script>
<style lang='scss' scoped>
.sensitiveWord {
padding: 20px;
display: flex; flex-direction: column;
.filter {
height: 60px;
display: flex;
justify-content: space-between;
align-items: center;
div {
display: flex;
gap: 6px;
}
}
.body {
height: 0; flex: 1; overflow: hidden;
display: flex; flex-wrap: wrap; align-content: flex-start;
.cardBox{
flex-basis: percentage(1/7); width: 0; padding-right: 10px; padding-bottom: 10px;
}
.keyword {
font-size: 14px;
font-weight: bold;
color: #00B3CC;
}
}
.footer {
margin-top: 15px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
}
}
</style>