springboot+vue 实现系统公告页面

本文档展示了如何使用SpringBoot后端和Vue前端实现一个系统公告管理页面。功能包括公告录入、发布、查询和详情展示。前端通过表单输入、日期选择器和分页组件实现数据交互,后端提供了更新发布和撤销的操作接口,以及已发布公告的查询接口,数据按时间排序并支持分页。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

                近期根据工作需求做了一个系统公告页面,这里我们通过springboot+vue实现这个系统公告页面,主要设计的功能有

  1. 公告录入

    这一块就是一个数据新增页面,前端获取的数据通过后端存储到数据库

  2. 公告发布

    公告录入时默认状态为未发布,即通过状态码实现公告的发布和实现 0:未发布,1:发布,2:撤销,页面上添加一个发布按钮,根据公告发布状态的值选择是否显示这个按钮,发布即执行数据更新操作,即将状态码更新为1

     

     

     

     

     

     

  3. 公告查询

    根据公告数据状态查询已发布数据,按时间排序,页面实现查询和分页

  4. 详情公告页

    这页面是通过通用详情页模板,传递参数实现公告详情展示

    前端vue代码


    <template>
      <a-card :bordered="false">
    
          <div class="page-recerive">
    
              <div  class="common_nav" >
                <h1  class="nav_title" >通知公告</h1>
    
              </div>
              <div class="content" >
                  <div class="title"><h2 >通知公告浏览</h2></div>
                <!--查询-->
                  <div data-v-47fc369c="" class="tool" style="margin-left: 25px;">
                    <div  class="search" style="position: relative;float: left;">
                      <input data-v-47fc369c="" type="text" v-bind:value="title" placeholder="请输入标题" @change="TitleInput" style="height: 36px;color: black;font-weight: bolder;">
    
                    </div>
    
                    <div  class="el-select " style="float: left;line-height: 34px;margin-left: 15px;  display: inline-block;position: relative;">
                      <a-date-picker  @change="DateInput" v-bind:value="time" style="color: black;font-weight: bolder;"/>
                    </div>
                    <div style="float: left;line-height: 34px;margin-left: 25px;    display: inline-block;position: relative;">
                      <a-button  style="background-color: #1a3c8e;border-color: #1a3c8e;" type="primary" @click="searchQuery" icon="search">查询</a-button>
                  
为了实现在表格标题前添一个“编辑”图标以批量编辑所有表具编号的功能,你可以对现有代码进行如下修改: ### 修改 HTML 部分 在 `columns` 数组中的 `'表具编号'` 列前添一个编辑图标,并绑定相应的点击事件。 ```html <template> <a-card :bordered="false"> <!-- ... 其他代码 --> <a-table ref="table" :size="tableRowHeight" :scroll="{ x: true }" bordered rowKey="id" :columns="columns" :dataSource="dataSource" :pagination="ipagination" :loading="loading" :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" class="j-table-force-nowrap" @change="handleTableChange" > <span slot="headerCell" slot-scope="text, column"> <template v-if="column.dataIndex === 'meterNum'"> <a-icon type="edit" @click="showEditAllModal" /> {{ text }} </template> <template v-else> {{ text }} </template> </span> <span slot="action" slot-scope="text, record"> <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> <a>移除</a> </a-popconfirm> </span> </a-table> <!-- 编辑模态框 --> <a-modal v-model="editAllVisible" title="批量编辑表具编号" okText="确认" cancelText="取消" @ok="handleEditAll" > <a-input placeholder="请输入新的表具编号" v-model="newMeterNum" /> </a-modal> <a-button @click="handleAdd3" type="primary"> 新表检定信息 </a-button> <StockMeterBaseDrawer ref="modalForm" @ok="modalFormOk"></StockMeterBaseDrawer> </a-card> </template> ``` ### 修改 JavaScript 部分 添一个新的变量 `editAllVisible` 来控制模态框的显示与隐藏,以及 `newMeterNum` 变量来存储用户输入的新表具编号。 ```javascript <script> import '@/assets/less/TableExpand.less' import { mixinDevice } from '@/utils/mixin' import draggable from 'vuedraggable' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import JSuperQuery from '@/components/jeecg/JSuperQuery.vue' import { initColumnsMixin } from '@/mixins/publicInitColumnsMixinNew' import BizBatchImport from '../modules/BizBatchImport.vue' import JSearchSelectTag from '../../../components/dict/JSearchSelectTag.vue' import StockMeterBaseDrawer from '../modules/StockMeterBaseDrawer1.vue' export default { name: 'BizMeterEdit', mixins: [JeecgListMixin, mixinDevice, initColumnsMixin], components: { StockMeterBaseDrawer, JSuperQuery, draggable, BizBatchImport, JSearchSelectTag }, data() { return { visible: false, editAllVisible: false, // 控制模态框显示 newMeterNum: '', // 用户输入的新表具编号 defColumns: [ // ... 原有的列定义 ], url: { list: '/stock/stockMeterBase/list', delete: '/stock/stockMeterBase/delete', deleteBatch: '/stock/stockMeterBase/deleteBatch', changeStatusBatch: '/stock/stockMeterBase/changeStatusBatch', exportXlsxUrl: '/stock/stockMeterBase/exportExcel', importXlsxUrl: '/stock/stockMeterBase/importExcel', exportXlsxTemplateUrl: '/stock/stockMeterBase/exportExcelTemplate' }, dictOptions: {}, superFieldList: [] } }, created() { this.getSuperFieldList() }, methods: { showDrawer() { this.visible = true; }, onClose() { this.visible = false; }, getSuperFieldList() { // ... 原有方法 }, showEditAllModal() { this.editAllVisible = true; }, handleEditAll() { // 处理批量编辑逻辑 if (!this.newMeterNum) { this.$message.warning('请输入新的表具编号'); return; } const selectedRows = this.dataSource.filter(row => this.selectedRowKeys.includes(row.id)); selectedRows.forEach(row => { row.meterNum = this.newMeterNum; }); // 更新数据源 this.$refs.table.clearSelected(); this.$refs.table.reloadData(); // 关闭模态框 this.editAllVisible = false; } } } </script> ``` ### 解释 1. **HTML 部分**: - 在 `a-table` 中增了一个 `slot` 来覆盖 `headerCell` 的内容,只有当 `dataIndex` 是 `'meterNum'` 时才显示编辑图标。 - 添了一个 Modal 模态框,用于输入新的表具编号。 2. **JavaScript 部分**: - 新增了 `editAllVisible` 和 `newMeterNum` 变量。 - 实现了 `showEditAllModal` 方法来显示模态框。 - 实现了 `handleEditAll` 方法来处理批量编辑逻辑,将选中的所有行的表具编号更新为用户输入的新值。 这样,用户只需点击列标题前的编辑图标,就可以批量编辑所有选中的表具编号。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值