<template> <div class="from-clues"> <!-- 表单部分 --> <div class="from-clues-header"> <el-form :model="ruleForm" @submit.native.prevent label-width="80px"> <el-row> <el-col :span="5"> <el-form-item label="通知标题"> <el-input v-model="ruleForm.noticeTitle" @clear="queryClick()" clearable placeholder="通知标题"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="通知状态"> <el-select v-model="ruleForm.noticeStatus" class="width100" filterable clearable placeholder="请选择通知状态"> <el-option v-for="item in noticeStatusList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="14" class="btnColRight"> <el-form-item> <el-button type="primary" @click="handleSearch">查询</el-button> <el-button type="primary" @click="openDialog()">新增</el-button> </el-form-item> </el-col> </el-row> </el-form> </div> <!-- 表格 --> <div class="from-clues-content"> <lb-table :page-size="pageData.size" border :current-page.sync="pageData.current" :total="tableData.total" @size-change="handleSizeChange" @p-current-change="handleCurrentChange" :column="tableData.columns" :data="tableData.data"> </lb-table> </div> <addDialog ref="addDialog" v-model="isDialog" :isButtonFlag="isButtonFlag" :title="dialogTitle" /> </div> </template> <script> import table from "@/utils/mixin/table"; import { datas, sendThis } from "./xttzdata"; import { getSysNoticeList, deleteSysNotice, publishNotice, unPublishNotice } from "@/api/system.js" import addDialog from "./components/addDialog.vue"; export default { name: "xttz", components: { addDialog }, mixins: [table], mounted () { sendThis(this); this.queryClick() }, data () { return { isDialog: false, isButtonFlag: true, dialogTitle: '', ruleForm: { noticeTitle: '', noticeStatus: '' }, noticeStatusList: [ { "label": '未发布', 'value': '1' }, { 'label': '已发布', 'value': '2' } ], tableData: { total: 0, columns: datas.columns(), data: [], }, isDiglog: false } }, methods: { // 列表渲染接口 queryClick () { this.$startLoading() getSysNoticeList({ ...this.ruleForm, ...this.pageData }, { 'target': '#xttzLoading' }).then(res => { if (res.code === 200) { this.$endLoading() let { total, records } = res.result this.tableData.total = total; this.tableData.data = records } }) }, //打开新增弹窗 openDialog (item) { if (item) { this.$popupDialog("系统通知详情", "system/xttz/components/addDialog", { ...item, "isButtonFlag": false }, "50%") } else { this.$popupDialog("新增系统通知", "system/xttz/components/addDialog", { "isButtonFlag": true }, "50%") } }, //删除 delNotice (item) { this.$confirm('是否确定删除', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { deleteSysNotice({ "bsmNotice": item.bsmNotice }).then(res => { if (res.code == 200) { this.$message.success('删除成功') this.queryClick(); } else { this.$message.error(res.message) } }) }).catch(() => { this.$message({ type: 'info', message: '已取消删除' }); }); }, //发布 toPublish (item) { this.$confirm('是否确定发布', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { publishNotice({ "bsmNotice": item.bsmNotice }).then(res => { if (res.code == 200) { this.$message.success('发布成功') this.postMessage() this.queryClick(); } else { this.$message.error(res.message) } }) }).catch(() => { this.$message({ type: 'info', message: '操作取消' }); }); }, postMessage () { window.parent.postMessage({ update: true }, '*') }, //取消发布 toUnPublish (item) { this.$confirm('是否确定取消发布', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { unPublishNotice({ "bsmNotice": item.bsmNotice }).then(res => { if (res.code == 200) { this.postMessage() this.$message.success('删除成功') this.queryClick(); } else { this.$message.error(res.message) } }) }).catch(() => { this.$message({ type: 'info', message: '操作取消' }); }); }, //编辑通知 editNotice (item) { this.$popupDialog("系统通知详情", "system/xttz/components/addDialog", { ...item, "isButtonFlag": true, "edit": true }, "50%") }, downloadFile (item) { const href = item.noticeFileUrl window.open(href, '_blank'); } }, }; </script> <style scoped lang="scss"> @import "~@/styles/public.scss"; </style>